blob: 1d20b0d62eb21774f6d3d5c43ad7c049e1473e5f [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Kiet Lamaa8e15a2014-02-11 23:30:06 -08002* Copyright (c) 2012-2014 Qualcomm Atheros, Inc.
3* All Rights Reserved.
4* Qualcomm Atheros Confidential and Proprietary.
5*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006
7/*===========================================================================
8
9 W L A N _ Q C T _ W D I. C
10
11 OVERVIEW:
12
Jeff Johnsone7245742012-09-05 17:12:55 -070013 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070014 Layer Interface.
15
Jeff Johnsone7245742012-09-05 17:12:55 -070016 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070017 MAC implementation that wishes to use the WLAN Device.
18
19 DEPENDENCIES:
20
21 Are listed for each API below.
22
23
Kiet Lamaa8e15a2014-02-11 23:30:06 -080024 Copyright (c) 2008 QUALCOMM Incorporated.
25 All Rights Reserved.
26 Qualcomm Confidential and Proprietary
Jeff Johnson295189b2012-06-20 16:38:30 -070027===========================================================================*/
28
29/*===========================================================================
30
31 EDIT HISTORY FOR FILE
32
33
34 This section contains comments describing changes made to the module.
35 Notice that changes are listed in reverse chronological order.
36
37
38 $Header$$DateTime$$Author$
39
40
41 when who what, where, why
42---------- --- --------------------------------------------------------
4310/05/11 hap Adding support for Keep Alive
442010-08-09 lti Created module
45
46===========================================================================*/
47
48/*----------------------------------------------------------------------------
49 * Include Files
50 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070051#include "wlan_qct_wdi.h"
52#include "wlan_qct_wdi_i.h"
53#include "wlan_qct_wdi_sta.h"
54#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070055
Jeff Johnsone7245742012-09-05 17:12:55 -070056#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070057
58#include "wlan_qct_pal_api.h"
59#include "wlan_qct_pal_type.h"
60#include "wlan_qct_pal_status.h"
61#include "wlan_qct_pal_sync.h"
62#include "wlan_qct_pal_msg.h"
63#include "wlan_qct_pal_trace.h"
64#include "wlan_qct_pal_packet.h"
65
Jeff Johnsone7245742012-09-05 17:12:55 -070066#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070067
68#include "wlan_hal_msg.h"
69
Jeff Johnson295189b2012-06-20 16:38:30 -070070#include "pttMsgApi.h"
Srikant Kuppa64eae792013-08-29 15:27:56 -070071#include "vos_trace.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070072
73/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070074 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -070075 ===========================================================================*/
76#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
77
Jeff Johnsone7245742012-09-05 17:12:55 -070078#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
79#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
80
Yue Mad8cac142013-03-28 11:33:46 -070081#define FEATURE_NOT_SUPPORTED 127
Jeff Johnson295189b2012-06-20 16:38:30 -070082
83#ifdef FEATURE_WLAN_SCAN_PNO
84#define WDI_PNO_VERSION_MASK 0x8000
85#endif
86
87/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -070088static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -070089/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -070090static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -070091/* array of features supported. Need to add a new feature
92 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
93 */
94static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khanna698ba2a2012-12-04 15:08:18 -080095 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathish9f22e662012-12-10 14:21:35 -080096#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -070097 ,SAP32STA //5
Yathish9f22e662012-12-10 14:21:35 -080098#else
99 ,FEATURE_NOT_SUPPORTED
100#endif
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800101#ifdef FEATURE_WLAN_TDLS
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700102 ,TDLS //6
Yathish9f22e662012-12-10 14:21:35 -0800103#else
104 ,FEATURE_NOT_SUPPORTED
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800105#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700106 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathish9f22e662012-12-10 14:21:35 -0800107#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700108 ,WLANACTIVE_OFFLOAD //8
Yathish9f22e662012-12-10 14:21:35 -0800109#else
110 ,FEATURE_NOT_SUPPORTED
111#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700112 ,FEATURE_NOT_SUPPORTED //9
113 ,FEATURE_NOT_SUPPORTED //10
114 ,FEATURE_NOT_SUPPORTED //11
115 ,FEATURE_NOT_SUPPORTED //12
116 ,FEATURE_NOT_SUPPORTED //13
117 ,FEATURE_NOT_SUPPORTED //14
118 ,FEATURE_NOT_SUPPORTED //15
119 ,FEATURE_NOT_SUPPORTED //16
120 ,FEATURE_NOT_SUPPORTED //17
121 ,FEATURE_NOT_SUPPORTED //18
122 ,FEATURE_NOT_SUPPORTED //19
123 ,FEATURE_NOT_SUPPORTED //20
124 ,FEATURE_NOT_SUPPORTED //21
Yue Ma55855df2013-08-26 10:59:03 -0700125 ,WOW //22
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700126#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Yue Ma55855df2013-08-26 10:59:03 -0700127 ,WLAN_ROAM_SCAN_OFFLOAD //23
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700128#else
129 ,FEATURE_NOT_SUPPORTED
130#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700131 ,FEATURE_NOT_SUPPORTED //24
132 ,FEATURE_NOT_SUPPORTED //25
133 ,IBSS_HEARTBEAT_OFFLOAD //26
Yue Ma55855df2013-08-26 10:59:03 -0700134 ,FEATURE_NOT_SUPPORTED //27
135 ,WLAN_PERIODIC_TX_PTRN //28
Madan Mohan Koyyalamudice419872013-09-13 19:36:52 +0530136#ifdef FEATURE_WLAN_TDLS
137 ,ADVANCE_TDLS //29
138#else
139 ,FEATURE_NOT_SUPPORTED //29
140#endif
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530141 ,FEATURE_NOT_SUPPORTED //30
142 ,FW_IN_TX_PATH //31
Sandeep Puligilla60342762014-01-30 21:05:37 +0530143 ,EXTENDED_NSOFFLOAD_SLOT //32
144 ,CH_SWITCH_V1 //33
145 ,HT40_OBSS_SCAN //34
146 ,UPDATE_CHANNEL_LIST //35
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530147};
Jeff Johnson295189b2012-06-20 16:38:30 -0700148
149/*--------------------------------------------------------------------------
150 WLAN DAL State Machine
151 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700152WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700153{
154 /*WDI_INIT_ST*/
155 {{
156 WDI_MainStart, /*WDI_START_EVENT*/
157 NULL, /*WDI_STOP_EVENT*/
158 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
159 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
160 WDI_MainClose, /*WDI_CLOSE_EVENT*/
161 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
162 }},
163
164 /*WDI_STARTED_ST*/
165 {{
166 WDI_MainStartStarted, /*WDI_START_EVENT*/
167 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
168 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
169 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
170 NULL, /*WDI_CLOSE_EVENT*/
171 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
172 }},
173
174 /*WDI_STOPPED_ST*/
175 {{
176 WDI_MainStart, /*WDI_START_EVENT*/
177 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
178 NULL, /*WDI_REQUEST_EVENT*/
179 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
180 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700181 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700182 }},
183
184 /*WDI_BUSY_ST*/
185 {{
186 WDI_MainStartBusy, /*WDI_START_EVENT*/
187 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
188 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
189 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
190 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
191 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
192 }}
193};
194
Jeff Johnsone7245742012-09-05 17:12:55 -0700195/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700196 DAL Request Processing Array - the functions in this table will only be
197 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700198 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700199 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700200WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700201{
202 /*INIT*/
203 WDI_ProcessStartReq, /* WDI_START_REQ */
204 WDI_ProcessStopReq, /* WDI_STOP_REQ */
205 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
206
207 /*SCAN*/
208 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
209 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
210 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
211 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
212
213 /*ASSOCIATION*/
214 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
215 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
216 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
217 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
218 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
219
220 /* Security */
221 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
222 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
223 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
224 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
225
226 /* QoS and BA APIs */
227 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
228 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
229 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
230 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
231 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
232
233 /* Miscellaneous Control APIs */
234 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
235 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
236 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
237 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
238 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
239
240 /*BA APIs*/
241 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
242 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
243
244 /*Beacon processing APIs*/
245 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
246 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
247
248 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
249 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
250 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
251 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700252 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700253 /* PowerSave APIs */
254 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
255 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
256 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
257 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
258 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
259 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
260 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
261 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
262 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
263 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
264 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
265 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
266 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
267 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
268 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
269 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
270 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
271 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
272 /*NV Download APIs*/
273 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
274 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
275 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
276#ifdef WLAN_FEATURE_VOWIFI_11R
277 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
278#else
279 NULL,
280#endif /* WLAN_FEATURE_VOWIFI_11R */
281 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
282 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700283 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700284
285#ifdef FEATURE_OEM_DATA_SUPPORT
286 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
287#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700288 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700289#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700290 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700291
292 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700293
294#ifdef FEATURE_WLAN_SCAN_PNO
295 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
296 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
297 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
298#else
299 NULL,
300 NULL,
301 NULL,
302#endif /* FEATURE_WLAN_SCAN_PNO */
303
304 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700305
Jeff Johnson295189b2012-06-20 16:38:30 -0700306#ifdef WLAN_FEATURE_PACKET_FILTERING
307 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700308 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700309 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700310 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700311 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700312 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700313 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700314 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700315#else
316 NULL,
317 NULL,
318 NULL,
319 NULL,
320#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700321 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700322 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
323 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
324
325 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
326#ifdef FEATURE_WLAN_CCX
327 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
328#else
329 NULL,
330#endif
331
332#ifdef WLAN_FEATURE_GTK_OFFLOAD
333 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
334 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
335#else
336 NULL,
337 NULL,
338#endif // WLAN_FEATURE_GTK_OFFLOAD
339
340 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
341 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700342#ifdef WLAN_FEATURE_11AC
343 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800344#else
345 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700346#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800347#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
348 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
349#else
schang86c22c42013-03-13 18:41:24 -0700350 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800351#endif
schang86c22c42013-03-13 18:41:24 -0700352 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700353#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700354 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700355#else
356 NULL,
357#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530358#ifdef FEATURE_WLAN_TDLS
359 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
360#else
361 NULL,
362#endif
Leo Chang9056f462013-08-01 19:21:11 -0700363#ifdef FEATURE_WLAN_LPHB
364 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
365#else
366 NULL,
367#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530368
369#ifdef FEATURE_WLAN_BATCH_SCAN
370 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
371#else
372 NULL,
373#endif /* FEATURE_WLAN_BATCH_SCAN */
374
Arif Hussaina5ebce02013-08-09 15:09:58 -0700375 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
schang86c22c42013-03-13 18:41:24 -0700376 /*-------------------------------------------------------------------------
377 Indications
378 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700379 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800380 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530381 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
382 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700383#ifdef WLAN_FEATURE_11W
384 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
385#else
386 NULL,
387#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700388 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
389 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530390#ifdef FEATURE_WLAN_BATCH_SCAN
391 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
392 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
393#else
394 NULL,
395 NULL,
396#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700397 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530398 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
399 WDI_ProcessHT40OBSSStopScanInd /*WDI_STOP_HT40_OBSS_SCAN_IND */
400
Jeff Johnson295189b2012-06-20 16:38:30 -0700401};
402
403
Jeff Johnsone7245742012-09-05 17:12:55 -0700404/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700405 DAL Request Processing Array - the functions in this table will only be
406 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700407 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700408 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700409WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700410{
411 /*INIT*/
412 WDI_ProcessStartRsp, /* WDI_START_RESP */
413 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
414 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
415
416 /*SCAN*/
417 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
418 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
419 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
420 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
421
422 /* ASSOCIATION*/
423 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
424 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
425 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
426 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
427 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
428
429 /* Security */
430 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
431 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
432 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
433 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
434
435 /* QoS and BA APIs */
436 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
437 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
438 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
439 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
440 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
441
442 /* Miscellaneous Control APIs */
443 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
444 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
445 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
446 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
447 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
448
449 /* BA APIs*/
450 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
451 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700452
Jeff Johnson295189b2012-06-20 16:38:30 -0700453 /* IBSS APIs*/
454 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
455 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
456
457 /*Soft AP APIs*/
458 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
459 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
460 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
461 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
462
463 /* PowerSave APIs */
464 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
465 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
466 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
467 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
468 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
469 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
470 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
471 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
472 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
473 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
474 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
475 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
476 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
477 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
478 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
479 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
480 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
481 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700482
Jeff Johnson295189b2012-06-20 16:38:30 -0700483
484 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
485
486 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
487 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
488#ifdef WLAN_FEATURE_VOWIFI_11R
489 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
490#else
491 NULL,
492#endif /* WLAN_FEATURE_VOWIFI_11R */
493 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
494 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700495#ifdef FEATURE_OEM_DATA_SUPPORT
496 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
497#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700498 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700499#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700500 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
501
Jeff Johnson295189b2012-06-20 16:38:30 -0700502 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700503
Jeff Johnson295189b2012-06-20 16:38:30 -0700504 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700505
Jeff Johnsone7245742012-09-05 17:12:55 -0700506 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
507
Jeff Johnson295189b2012-06-20 16:38:30 -0700508#ifdef FEATURE_WLAN_SCAN_PNO
509 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
510 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
511 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
512#else
513 NULL,
514 NULL,
515 NULL,
516#endif // FEATURE_WLAN_SCAN_PNO
517
518 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
519
520 /*---------------------------------------------------------------------
521 Indications
522 ---------------------------------------------------------------------*/
523#ifdef WLAN_FEATURE_PACKET_FILTERING
524 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700525 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700526 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700527 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700528 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700529 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700530 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700531 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700532#else
533 NULL,
534 NULL,
535 NULL,
536 NULL,
537#endif // WLAN_FEATURE_PACKET_FILTERING
538
539 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
540 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
541
542 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
543#ifdef FEATURE_WLAN_CCX
544 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
545#else
546 NULL,
547#endif
548
549#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700550 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
551 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700552#else
553 NULL,
554 NULL,
555#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700556 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
557 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700558#ifdef WLAN_FEATURE_11AC
559 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700560#else
561 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700562#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800563#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
564 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
565#else
566 NULL,
567#endif
schang86c22c42013-03-13 18:41:24 -0700568 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700569#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700570 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700571#else
572 NULL,
573#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530574#ifdef FEATURE_WLAN_TDLS
575 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
576#else
577 NULL,
578#endif
Leo Chang9056f462013-08-01 19:21:11 -0700579#ifdef FEATURE_WLAN_LPHB
580 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
581#else
582 NULL,
583#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530584
585#ifdef FEATURE_WLAN_BATCH_SCAN
586 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
587#else
588 NULL,
589#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800590 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530591
Jeff Johnson295189b2012-06-20 16:38:30 -0700592 /*---------------------------------------------------------------------
593 Indications
594 ---------------------------------------------------------------------*/
595 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
596 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
597 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
598 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
599 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
600 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
601
602 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
603
604 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
605
Jeff Johnson295189b2012-06-20 16:38:30 -0700606 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700607
608#ifdef FEATURE_WLAN_SCAN_PNO
609 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
610#else
611 NULL,
612#endif // FEATURE_WLAN_SCAN_PNO
613
614#ifdef WLAN_WAKEUP_EVENTS
615 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
616#else // WLAN_WAKEUP_EVENTS
617 NULL,
618#endif // WLAN_WAKEUP_EVENTS
619
620 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800621
Viral Modid86bde22012-12-10 13:09:21 -0800622 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530623#ifdef FEATURE_WLAN_TDLS
624 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
625#else
626 NULL,
627#endif
Leo Chang9056f462013-08-01 19:21:11 -0700628
629#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700630 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700631#else
632 NULL,
633#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700634
635 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700636
637 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530638
639#ifdef FEATURE_WLAN_BATCH_SCAN
640 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
641#else
642 NULL,
643#endif
644
Leo Chang0b0e45a2013-12-15 15:18:55 -0800645#ifdef FEATURE_WLAN_CH_AVOID
646 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
647#else
648 NULL,
649#endif /* FEATURE_WLAN_CH_AVOID */
650
Jeff Johnson295189b2012-06-20 16:38:30 -0700651};
652
653
Jeff Johnsone7245742012-09-05 17:12:55 -0700654/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700655 WLAN DAL Global Control Block
656 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700657WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700658static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
659
Jeff Johnsone7245742012-09-05 17:12:55 -0700660const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700661
662/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700663WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700664void* WDI_GET_PAL_CTX( void )
665{
Jeff Johnsone7245742012-09-05 17:12:55 -0700666 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700667}/*WDI_GET_PAL_CTX*/
668
Jeff Johnsone7245742012-09-05 17:12:55 -0700669/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700670 Helper inline converters
671 ============================================================================*/
672/*Convert WDI driver type into HAL driver type*/
673WPT_STATIC WPT_INLINE WDI_Status
674WDI_HAL_2_WDI_STATUS
675(
676 eHalStatus halStatus
677);
678
679/*Convert WDI request type into HAL request type*/
680WPT_STATIC WPT_INLINE tHalHostMsgType
681WDI_2_HAL_REQ_TYPE
682(
683 WDI_RequestEnumType wdiReqType
684);
685
686/*Convert WDI response type into HAL response type*/
687WPT_STATIC WPT_INLINE WDI_ResponseEnumType
688HAL_2_WDI_RSP_TYPE
689(
690 tHalHostMsgType halMsg
691);
692
693/*Convert WDI driver type into HAL driver type*/
694WPT_STATIC WPT_INLINE tDriverType
695WDI_2_HAL_DRV_TYPE
696(
697 WDI_DriverType wdiDriverType
698);
699
700/*Convert WDI stop reason into HAL stop reason*/
701WPT_STATIC WPT_INLINE tHalStopType
702WDI_2_HAL_STOP_REASON
703(
704 WDI_StopType wdiStopType
705);
706
707/*Convert WDI scan mode type into HAL scan mode type*/
708WPT_STATIC WPT_INLINE eHalSysMode
709WDI_2_HAL_SCAN_MODE
710(
711 WDI_ScanMode wdiScanMode
712);
713
714/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700715WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700716WDI_2_HAL_SEC_CH_OFFSET
717(
718 WDI_HTSecondaryChannelOffset wdiSecChOffset
719);
720
721/*Convert WDI BSS type into HAL BSS type*/
722WPT_STATIC WPT_INLINE tSirBssType
723WDI_2_HAL_BSS_TYPE
724(
725 WDI_BssType wdiBSSType
726);
727
728/*Convert WDI NW type into HAL NW type*/
729WPT_STATIC WPT_INLINE tSirNwType
730WDI_2_HAL_NW_TYPE
731(
732 WDI_NwType wdiNWType
733);
734
735/*Convert WDI chanel bonding type into HAL cb type*/
736WPT_STATIC WPT_INLINE ePhyChanBondState
737WDI_2_HAL_CB_STATE
738(
739 WDI_PhyChanBondState wdiCbState
740);
741
742/*Convert WDI chanel bonding type into HAL cb type*/
743WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
744WDI_2_HAL_HT_OPER_MODE
745(
746 WDI_HTOperatingMode wdiHTOperMode
747);
748
749/*Convert WDI mimo PS type into HAL mimo PS type*/
750WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
751WDI_2_HAL_MIMO_PS
752(
753 WDI_HTMIMOPowerSaveState wdiHTOperMode
754);
755
756/*Convert WDI ENC type into HAL ENC type*/
757WPT_STATIC WPT_INLINE tAniEdType
758WDI_2_HAL_ENC_TYPE
759(
760 WDI_EncryptType wdiEncType
761);
762
763/*Convert WDI WEP type into HAL WEP type*/
764WPT_STATIC WPT_INLINE tAniWepType
765WDI_2_HAL_WEP_TYPE
766(
767 WDI_WepType wdiWEPType
768);
769
770/*Convert WDI Link State into HAL Link State*/
771WPT_STATIC WPT_INLINE tSirLinkState
772WDI_2_HAL_LINK_STATE
773(
774 WDI_LinkStateType wdiLinkState
775);
776
Jeff Johnsone7245742012-09-05 17:12:55 -0700777/*Translate a STA Context from WDI into HAL*/
778WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700779void
780WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700781(
Jeff Johnson295189b2012-06-20 16:38:30 -0700782 tConfigStaParams* phalConfigSta,
783 WDI_ConfigStaReqInfoType* pwdiConfigSta
784);
Jeff Johnsone7245742012-09-05 17:12:55 -0700785
786/*Translate a Rate set info from WDI into HAL*/
787WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700788WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700789(
Jeff Johnson295189b2012-06-20 16:38:30 -0700790 tSirMacRateSet* pHalRateSet,
791 WDI_RateSet* pwdiRateSet
792);
793
794/*Translate an EDCA Parameter Record from WDI into HAL*/
795WPT_STATIC WPT_INLINE void
796WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700797(
Jeff Johnson295189b2012-06-20 16:38:30 -0700798 tSirMacEdcaParamRecord* phalEdcaParam,
799 WDI_EdcaParamRecord* pWDIEdcaParam
800);
801
802/*Copy a management frame header from WDI fmt into HAL fmt*/
803WPT_STATIC WPT_INLINE void
804WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
805(
806 tSirMacMgmtHdr* pmacMgmtHdr,
807 WDI_MacMgmtHdr* pwdiMacMgmtHdr
808);
809
810/*Copy config bss parameters from WDI fmt into HAL fmt*/
811WPT_STATIC WPT_INLINE void
812WDI_CopyWDIConfigBSSToHALConfigBSS
813(
814 tConfigBssParams* phalConfigBSS,
815 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
816);
817
Jeff Johnsone7245742012-09-05 17:12:55 -0700818/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700819 pointed to by user data */
820WPT_STATIC WPT_INLINE void
821WDI_ExtractRequestCBFromEvent
822(
823 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700824 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700825 void** ppUserData
826);
827
828wpt_uint8
829WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700830(
Jeff Johnson295189b2012-06-20 16:38:30 -0700831 WDI_ControlBlockType* pWDICtx,
832 WDI_BSSSessionType** ppSession
833);
834
835void
836WDI_AddBcastSTAtoSTATable
837(
838 WDI_ControlBlockType* pWDICtx,
839 WDI_AddStaParams * staParams,
840 wpt_uint16 usBcastStaIdx
841);
842
843WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700844(
Jeff Johnson295189b2012-06-20 16:38:30 -0700845 WDI_ControlBlockType* pWDICtx,
846 WDI_EventInfoType* pEventData
847);
848
849void
850WDI_SetPowerStateCb
851(
852 wpt_status status,
853 unsigned int dxePhyAddr,
854 void *pContext
855);
856
857#define CASE_RETURN_STRING( str ) \
858 case ( ( str ) ): return( #str ); break \
859
860/**
861 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700862
863 @param wdiReqMsgId: WDI Message request Id
864
865 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700866 @return Result of the function call
867*/
868static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
869{
870 switch (wdiReqMsgId)
871 {
872 CASE_RETURN_STRING( WDI_START_REQ );
873 CASE_RETURN_STRING( WDI_STOP_REQ );
874 CASE_RETURN_STRING( WDI_CLOSE_REQ );
875 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
876 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
877 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
878 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
879 CASE_RETURN_STRING( WDI_JOIN_REQ );
880 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
881 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
882 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
883 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
884 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
885 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
886 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
887 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
888 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
889 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
890 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
891 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
892 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
893 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
894 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
895 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
896 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
897 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
898 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
899 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
900 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
901 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
902 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
903 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
904 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
905 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -0700906 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700907 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530908#ifdef FEATURE_WLAN_TDLS
909 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
910#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700911 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
912 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
913 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
914 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
915 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
916 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
917 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
918 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
919 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
920 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
921 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
922 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
923 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
924 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
925 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
926 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
927 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
928 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
929 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
930 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
931 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
932 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
933 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
934 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
935 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700936 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700937 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
938 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
939 #ifdef FEATURE_WLAN_SCAN_PNO
940 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
941 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
942 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
943 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700944#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700945 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700946#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700947 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
948 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
949 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
950 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
951 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
952 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
953 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
954 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
955 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800956 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800957 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -0700958#ifdef WLAN_FEATURE_11W
959 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
960#endif
Rajeev79dbe4c2013-10-05 11:03:42 +0530961#ifdef FEATURE_WLAN_BATCH_SCAN
962 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
963 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
964 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
965#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530966 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
967 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Jeff Johnson295189b2012-06-20 16:38:30 -0700968 default:
969 return "Unknown WDI MessageId";
970 }
971}
972
973
974
975/**
976 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700977
978 @param wdiRespMsgId: WDI Message response Id
979
980 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700981 @return Result of the function call
982*/
983static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
984{
985 switch (wdiRespMsgId)
986 {
987 CASE_RETURN_STRING( WDI_START_RESP );
988 CASE_RETURN_STRING( WDI_STOP_RESP );
989 CASE_RETURN_STRING( WDI_CLOSE_RESP );
990 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
991 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
992 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
993 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
994 CASE_RETURN_STRING( WDI_JOIN_RESP );
995 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
996 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
997 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
998 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
999 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1000 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1001 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1002 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1003 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1004 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1005 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1006 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1007 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1008 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1009 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1010 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1011 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1012 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1013 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1014 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1015 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1016 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1017 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1018 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1019 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1020 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1021 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301022#ifdef FEATURE_WLAN_TDLS
1023 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
1024 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1025#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001026 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1027 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1028 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1029 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1030 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1031 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1032 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1033 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1034 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1035 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1036 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1037 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1038 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1039 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1040 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1041 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1042 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1043 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1044 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1045 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1046 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1047 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1048 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1049 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1050 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001051 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001052 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1053 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1054 #ifdef FEATURE_WLAN_SCAN_PNO
1055 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1056 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1057 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1058 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001059#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001060 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001061#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001062 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1063 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1064 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1065 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1066 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1067 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1068 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1069 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001070 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301071#ifdef FEATURE_WLAN_BATCH_SCAN
1072 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1073#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001074 default:
1075 return "Unknown WDI MessageId";
1076 }
1077}
1078
1079/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301080 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1081 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301082 @param capabilityBitmap - Base address of a 4 element Bitmap array
1083 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301084 @see
1085 @returns None
1086 */
1087void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1088{
Abhishek Singh08b60122014-02-04 18:05:23 +05301089 int i,j;
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301090 char capStr[512];
1091 char *pCapStr = capStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301092 for (j = 0; j < 4; j++) {
1093 for (i = 0; i < 32; i++) {
1094 if ((*(capabilityBitmap + j) & (1 << i))) {
1095 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301096 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1097 pCapStr += strlen("MCC");
1098 break;
1099 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1100 pCapStr += strlen("P2P");
1101 break;
1102 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1103 pCapStr += strlen("DOT11AC");
1104 break;
1105 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1106 pCapStr += strlen("SLM_SESSIONIZATION");
1107 break;
1108 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1109 pCapStr += strlen("DOT11AC_OPMODE");
1110 break;
1111 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1112 pCapStr += strlen("SAP32STA");
1113 break;
1114 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1115 pCapStr += strlen("TDLS");
1116 break;
1117 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1118 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1119 break;
1120 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1121 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1122 break;
1123 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1124 pCapStr += strlen("BEACON_OFFLOAD");
1125 break;
1126 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1127 pCapStr += strlen("SCAN_OFFLOAD");
1128 break;
1129 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1130 pCapStr += strlen("ROAM_OFFLOAD");
1131 break;
1132 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1133 pCapStr += strlen("BCN_MISS_OFFLOAD");
1134 break;
1135 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1136 pCapStr += strlen("STA_POWERSAVE");
1137 break;
1138 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1139 pCapStr += strlen("AP_UAPSD");
1140 break;
1141 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1142 pCapStr += strlen("AP_DFS");
1143 break;
1144 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1145 pCapStr += strlen("BLOCKACK");
1146 break;
1147 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1148 pCapStr += strlen("PHY_ERR");
1149 break;
1150 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1151 pCapStr += strlen("BCN_FILTER");
1152 break;
1153 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1154 pCapStr += strlen("RTT");
1155 break;
1156 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1157 pCapStr += strlen("RATECTRL");
1158 break;
1159 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1160 pCapStr += strlen("WOW");
1161 break;
1162 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1163 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1164 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301165 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1166 pCapStr += strlen("FW_IN_TX_PATH");
1167 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301168 case HT40_OBSS_SCAN:
1169 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1170 "%s", "HT40_OBSS_SCAN");
1171 pCapStr += strlen("HT40_OBSS_SCAN");
1172 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301173 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1174 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1175 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1176 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1177 break;
1178
Abhishek Singh08b60122014-02-04 18:05:23 +05301179 }
1180 *pCapStr++ = ',';
1181 *pCapStr++ = ' ';
1182 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301183 }
1184 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301185 pCapStr -= 2;
1186 *pCapStr = '\0';
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301187 pCapStr = capStr;
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301189}
1190
1191/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001192 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001193
1194 @param halStatusId: HAL status Id
1195
1196 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001197 @return Result of the function call
1198*/
1199static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1200{
1201 switch (halStatusId)
1202 {
1203 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1204 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1205 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1206 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1207 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1208 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1209 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1210 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1211 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1212 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1213 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1214 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1215 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1216 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1217 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1218 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1219 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1220 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1221 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1222 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1223 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1224 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1225 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1226 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1227 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1228 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1229 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1230 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1231 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1232 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1233 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1234 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1235 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1236 default:
1237 return "Unknown HAL status";
1238 }
1239}
1240
Jeff Johnsone7245742012-09-05 17:12:55 -07001241/*========================================================================
1242
Jeff Johnson295189b2012-06-20 16:38:30 -07001243 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001244
Jeff Johnson295189b2012-06-20 16:38:30 -07001245==========================================================================*/
1246
1247/**
1248 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001249
Jeff Johnson295189b2012-06-20 16:38:30 -07001250 DAL will allocate all the resources it needs. It will open PAL, it will also
1251 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001252 DXE/SMD or any other drivers that they need.
1253
Jeff Johnson295189b2012-06-20 16:38:30 -07001254 @param pOSContext: pointer to the OS context provided by the UMAC
1255 will be passed on to PAL on Open
1256 ppWDIGlobalCtx: output pointer of Global Context
1257 pWdiDevCapability: output pointer of device capability
1258
1259 @return Result of the function call
1260*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001261WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001262WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001263(
Jeff Johnson295189b2012-06-20 16:38:30 -07001264 void* pOSContext,
1265 void** ppWDIGlobalCtx,
1266 WDI_DeviceCapabilityType* pWdiDevCapability,
1267 unsigned int driverType
1268)
1269{
1270 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001271 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001272 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001273 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001274 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1275
1276 /*---------------------------------------------------------------------
1277 Sanity check
1278 ---------------------------------------------------------------------*/
1279 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1280 {
1281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1282 "Invalid input parameters in WDI_Init");
1283
Jeff Johnsone7245742012-09-05 17:12:55 -07001284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001285 }
1286
1287 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001288 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001289 ---------------------------------------------------------------------*/
1290 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1291 {
1292 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1293 "WDI module already initialized - return");
1294
Jeff Johnsone7245742012-09-05 17:12:55 -07001295 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001296 }
1297
1298 /*Module is now initialized - this flag is to ensure the fact that multiple
1299 init will not happen on WDI
1300 !! - potential race does exist because read and set are not atomic,
1301 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001302 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001303
1304 /*Setup the control block */
1305 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001306 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001307
1308 /*Setup the STA Table*/
1309 wdiStatus = WDI_STATableInit(&gWDICb);
1310 if ( WDI_STATUS_SUCCESS != wdiStatus )
1311 {
1312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1313 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001314 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001315 goto fail_STATableInit;
1316 }
1317
1318 /*------------------------------------------------------------------------
1319 Open the PAL
1320 ------------------------------------------------------------------------*/
1321 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1322 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1323 {
1324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1325 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001326 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001327 goto fail_wpalOpen;
1328 }
1329
1330 /*Initialize main synchro mutex - it will be used to ensure integrity of
1331 the main WDI Control Block*/
1332 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1333 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1334 {
1335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1336 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001337 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001338 goto fail_mutex;
1339 }
1340
1341 /*Initialize the response timer - it will be used to time all messages
1342 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001343 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1344 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001345 &gWDICb);
1346 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1347 {
1348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1349 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001350 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001351 goto fail_timer;
1352 }
1353
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001354 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1355 WDI_SsrTimerCB,
1356 &gWDICb);
1357 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1358 {
1359 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1360 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001361 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001362 goto fail_timer2;
1363 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001364 /* Initialize the WDI Pending Request Queue*/
1365 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1366 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1367 {
1368 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1369 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001370 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001371 goto fail_pend_queue;
1372 }
1373
1374 /*Init WDI Pending Assoc Id Queue */
1375 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1376 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1377 {
1378 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1379 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001380 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001381 goto fail_assoc_queue;
1382 }
1383
1384 /*Initialize the BSS sessions pending Queue */
1385 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1386 {
1387 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1388 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1389 {
1390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1391 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001392 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001393 goto fail_bss_queue;
1394 }
1395 }
1396
1397 /*Indicate the control block is sufficiently initialized for callbacks*/
1398 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1399
1400 /*------------------------------------------------------------------------
1401 Initialize the Data Path Utility Module
1402 ------------------------------------------------------------------------*/
1403 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1404 if ( WDI_STATUS_SUCCESS != wdiStatus )
1405 {
1406 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1407 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001408 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001409 goto fail_dp_util_init;
1410 }
1411
1412 /* Init Set power state event */
1413 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001414 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001415 {
1416 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1417 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001418 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001419 goto fail_power_event;
1420 }
1421
1422 /* Init WCTS action event */
1423 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001424 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001425 {
1426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1427 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001428 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001429 goto fail_wcts_event;
1430 }
1431
1432 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001433 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001434 ------------------------------------------------------------------------*/
1435 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1436 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001437 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001438 wctsCBs.wctsRxMsgCBData = &gWDICb;
1439
Jeff Johnsone7245742012-09-05 17:12:55 -07001440 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001441 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001442 WDI_CT_CHANNEL_SIZE,
1443 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001444
1445 if ( NULL == gWDICb.wctsHandle )
1446 {
1447 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001448 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001449 goto fail_wcts_open;
1450 }
1451
1452 gWDICb.driverMode = (tDriverType)driverType;
1453 /* FTM mode not need to open Transport Driver */
1454 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001455 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001456 /*------------------------------------------------------------------------
1457 Open the Data Transport
1458 ------------------------------------------------------------------------*/
1459 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1460 {
1461 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001462 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001463 goto fail_wdts_open;
1464 }
1465 }
1466
1467 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001468 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001469
1470 /*Send the context as a ptr to the global WDI Control Block*/
1471 *ppWDIGlobalCtx = &gWDICb;
1472
1473 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001474 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001475 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1476 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1477 return WDI_STATUS_SUCCESS;
1478
1479 /* ERROR handlers
1480 Undo everything that completed successfully */
1481
1482 fail_wdts_open:
1483 {
1484 wpt_status eventStatus;
1485
1486 /* Closing WCTS in this scenario is tricky since it has to close
1487 the SMD channel and then we get notified asynchronously when
1488 the channel has been closed. So we take some of the logic from
1489 the "normal" close procedure in WDI_Close()
1490 */
1491
1492 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001493 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001494 {
1495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001496 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001497 }
1498
1499 WCTS_CloseTransport(gWDICb.wctsHandle);
1500
1501 /* Wait for WCTS to close the control transport. If we were able
1502 to reset the event flag, then we'll wait for the event,
1503 otherwise we'll wait for a maximum amount of time required for
1504 the channel to be closed */
1505 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1506 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001507 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001508 WDI_WCTS_ACTION_TIMEOUT);
1509 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1510 {
1511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001512 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001513 }
1514 }
1515 else
1516 {
1517 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1518 }
1519 }
1520 fail_wcts_open:
1521 wpalEventDelete(&gWDICb.wctsActionEvent);
1522 fail_wcts_event:
1523 wpalEventDelete(&gWDICb.setPowerStateEvent);
1524 fail_power_event:
1525 WDI_DP_UtilsExit(&gWDICb);
1526 fail_dp_util_init:
1527 gWDICb.magic = 0;
1528 fail_bss_queue:
1529 /* entries 0 thru i-1 were successfully initialized */
1530 while (0 < i)
1531 {
1532 i--;
1533 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1534 }
1535 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1536 fail_assoc_queue:
1537 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1538 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001539 wpalTimerDelete(&gWDICb.ssrTimer);
1540 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001541 wpalTimerDelete(&gWDICb.wptResponseTimer);
1542 fail_timer:
1543 wpalMutexDelete(&gWDICb.wptMutex);
1544 fail_mutex:
1545 wpalClose(gWDICb.pPALContext);
1546 fail_wpalOpen:
1547 WDI_STATableClose(&gWDICb);
1548 fail_STATableInit:
1549 gWDIInitialized = eWLAN_PAL_FALSE;
1550
1551 return WDI_STATUS_E_FAILURE;
1552
1553}/*WDI_Init*/;
1554
1555/**
1556 @brief WDI_Start will be called when the upper MAC is ready to
1557 commence operation with the WLAN Device. Upon the call
1558 of this API the WLAN DAL will pack and send a HAL Start
1559 message to the lower RIVA sub-system if the SMD channel
1560 has been fully opened and the RIVA subsystem is up.
1561
1562 If the RIVA sub-system is not yet up and running DAL
1563 will queue the request for Open and will wait for the
1564 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001565 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001566
1567 WDI_Init must have been called.
1568
Jeff Johnsone7245742012-09-05 17:12:55 -07001569 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001570 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001571
Jeff Johnson295189b2012-06-20 16:38:30 -07001572 wdiStartRspCb: callback for passing back the response of
1573 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001574
Jeff Johnson295189b2012-06-20 16:38:30 -07001575 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001576 callback
1577
Jeff Johnson295189b2012-06-20 16:38:30 -07001578 @see WDI_Start
1579 @return Result of the function call
1580*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001581WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001582WDI_Start
1583(
1584 WDI_StartReqParamsType* pwdiStartParams,
1585 WDI_StartRspCb wdiStartRspCb,
1586 void* pUserData
1587)
1588{
1589 WDI_EventInfoType wdiEventData;
1590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1591
1592 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001593 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001594 ------------------------------------------------------------------------*/
1595 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1596 {
1597 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1598 "WDI API call before module is initialized - Fail request");
1599
Jeff Johnsone7245742012-09-05 17:12:55 -07001600 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001601 }
1602
1603 /*------------------------------------------------------------------------
1604 Fill in Event data and post to the Main FSM
1605 ------------------------------------------------------------------------*/
1606 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001607 wdiEventData.pEventData = pwdiStartParams;
1608 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1609 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001610 wdiEventData.pUserData = pUserData;
1611
1612 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1613
1614}/*WDI_Start*/
1615
1616/**
1617 @brief WDI_Stop will be called when the upper MAC is ready to
1618 stop any operation with the WLAN Device. Upon the call
1619 of this API the WLAN DAL will pack and send a HAL Stop
1620 message to the lower RIVA sub-system if the DAL Core is
1621 in started state.
1622
1623 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001624
1625 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001626
1627 WDI_Start must have been called.
1628
Jeff Johnsone7245742012-09-05 17:12:55 -07001629 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001630 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001631
Jeff Johnson295189b2012-06-20 16:38:30 -07001632 wdiStopRspCb: callback for passing back the response of
1633 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001634
Jeff Johnson295189b2012-06-20 16:38:30 -07001635 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001636 callback
1637
Jeff Johnson295189b2012-06-20 16:38:30 -07001638 @see WDI_Start
1639 @return Result of the function call
1640*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001641WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001642WDI_Stop
1643(
1644 WDI_StopReqParamsType* pwdiStopParams,
1645 WDI_StopRspCb wdiStopRspCb,
1646 void* pUserData
1647)
1648{
1649 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001650 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001651 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1652
1653 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001654 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001655 ------------------------------------------------------------------------*/
1656 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1657 {
1658 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1659 "WDI API call before module is initialized - Fail request");
1660
Jeff Johnsone7245742012-09-05 17:12:55 -07001661 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001662 }
1663
Jeff Johnson43971f52012-07-17 12:26:56 -07001664 /*Access to the global state must be locked before cleaning */
1665 wpalMutexAcquire(&pWDICtx->wptMutex);
1666
1667 /*Clear all pending request*/
1668 WDI_ClearPendingRequests(pWDICtx);
1669
1670 /*We have completed cleaning unlock now*/
1671 wpalMutexRelease(&pWDICtx->wptMutex);
1672
Jeff Johnson295189b2012-06-20 16:38:30 -07001673 /* Free the global variables */
1674 wpalMemoryFree(gpHostWlanFeatCaps);
1675 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001676 gpHostWlanFeatCaps = NULL;
1677 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001678
1679 /*------------------------------------------------------------------------
1680 Fill in Event data and post to the Main FSM
1681 ------------------------------------------------------------------------*/
1682 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001683 wdiEventData.pEventData = pwdiStopParams;
1684 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1685 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001686 wdiEventData.pUserData = pUserData;
1687
1688 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1689
1690}/*WDI_Stop*/
1691
1692
1693
1694/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001695 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001696 needs to interact with DAL. DAL will free its control
1697 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001698
1699 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001700
1701 WDI_Stop must have been called.
1702
1703 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001704
Jeff Johnson295189b2012-06-20 16:38:30 -07001705 @see WDI_Stop
1706 @return Result of the function call
1707*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001708WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001709WDI_Close
1710(
1711 void
1712)
1713{
1714 wpt_uint8 i;
1715 WDI_EventInfoType wdiEventData;
1716 wpt_status wptStatus;
1717 wpt_status eventStatus;
1718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1719
1720 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001721 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001722 ------------------------------------------------------------------------*/
1723 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1724 {
1725 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1726 "WDI API call before module is initialized - Fail request");
1727
Jeff Johnsone7245742012-09-05 17:12:55 -07001728 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001729 }
1730
1731 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1732 (the control transport will be closed by the FSM and we'll want
1733 to wait until that completes)*/
1734 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001735 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001736 {
1737 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001738 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001739 /* fall through and try to finish closing via the FSM */
1740 }
1741
1742 /*------------------------------------------------------------------------
1743 Fill in Event data and post to the Main FSM
1744 ------------------------------------------------------------------------*/
1745 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001746 wdiEventData.pEventData = NULL;
1747 wdiEventData.uEventDataSize = 0;
1748 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001749 wdiEventData.pUserData = NULL;
1750
1751 gWDIInitialized = eWLAN_PAL_FALSE;
1752
1753 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1754
1755 /*Wait for WCTS to close the control transport
1756 (but only if we were able to reset the event flag*/
1757 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1758 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001759 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001760 WDI_WCTS_ACTION_TIMEOUT);
1761 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1762 {
1763 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001764 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001765 }
1766 }
1767
1768 /* Destroy the WCTS action event */
1769 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1770 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1771 {
1772 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1773 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001774 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001775 }
1776
1777 /* Destroy the Set Power State event */
1778 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1779 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1780 {
1781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1782 "WDI Close failed to destroy an event");
1783
Jeff Johnsone7245742012-09-05 17:12:55 -07001784 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001785 }
1786
1787 /*------------------------------------------------------------------------
1788 Closes the Data Path Utility Module
1789 ------------------------------------------------------------------------*/
1790 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1791 {
1792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1793 "WDI Init failed to close the DP Util Module");
1794
Jeff Johnsone7245742012-09-05 17:12:55 -07001795 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001796 }
1797
1798 /*destroy the BSS sessions pending Queue */
1799 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1800 {
1801 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1802 }
1803
1804 /* destroy the WDI Pending Assoc Id Request Queue*/
1805 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1806
1807 /* destroy the WDI Pending Request Queue*/
1808 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001809
Jeff Johnson295189b2012-06-20 16:38:30 -07001810 /*destroy the response timer */
1811 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1812
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001813 /*destroy the SSR timer */
1814 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1815
Jeff Johnson295189b2012-06-20 16:38:30 -07001816 /*invalidate the main synchro mutex */
1817 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1818 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1819 {
1820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1821 "Failed to delete mutex %d", wptStatus);
1822 WDI_ASSERT(0);
1823 }
1824
1825 /*Clear control block. note that this will clear the "magic"
1826 which will inhibit all asynchronous callbacks*/
1827 WDI_CleanCB(&gWDICb);
1828
1829 return wptStatus;
1830
1831}/*WDI_Close*/
1832
1833/**
1834 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1835 This will do most of the WDI stop & close
1836 operations without doing any handshake with Riva
1837
1838 This will also make sure that the control transport
1839 will NOT be closed.
1840
1841 This request will not be queued.
1842
1843
1844 WDI_Start must have been called.
1845
1846 @param closeTransport: Close control channel if this is set
1847
1848 @return Result of the function call
1849*/
1850WDI_Status
1851WDI_Shutdown
1852(
1853 wpt_boolean closeTransport
1854)
1855{
1856 WDI_EventInfoType wdiEventData;
1857 wpt_status wptStatus;
1858 int i = 0;
1859 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1860
1861 /*------------------------------------------------------------------------
1862 Sanity Check
1863 ------------------------------------------------------------------------*/
1864 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1865 {
1866 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1867 "WDI API call before module is initialized - Fail request");
1868
1869 return WDI_STATUS_E_NOT_ALLOWED;
1870 }
1871
1872 /*------------------------------------------------------------------------
1873 Fill in Event data and post to the Main FSM
1874 ------------------------------------------------------------------------*/
1875 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1876 wdiEventData.pEventData = NULL;
1877 wdiEventData.uEventDataSize = 0;
1878
1879 /* Shutdown will not be queued, if the state is busy timer will be
1880 * stopped & this message will be processed.*/
1881 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1882 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1883 {
1884 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001885 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001886 }
1887 /* Destroy the Set Power State event */
1888 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1889 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1890 {
1891 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1892 "WDI Close failed to destroy an event");
1893
1894 WDI_ASSERT(0);
1895 }
1896 /*------------------------------------------------------------------------
1897 Closes the Data Path Utility Module
1898 ------------------------------------------------------------------------*/
1899 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1900 {
1901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1902 "WDI Init failed to close the DP Util Module");
1903
1904 WDI_ASSERT(0);
1905 }
1906 if ( closeTransport )
1907 {
1908 /* Close control transport, called from module unload */
1909 WCTS_CloseTransport(gWDICb.wctsHandle);
1910 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001911 else
1912 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001913 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001914 the pending messages in the transport queue */
1915 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1916 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001917 /*destroy the BSS sessions pending Queue */
1918 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1919 {
1920 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1921 }
1922
1923 /* destroy the WDI Pending Assoc Id Request Queue*/
1924 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1925 /* destroy the WDI Pending Request Queue*/
1926 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1927 /*destroy the response timer */
1928 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001929 /*destroy the SSR timer */
1930 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001931
1932 /*invalidate the main synchro mutex */
1933 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1934 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1935 {
1936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001937 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001938 WDI_ASSERT(0);
1939 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001940 /* Free the global variables */
1941 wpalMemoryFree(gpHostWlanFeatCaps);
1942 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001943 gpHostWlanFeatCaps = NULL;
1944 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001945 /*Clear control block. note that this will clear the "magic"
1946 which will inhibit all asynchronous callbacks*/
1947 WDI_CleanCB(&gWDICb);
1948 return wptStatus;
1949
1950}/*WDI_Shutdown*/
1951
1952
Jeff Johnsone7245742012-09-05 17:12:55 -07001953/*========================================================================
1954
Jeff Johnson295189b2012-06-20 16:38:30 -07001955 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001956
Jeff Johnson295189b2012-06-20 16:38:30 -07001957==========================================================================*/
1958
1959/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001960 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001961 the WLAN Device to get ready for a scan procedure. Upon
1962 the call of this API the WLAN DAL will pack and send a
1963 HAL Init Scan request message to the lower RIVA
1964 sub-system if DAL is in state STARTED.
1965
1966 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001967 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001968
1969 WDI_Start must have been called.
1970
1971 @param wdiInitScanParams: the init scan parameters as specified
1972 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001973
Jeff Johnson295189b2012-06-20 16:38:30 -07001974 wdiInitScanRspCb: callback for passing back the response
1975 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001976
Jeff Johnson295189b2012-06-20 16:38:30 -07001977 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001978 callback
1979
Jeff Johnson295189b2012-06-20 16:38:30 -07001980 @see WDI_Start
1981 @return Result of the function call
1982*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001983WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001984WDI_InitScanReq
1985(
1986 WDI_InitScanReqParamsType* pwdiInitScanParams,
1987 WDI_InitScanRspCb wdiInitScanRspCb,
1988 void* pUserData
1989)
1990{
1991 WDI_EventInfoType wdiEventData;
1992 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1993
1994 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001995 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001996 ------------------------------------------------------------------------*/
1997 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1998 {
1999 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2000 "WDI API call before module is initialized - Fail request");
2001
Jeff Johnsone7245742012-09-05 17:12:55 -07002002 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002003 }
2004
2005 /*------------------------------------------------------------------------
2006 Fill in Event data and post to the Main FSM
2007 ------------------------------------------------------------------------*/
2008 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002009 wdiEventData.pEventData = pwdiInitScanParams;
2010 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2011 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002012 wdiEventData.pUserData = pUserData;
2013
2014 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2015
2016}/*WDI_InitScanReq*/
2017
2018/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002019 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002020 wishes to change the Scan channel on the WLAN Device.
2021 Upon the call of this API the WLAN DAL will pack and
2022 send a HAL Start Scan request message to the lower RIVA
2023 sub-system if DAL is in state STARTED.
2024
2025 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002026 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002027
2028 WDI_InitScanReq must have been called.
2029
Jeff Johnsone7245742012-09-05 17:12:55 -07002030 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002031 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002032
Jeff Johnson295189b2012-06-20 16:38:30 -07002033 wdiStartScanRspCb: callback for passing back the
2034 response of the start scan operation received from the
2035 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002036
Jeff Johnson295189b2012-06-20 16:38:30 -07002037 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002038 callback
2039
Jeff Johnson295189b2012-06-20 16:38:30 -07002040 @see WDI_InitScanReq
2041 @return Result of the function call
2042*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002043WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002044WDI_StartScanReq
2045(
2046 WDI_StartScanReqParamsType* pwdiStartScanParams,
2047 WDI_StartScanRspCb wdiStartScanRspCb,
2048 void* pUserData
2049)
2050{
2051 WDI_EventInfoType wdiEventData;
2052 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2053
2054 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002055 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002056 ------------------------------------------------------------------------*/
2057 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2058 {
2059 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2060 "WDI API call before module is initialized - Fail request");
2061
Jeff Johnsone7245742012-09-05 17:12:55 -07002062 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002063 }
2064
2065 /*------------------------------------------------------------------------
2066 Fill in Event data and post to the Main FSM
2067 ------------------------------------------------------------------------*/
2068 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002069 wdiEventData.pEventData = pwdiStartScanParams;
2070 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2071 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002072 wdiEventData.pUserData = pUserData;
2073
2074 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2075
2076}/*WDI_StartScanReq*/
2077
2078
2079/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002080 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002081 wants to end scanning for a particular channel that it
2082 had set before by calling Scan Start on the WLAN Device.
2083 Upon the call of this API the WLAN DAL will pack and
2084 send a HAL End Scan request message to the lower RIVA
2085 sub-system if DAL is in state STARTED.
2086
2087 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002088 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002089
2090 WDI_StartScanReq must have been called.
2091
Jeff Johnsone7245742012-09-05 17:12:55 -07002092 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002093 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002094
Jeff Johnson295189b2012-06-20 16:38:30 -07002095 wdiEndScanRspCb: callback for passing back the response
2096 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002097
Jeff Johnson295189b2012-06-20 16:38:30 -07002098 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002099 callback
2100
Jeff Johnson295189b2012-06-20 16:38:30 -07002101 @see WDI_StartScanReq
2102 @return Result of the function call
2103*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002104WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002105WDI_EndScanReq
2106(
2107 WDI_EndScanReqParamsType* pwdiEndScanParams,
2108 WDI_EndScanRspCb wdiEndScanRspCb,
2109 void* pUserData
2110)
2111{
2112 WDI_EventInfoType wdiEventData;
2113 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2114
2115 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002116 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002117 ------------------------------------------------------------------------*/
2118 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2119 {
2120 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2121 "WDI API call before module is initialized - Fail request");
2122
Jeff Johnsone7245742012-09-05 17:12:55 -07002123 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002124 }
2125
2126 /*------------------------------------------------------------------------
2127 Fill in Event data and post to the Main FSM
2128 ------------------------------------------------------------------------*/
2129 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002130 wdiEventData.pEventData = pwdiEndScanParams;
2131 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2132 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002133 wdiEventData.pUserData = pUserData;
2134
2135 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2136
2137}/*WDI_EndScanReq*/
2138
2139
2140/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002141 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002142 completed the scan process on the WLAN Device. Upon the
2143 call of this API the WLAN DAL will pack and send a HAL
2144 Finish Scan Request request message to the lower RIVA
2145 sub-system if DAL is in state STARTED.
2146
2147 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002148 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002149
2150 WDI_InitScanReq must have been called.
2151
Jeff Johnsone7245742012-09-05 17:12:55 -07002152 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002153 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002154
Jeff Johnson295189b2012-06-20 16:38:30 -07002155 wdiFinishScanRspCb: callback for passing back the
2156 response of the finish scan operation received from the
2157 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002158
Jeff Johnson295189b2012-06-20 16:38:30 -07002159 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002160 callback
2161
Jeff Johnson295189b2012-06-20 16:38:30 -07002162 @see WDI_InitScanReq
2163 @return Result of the function call
2164*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002165WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002166WDI_FinishScanReq
2167(
2168 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2169 WDI_FinishScanRspCb wdiFinishScanRspCb,
2170 void* pUserData
2171)
2172{
2173 WDI_EventInfoType wdiEventData;
2174 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2175
2176 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002177 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002178 ------------------------------------------------------------------------*/
2179 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2180 {
2181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2182 "WDI API call before module is initialized - Fail request");
2183
Jeff Johnsone7245742012-09-05 17:12:55 -07002184 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002185 }
2186
2187 /*------------------------------------------------------------------------
2188 Fill in Event data and post to the Main FSM
2189 ------------------------------------------------------------------------*/
2190 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002191 wdiEventData.pEventData = pwdiFinishScanParams;
2192 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2193 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002194 wdiEventData.pUserData = pUserData;
2195
2196 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2197
2198}/*WDI_FinishScanReq*/
2199
Jeff Johnsone7245742012-09-05 17:12:55 -07002200/*========================================================================
2201
Jeff Johnson295189b2012-06-20 16:38:30 -07002202 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002203
Jeff Johnson295189b2012-06-20 16:38:30 -07002204==========================================================================*/
2205
2206/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002207 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002208 to start an association procedure to a BSS. Upon the
2209 call of this API the WLAN DAL will pack and send a HAL
2210 Join request message to the lower RIVA sub-system if
2211 DAL is in state STARTED.
2212
2213 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002214 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002215
2216 WDI_Start must have been called.
2217
Jeff Johnsone7245742012-09-05 17:12:55 -07002218 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002219 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002220
Jeff Johnson295189b2012-06-20 16:38:30 -07002221 wdiJoinRspCb: callback for passing back the response of
2222 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002223
Jeff Johnson295189b2012-06-20 16:38:30 -07002224 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002225 callback
2226
Jeff Johnson295189b2012-06-20 16:38:30 -07002227 @see WDI_Start
2228 @return Result of the function call
2229*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002230WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002231WDI_JoinReq
2232(
2233 WDI_JoinReqParamsType* pwdiJoinParams,
2234 WDI_JoinRspCb wdiJoinRspCb,
2235 void* pUserData
2236)
2237{
2238 WDI_EventInfoType wdiEventData;
2239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2240
2241 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002242 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002243 ------------------------------------------------------------------------*/
2244 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2245 {
2246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2247 "WDI API call before module is initialized - Fail request");
2248
Jeff Johnsone7245742012-09-05 17:12:55 -07002249 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002250 }
2251
2252 /*------------------------------------------------------------------------
2253 Fill in Event data and post to the Main FSM
2254 ------------------------------------------------------------------------*/
2255 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002256 wdiEventData.pEventData = pwdiJoinParams;
2257 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2258 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002259 wdiEventData.pUserData = pUserData;
2260
2261 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2262
2263}/*WDI_JoinReq*/
2264
2265/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002266 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002267 wishes to configure the newly acquired or in process of
2268 being acquired BSS to the HW . Upon the call of this API
2269 the WLAN DAL will pack and send a HAL Config BSS request
2270 message to the lower RIVA sub-system if DAL is in state
2271 STARTED.
2272
2273 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002274 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002275
2276 WDI_JoinReq must have been called.
2277
Jeff Johnsone7245742012-09-05 17:12:55 -07002278 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002279 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002280
Jeff Johnson295189b2012-06-20 16:38:30 -07002281 wdiConfigBSSRspCb: callback for passing back the
2282 response of the config BSS operation received from the
2283 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002284
Jeff Johnson295189b2012-06-20 16:38:30 -07002285 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002286 callback
2287
Jeff Johnson295189b2012-06-20 16:38:30 -07002288 @see WDI_JoinReq
2289 @return Result of the function call
2290*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002291WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002292WDI_ConfigBSSReq
2293(
2294 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2295 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2296 void* pUserData
2297)
2298{
2299 WDI_EventInfoType wdiEventData;
2300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2301
2302 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002303 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002304 ------------------------------------------------------------------------*/
2305 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2306 {
2307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2308 "WDI API call before module is initialized - Fail request");
2309
Jeff Johnsone7245742012-09-05 17:12:55 -07002310 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002311 }
2312
2313 /*------------------------------------------------------------------------
2314 Fill in Event data and post to the Main FSM
2315 ------------------------------------------------------------------------*/
2316 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002317 wdiEventData.pEventData = pwdiConfigBSSParams;
2318 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2319 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002320 wdiEventData.pUserData = pUserData;
2321
2322 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2323
2324}/*WDI_ConfigBSSReq*/
2325
2326/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002327 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002328 disassociating from the BSS and wishes to notify HW.
2329 Upon the call of this API the WLAN DAL will pack and
2330 send a HAL Del BSS request message to the lower RIVA
2331 sub-system if DAL is in state STARTED.
2332
2333 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002334 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002335
2336 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2337
Jeff Johnsone7245742012-09-05 17:12:55 -07002338 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002339 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002340
Jeff Johnson295189b2012-06-20 16:38:30 -07002341 wdiDelBSSRspCb: callback for passing back the response
2342 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002343
Jeff Johnson295189b2012-06-20 16:38:30 -07002344 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002345 callback
2346
2347 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002348 @return Result of the function call
2349*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002350WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002351WDI_DelBSSReq
2352(
2353 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2354 WDI_DelBSSRspCb wdiDelBSSRspCb,
2355 void* pUserData
2356)
2357{
2358 WDI_EventInfoType wdiEventData;
2359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2360
2361 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002362 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002363 ------------------------------------------------------------------------*/
2364 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2365 {
2366 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2367 "WDI API call before module is initialized - Fail request");
2368
Jeff Johnsone7245742012-09-05 17:12:55 -07002369 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002370 }
2371
2372 /*------------------------------------------------------------------------
2373 Fill in Event data and post to the Main FSM
2374 ------------------------------------------------------------------------*/
2375 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002376 wdiEventData.pEventData = pwdiDelBSSParams;
2377 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2378 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002379 wdiEventData.pUserData = pUserData;
2380
2381 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2382
2383}/*WDI_DelBSSReq*/
2384
2385/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002386 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002387 associated to a BSS and wishes to configure HW for
2388 associated state. Upon the call of this API the WLAN DAL
2389 will pack and send a HAL Post Assoc request message to
2390 the lower RIVA sub-system if DAL is in state STARTED.
2391
2392 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002393 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002394
2395 WDI_JoinReq must have been called.
2396
2397 @param wdiPostAssocReqParams: the assoc parameters as specified
2398 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002399
Jeff Johnson295189b2012-06-20 16:38:30 -07002400 wdiPostAssocRspCb: callback for passing back the
2401 response of the post assoc operation received from the
2402 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002403
Jeff Johnson295189b2012-06-20 16:38:30 -07002404 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002405 callback
2406
Jeff Johnson295189b2012-06-20 16:38:30 -07002407 @see WDI_JoinReq
2408 @return Result of the function call
2409*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002410WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002411WDI_PostAssocReq
2412(
2413 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2414 WDI_PostAssocRspCb wdiPostAssocRspCb,
2415 void* pUserData
2416)
2417{
2418 WDI_EventInfoType wdiEventData;
2419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2420
2421 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002422 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002423 ------------------------------------------------------------------------*/
2424 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2425 {
2426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2427 "WDI API call before module is initialized - Fail request");
2428
Jeff Johnsone7245742012-09-05 17:12:55 -07002429 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002430 }
2431
2432 /*------------------------------------------------------------------------
2433 Fill in Event data and post to the Main FSM
2434 ------------------------------------------------------------------------*/
2435 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002436 wdiEventData.pEventData = pwdiPostAssocReqParams;
2437 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2438 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002439 wdiEventData.pUserData = pUserData;
2440
2441 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2442
2443}/*WDI_PostAssocReq*/
2444
2445/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002446 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002447 association with another STA has ended and the station
2448 must be deleted from HW. Upon the call of this API the
2449 WLAN DAL will pack and send a HAL Del STA request
2450 message to the lower RIVA sub-system if DAL is in state
2451 STARTED.
2452
2453 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002454 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002455
2456 WDI_PostAssocReq must have been called.
2457
Jeff Johnsone7245742012-09-05 17:12:55 -07002458 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002459 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002460
Jeff Johnson295189b2012-06-20 16:38:30 -07002461 wdiDelSTARspCb: callback for passing back the response
2462 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002463
Jeff Johnson295189b2012-06-20 16:38:30 -07002464 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002465 callback
2466
Jeff Johnson295189b2012-06-20 16:38:30 -07002467 @see WDI_PostAssocReq
2468 @return Result of the function call
2469*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002470WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002471WDI_DelSTAReq
2472(
2473 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2474 WDI_DelSTARspCb wdiDelSTARspCb,
2475 void* pUserData
2476)
2477{
2478 WDI_EventInfoType wdiEventData;
2479 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2480
2481 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002482 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002483 ------------------------------------------------------------------------*/
2484 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2485 {
2486 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2487 "WDI API call before module is initialized - Fail request");
2488
Jeff Johnsone7245742012-09-05 17:12:55 -07002489 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002490 }
2491
2492 /*------------------------------------------------------------------------
2493 Fill in Event data and post to the Main FSM
2494 ------------------------------------------------------------------------*/
2495 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002496 wdiEventData.pEventData = pwdiDelSTAParams;
2497 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2498 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002499 wdiEventData.pUserData = pUserData;
2500
2501 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2502
2503}/*WDI_DelSTAReq*/
2504
Jeff Johnsone7245742012-09-05 17:12:55 -07002505/*========================================================================
2506
Jeff Johnson295189b2012-06-20 16:38:30 -07002507 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002508
Jeff Johnson295189b2012-06-20 16:38:30 -07002509==========================================================================*/
2510
2511/**
2512 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2513 install a BSS encryption key on the HW. Upon the call of this
2514 API the WLAN DAL will pack and send a Set BSS Key request
2515 message to the lower RIVA sub-system if DAL is in state
2516 STARTED.
2517
2518 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002519 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002520
2521 WDI_PostAssocReq must have been called.
2522
Jeff Johnsone7245742012-09-05 17:12:55 -07002523 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002524 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002525
Jeff Johnson295189b2012-06-20 16:38:30 -07002526 wdiSetBSSKeyRspCb: callback for passing back the
2527 response of the set BSS Key operation received from the
2528 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002529
Jeff Johnson295189b2012-06-20 16:38:30 -07002530 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002531 callback
2532
Jeff Johnson295189b2012-06-20 16:38:30 -07002533 @see WDI_PostAssocReq
2534 @return Result of the function call
2535*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002536WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002537WDI_SetBSSKeyReq
2538(
2539 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2540 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2541 void* pUserData
2542)
2543{
2544 WDI_EventInfoType wdiEventData;
2545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2546
2547 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002548 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002549 ------------------------------------------------------------------------*/
2550 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2551 {
2552 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2553 "WDI API call before module is initialized - Fail request");
2554
Jeff Johnsone7245742012-09-05 17:12:55 -07002555 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002556 }
2557
2558 /*------------------------------------------------------------------------
2559 Fill in Event data and post to the Main FSM
2560 ------------------------------------------------------------------------*/
2561 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002562 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2563 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2564 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002565 wdiEventData.pUserData = pUserData;
2566
2567 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2568
2569}/*WDI_SetBSSKeyReq*/
2570
2571/**
2572 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2573 uninstall a BSS key from HW. Upon the call of this API the
2574 WLAN DAL will pack and send a HAL Remove BSS Key request
2575 message to the lower RIVA sub-system if DAL is in state
2576 STARTED.
2577
2578 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002579 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002580
2581 WDI_SetBSSKeyReq must have been called.
2582
Jeff Johnsone7245742012-09-05 17:12:55 -07002583 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002584 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002585
Jeff Johnson295189b2012-06-20 16:38:30 -07002586 wdiRemoveBSSKeyRspCb: callback for passing back the
2587 response of the remove BSS key operation received from
2588 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002589
Jeff Johnson295189b2012-06-20 16:38:30 -07002590 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002591 callback
2592
Jeff Johnson295189b2012-06-20 16:38:30 -07002593 @see WDI_SetBSSKeyReq
2594 @return Result of the function call
2595*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002596WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002597WDI_RemoveBSSKeyReq
2598(
2599 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2600 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2601 void* pUserData
2602)
2603{
2604 WDI_EventInfoType wdiEventData;
2605 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2606
2607 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002608 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002609 ------------------------------------------------------------------------*/
2610 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2611 {
2612 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2613 "WDI API call before module is initialized - Fail request");
2614
Jeff Johnsone7245742012-09-05 17:12:55 -07002615 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002616 }
2617
2618 /*------------------------------------------------------------------------
2619 Fill in Event data and post to the Main FSM
2620 ------------------------------------------------------------------------*/
2621 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002622 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2623 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2624 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002625 wdiEventData.pUserData = pUserData;
2626
2627 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2628
2629}/*WDI_RemoveBSSKeyReq*/
2630
2631
2632/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002633 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002634 ready to install a STA(ast) encryption key in HW. Upon
2635 the call of this API the WLAN DAL will pack and send a
2636 HAL Set STA Key request message to the lower RIVA
2637 sub-system if DAL is in state STARTED.
2638
2639 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002640 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002641
2642 WDI_PostAssocReq must have been called.
2643
Jeff Johnsone7245742012-09-05 17:12:55 -07002644 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002645 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002646
Jeff Johnson295189b2012-06-20 16:38:30 -07002647 wdiSetSTAKeyRspCb: callback for passing back the
2648 response of the set STA key operation received from the
2649 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002650
Jeff Johnson295189b2012-06-20 16:38:30 -07002651 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002652 callback
2653
Jeff Johnson295189b2012-06-20 16:38:30 -07002654 @see WDI_PostAssocReq
2655 @return Result of the function call
2656*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002657WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002658WDI_SetSTAKeyReq
2659(
2660 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2661 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2662 void* pUserData
2663)
2664{
2665 WDI_EventInfoType wdiEventData;
2666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2667
2668 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002669 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002670 ------------------------------------------------------------------------*/
2671 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2672 {
2673 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2674 "WDI API call before module is initialized - Fail request");
2675
Jeff Johnsone7245742012-09-05 17:12:55 -07002676 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002677 }
2678
2679 /*------------------------------------------------------------------------
2680 Fill in Event data and post to the Main FSM
2681 ------------------------------------------------------------------------*/
2682 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002683 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2684 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2685 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002686 wdiEventData.pUserData = pUserData;
2687
2688 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2689
2690}/*WDI_SetSTAKeyReq*/
2691
2692
2693/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002694 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002695 wants to uninstall a previously set STA key in HW. Upon
2696 the call of this API the WLAN DAL will pack and send a
2697 HAL Remove STA Key request message to the lower RIVA
2698 sub-system if DAL is in state STARTED.
2699
2700 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002701 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002702
2703 WDI_SetSTAKeyReq must have been called.
2704
Jeff Johnsone7245742012-09-05 17:12:55 -07002705 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002706 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002707
Jeff Johnson295189b2012-06-20 16:38:30 -07002708 wdiRemoveSTAKeyRspCb: callback for passing back the
2709 response of the remove STA key operation received from
2710 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002711
Jeff Johnson295189b2012-06-20 16:38:30 -07002712 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002713 callback
2714
Jeff Johnson295189b2012-06-20 16:38:30 -07002715 @see WDI_SetSTAKeyReq
2716 @return Result of the function call
2717*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002718WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002719WDI_RemoveSTAKeyReq
2720(
2721 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2722 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2723 void* pUserData
2724)
2725{
2726 WDI_EventInfoType wdiEventData;
2727 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2728
2729 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002730 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002731 ------------------------------------------------------------------------*/
2732 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2733 {
2734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2735 "WDI API call before module is initialized - Fail request");
2736
Jeff Johnsone7245742012-09-05 17:12:55 -07002737 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002738 }
2739
2740 /*------------------------------------------------------------------------
2741 Fill in Event data and post to the Main FSM
2742 ------------------------------------------------------------------------*/
2743 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002744 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2745 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2746 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002747 wdiEventData.pUserData = pUserData;
2748
2749 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2750
2751}/*WDI_RemoveSTAKeyReq*/
2752
2753
2754/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002755 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002756 wants to install a STA Bcast encryption key on the HW.
2757 Upon the call of this API the WLAN DAL will pack and
2758 send a HAL Start request message to the lower RIVA
2759 sub-system if DAL is in state STARTED.
2760
2761 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002762 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002763
2764 WDI_PostAssocReq must have been called.
2765
Jeff Johnsone7245742012-09-05 17:12:55 -07002766 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002767 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002768
Jeff Johnson295189b2012-06-20 16:38:30 -07002769 wdiSetSTABcastKeyRspCb: callback for passing back the
2770 response of the set BSS Key operation received from the
2771 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002772
Jeff Johnson295189b2012-06-20 16:38:30 -07002773 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002774 callback
2775
Jeff Johnson295189b2012-06-20 16:38:30 -07002776 @see WDI_PostAssocReq
2777 @return Result of the function call
2778*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002779WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002780WDI_SetSTABcastKeyReq
2781(
2782 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2783 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2784 void* pUserData
2785)
2786
2787{
2788 WDI_EventInfoType wdiEventData;
2789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2790
2791 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002792 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002793 ------------------------------------------------------------------------*/
2794 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2795 {
2796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2797 "WDI API call before module is initialized - Fail request");
2798
Jeff Johnsone7245742012-09-05 17:12:55 -07002799 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002800 }
2801
2802 /*------------------------------------------------------------------------
2803 Fill in Event data and post to the Main FSM
2804 ------------------------------------------------------------------------*/
2805 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002806 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2807 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2808 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002809 wdiEventData.pUserData = pUserData;
2810
2811 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2812
2813}/*WDI_SetSTABcastKeyReq*/
2814
2815/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002816 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002817 MAC wants to uninstall a STA Bcast key from HW. Upon the
2818 call of this API the WLAN DAL will pack and send a HAL
2819 Remove STA Bcast Key request message to the lower RIVA
2820 sub-system if DAL is in state STARTED.
2821
2822 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002823 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002824
2825 WDI_SetSTABcastKeyReq must have been called.
2826
Jeff Johnsone7245742012-09-05 17:12:55 -07002827 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002828 parameters as specified by the Device
2829 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002830
Jeff Johnson295189b2012-06-20 16:38:30 -07002831 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2832 response of the remove STA Bcast key operation received
2833 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002834
Jeff Johnson295189b2012-06-20 16:38:30 -07002835 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002836 callback
2837
Jeff Johnson295189b2012-06-20 16:38:30 -07002838 @see WDI_SetSTABcastKeyReq
2839 @return Result of the function call
2840*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002841WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002842WDI_RemoveSTABcastKeyReq
2843(
2844 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2845 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2846 void* pUserData
2847)
2848{
2849 WDI_EventInfoType wdiEventData;
2850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2851
2852 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002853 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002854 ------------------------------------------------------------------------*/
2855 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2856 {
2857 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2858 "WDI API call before module is initialized - Fail request");
2859
Jeff Johnsone7245742012-09-05 17:12:55 -07002860 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002861 }
2862
2863 /*------------------------------------------------------------------------
2864 Fill in Event data and post to the Main FSM
2865 ------------------------------------------------------------------------*/
2866 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002867 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2868 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2869 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002870 wdiEventData.pUserData = pUserData;
2871
2872 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2873
2874}/*WDI_RemoveSTABcastKeyReq*/
2875
2876/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002877 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002878 MAC wants to set Max Tx Power to HW. Upon the
2879 call of this API the WLAN DAL will pack and send a HAL
2880 Remove STA Bcast Key request message to the lower RIVA
2881 sub-system if DAL is in state STARTED.
2882
2883 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002884 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002885
2886 WDI_SetSTABcastKeyReq must have been called.
2887
Jeff Johnsone7245742012-09-05 17:12:55 -07002888 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002889 parameters as specified by the Device
2890 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002891
Jeff Johnson295189b2012-06-20 16:38:30 -07002892 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2893 response of the remove STA Bcast key operation received
2894 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002895
Jeff Johnson295189b2012-06-20 16:38:30 -07002896 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002897 callback
2898
Jeff Johnson295189b2012-06-20 16:38:30 -07002899 @see WDI_SetMaxTxPowerReq
2900 @return Result of the function call
2901*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002902WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002903WDI_SetMaxTxPowerReq
2904(
2905 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2906 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2907 void* pUserData
2908)
2909{
2910 WDI_EventInfoType wdiEventData;
2911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2912
2913 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002914 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002915 ------------------------------------------------------------------------*/
2916 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2917 {
2918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2919 "WDI API call before module is initialized - Fail request");
2920
Jeff Johnsone7245742012-09-05 17:12:55 -07002921 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002922 }
2923
2924 /*------------------------------------------------------------------------
2925 Fill in Event data and post to the Main FSM
2926 ------------------------------------------------------------------------*/
2927 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002928 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2929 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2930 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002931 wdiEventData.pUserData = pUserData;
2932
2933 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2934}
2935
schang86c22c42013-03-13 18:41:24 -07002936/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07002937 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
2938 MAC wants to set Max Tx Power to HW for specific band.
2939
2940 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
2941
2942 wdiReqStatusCb: callback for passing back the
2943 response msg from the device
2944
2945 pUserData: user data will be passed back with the
2946 callback
2947
2948 @see WDI_SetMaxTxPowerPerBandReq
2949 @return Result of the function call
2950*/
2951WDI_Status
2952WDI_SetMaxTxPowerPerBandReq
2953(
2954 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
2955 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
2956 void* pUserData
2957)
2958{
2959 WDI_EventInfoType wdiEventData;
2960 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2961
2962 /*------------------------------------------------------------------------
2963 Sanity Check
2964 ------------------------------------------------------------------------*/
2965 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2966 {
2967 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2968 "WDI API call before module is initialized - Fail request");
2969
2970 return WDI_STATUS_E_NOT_ALLOWED;
2971 }
2972
2973 /*------------------------------------------------------------------------
2974 Fill in Event data and post to the Main FSM
2975 ------------------------------------------------------------------------*/
2976 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
2977 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
2978 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
2979 wdiEventData.pCBfnc = wdiReqStatusCb;
2980 wdiEventData.pUserData = pUserData;
2981
2982 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2983}
2984
2985/**
schang86c22c42013-03-13 18:41:24 -07002986 @brief WDI_SetTxPowerReq will be called when the upper
2987 MAC wants to set Tx Power to HW.
2988 In state BUSY this request will be queued. Request won't
2989 be allowed in any other state.
2990
2991
2992 @param pwdiSetTxPowerParams: set TS Power parameters
2993 BSSID and target TX Power with dbm included
2994
2995 wdiReqStatusCb: callback for passing back the response
2996
2997 pUserData: user data will be passed back with the
2998 callback
2999
3000 @return Result of the function call
3001*/
3002WDI_Status
3003WDI_SetTxPowerReq
3004(
3005 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3006 WDA_SetTxPowerRspCb wdiReqStatusCb,
3007 void* pUserData
3008)
3009{
3010 WDI_EventInfoType wdiEventData;
3011 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3012
3013 /*------------------------------------------------------------------------
3014 Sanity Check
3015 ------------------------------------------------------------------------*/
3016 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3017 {
3018 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3019 "WDI API call before module is initialized - Fail request");
3020
3021 return WDI_STATUS_E_NOT_ALLOWED;
3022 }
3023
3024 /*------------------------------------------------------------------------
3025 Fill in Event data and post to the Main FSM
3026 ------------------------------------------------------------------------*/
3027 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3028 wdiEventData.pEventData = pwdiSetTxPowerParams;
3029 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3030 wdiEventData.pCBfnc = wdiReqStatusCb;
3031 wdiEventData.pUserData = pUserData;
3032
3033 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3034}
3035
Jeff Johnson295189b2012-06-20 16:38:30 -07003036#ifdef FEATURE_WLAN_CCX
3037WDI_Status
3038WDI_TSMStatsReq
3039(
3040 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3041 WDI_TsmRspCb wdiReqStatusCb,
3042 void* pUserData
3043)
3044{
3045 WDI_EventInfoType wdiEventData;
3046 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003047 /*------------------------------------------------------------------------
3048 Sanity Check
3049 ------------------------------------------------------------------------*/
3050 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3051 {
3052 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3053 "WDI API call before module is initialized - Fail request");
3054
3055 return WDI_STATUS_E_NOT_ALLOWED;
3056 }
3057
3058 /*------------------------------------------------------------------------
3059 Fill in Event data and post to the Main FSM
3060 ------------------------------------------------------------------------*/
3061 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3062 wdiEventData.pEventData = pwdiTsmReqParams;
3063 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3064 wdiEventData.pCBfnc = wdiReqStatusCb;
3065 wdiEventData.pUserData = pUserData;
3066
3067 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3068
3069}
3070#endif
3071
3072/*========================================================================
3073
3074 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003075
Jeff Johnson295189b2012-06-20 16:38:30 -07003076==========================================================================*/
3077
3078/**
3079 @brief WDI_AddTSReq will be called when the upper MAC to inform
3080 the device of a successful add TSpec negotiation. HW
3081 needs to receive the TSpec Info from the UMAC in order
3082 to configure properly the QoS data traffic. Upon the
3083 call of this API the WLAN DAL will pack and send a HAL
3084 Add TS request message to the lower RIVA sub-system if
3085 DAL is in state STARTED.
3086
3087 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003088 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003089
3090 WDI_PostAssocReq must have been called.
3091
3092 @param wdiAddTsReqParams: the add TS parameters as specified by
3093 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003094
Jeff Johnson295189b2012-06-20 16:38:30 -07003095 wdiAddTsRspCb: callback for passing back the response of
3096 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003097
Jeff Johnson295189b2012-06-20 16:38:30 -07003098 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003099 callback
3100
Jeff Johnson295189b2012-06-20 16:38:30 -07003101 @see WDI_PostAssocReq
3102 @return Result of the function call
3103*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003104WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003105WDI_AddTSReq
3106(
3107 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3108 WDI_AddTsRspCb wdiAddTsRspCb,
3109 void* pUserData
3110)
3111{
3112 WDI_EventInfoType wdiEventData;
3113 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3114
3115 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003116 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003117 ------------------------------------------------------------------------*/
3118 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3119 {
3120 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3121 "WDI API call before module is initialized - Fail request");
3122
Jeff Johnsone7245742012-09-05 17:12:55 -07003123 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003124 }
3125
3126 /*------------------------------------------------------------------------
3127 Fill in Event data and post to the Main FSM
3128 ------------------------------------------------------------------------*/
3129 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003130 wdiEventData.pEventData = pwdiAddTsReqParams;
3131 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3132 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003133 wdiEventData.pUserData = pUserData;
3134
3135 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3136
3137}/*WDI_AddTSReq*/
3138
3139
3140
3141/**
3142 @brief WDI_DelTSReq will be called when the upper MAC has ended
3143 admission on a specific AC. This is to inform HW that
3144 QoS traffic parameters must be rest. Upon the call of
3145 this API the WLAN DAL will pack and send a HAL Del TS
3146 request message to the lower RIVA sub-system if DAL is
3147 in state STARTED.
3148
3149 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003150 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003151
3152 WDI_AddTSReq must have been called.
3153
3154 @param wdiDelTsReqParams: the del TS parameters as specified by
3155 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003156
Jeff Johnson295189b2012-06-20 16:38:30 -07003157 wdiDelTsRspCb: callback for passing back the response of
3158 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003159
Jeff Johnson295189b2012-06-20 16:38:30 -07003160 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003161 callback
3162
Jeff Johnson295189b2012-06-20 16:38:30 -07003163 @see WDI_AddTSReq
3164 @return Result of the function call
3165*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003166WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003167WDI_DelTSReq
3168(
3169 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3170 WDI_DelTsRspCb wdiDelTsRspCb,
3171 void* pUserData
3172)
3173{
3174 WDI_EventInfoType wdiEventData;
3175 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3176
3177 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003178 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003179 ------------------------------------------------------------------------*/
3180 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3181 {
3182 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3183 "WDI API call before module is initialized - Fail request");
3184
Jeff Johnsone7245742012-09-05 17:12:55 -07003185 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003186 }
3187
3188 /*------------------------------------------------------------------------
3189 Fill in Event data and post to the Main FSM
3190 ------------------------------------------------------------------------*/
3191 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003192 wdiEventData.pEventData = pwdiDelTsReqParams;
3193 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3194 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003195 wdiEventData.pUserData = pUserData;
3196
3197 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3198
3199}/*WDI_DelTSReq*/
3200
3201
3202
3203/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003204 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003205 wishes to update the EDCA parameters used by HW for QoS
3206 data traffic. Upon the call of this API the WLAN DAL
3207 will pack and send a HAL Update EDCA Params request
3208 message to the lower RIVA sub-system if DAL is in state
3209 STARTED.
3210
3211 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003212 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003213
3214 WDI_PostAssocReq must have been called.
3215
Jeff Johnsone7245742012-09-05 17:12:55 -07003216 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003217 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003218
Jeff Johnson295189b2012-06-20 16:38:30 -07003219 wdiUpdateEDCAParamsRspCb: callback for passing back the
3220 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003221
Jeff Johnson295189b2012-06-20 16:38:30 -07003222 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003223 callback
3224
Jeff Johnson295189b2012-06-20 16:38:30 -07003225 @see WDI_PostAssocReq
3226 @return Result of the function call
3227*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003228WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003229WDI_UpdateEDCAParams
3230(
3231 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3232 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3233 void* pUserData
3234)
3235{
3236 WDI_EventInfoType wdiEventData;
3237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3238
3239 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003240 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003241 ------------------------------------------------------------------------*/
3242 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3243 {
3244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3245 "WDI API call before module is initialized - Fail request");
3246
Jeff Johnsone7245742012-09-05 17:12:55 -07003247 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003248 }
3249
3250 /*------------------------------------------------------------------------
3251 Fill in Event data and post to the Main FSM
3252 ------------------------------------------------------------------------*/
3253 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003254 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3255 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3256 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003257 wdiEventData.pUserData = pUserData;
3258
3259 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3260
3261}/*WDI_UpdateEDCAParams*/
3262
3263
3264/**
3265 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3266 successfully a BA session and needs to notify the HW for
3267 the appropriate settings to take place. Upon the call of
3268 this API the WLAN DAL will pack and send a HAL Add BA
3269 request message to the lower RIVA sub-system if DAL is
3270 in state STARTED.
3271
3272 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003273 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003274
3275 WDI_PostAssocReq must have been called.
3276
3277 @param wdiAddBAReqParams: the add BA parameters as specified by
3278 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003279
Jeff Johnson295189b2012-06-20 16:38:30 -07003280 wdiAddBARspCb: callback for passing back the response of
3281 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003282
Jeff Johnson295189b2012-06-20 16:38:30 -07003283 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003284 callback
3285
Jeff Johnson295189b2012-06-20 16:38:30 -07003286 @see WDI_PostAssocReq
3287 @return Result of the function call
3288*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003289WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003290WDI_AddBASessionReq
3291(
3292 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3293 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3294 void* pUserData
3295)
3296{
3297 WDI_EventInfoType wdiEventData;
3298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3299
3300 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003301 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003302 ------------------------------------------------------------------------*/
3303 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3304 {
3305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3306 "WDI API call before module is initialized - Fail request");
3307
Jeff Johnsone7245742012-09-05 17:12:55 -07003308 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003309 }
3310
3311 /*------------------------------------------------------------------------
3312 Fill in Event data and post to the Main FSM
3313 ------------------------------------------------------------------------*/
3314 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003315 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3316 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3317 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003318 wdiEventData.pUserData = pUserData;
3319
3320 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3321
3322}/*WDI_AddBASessionReq*/
3323
3324/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003325 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003326 inform HW that it has deleted a previously created BA
3327 session. Upon the call of this API the WLAN DAL will
3328 pack and send a HAL Del BA request message to the lower
3329 RIVA sub-system if DAL is in state STARTED.
3330
3331 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003332 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003333
3334 WDI_AddBAReq must have been called.
3335
3336 @param wdiDelBAReqParams: the del BA parameters as specified by
3337 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003338
Jeff Johnson295189b2012-06-20 16:38:30 -07003339 wdiDelBARspCb: callback for passing back the response of
3340 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003341
Jeff Johnson295189b2012-06-20 16:38:30 -07003342 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003343 callback
3344
Jeff Johnson295189b2012-06-20 16:38:30 -07003345 @see WDI_AddBAReq
3346 @return Result of the function call
3347*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003348WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003349WDI_DelBAReq
3350(
3351 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3352 WDI_DelBARspCb wdiDelBARspCb,
3353 void* pUserData
3354)
3355{
3356 WDI_EventInfoType wdiEventData;
3357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3358
3359 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003360 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003361 ------------------------------------------------------------------------*/
3362 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3363 {
3364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3365 "WDI API call before module is initialized - Fail request");
3366
Jeff Johnsone7245742012-09-05 17:12:55 -07003367 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003368 }
3369
3370 /*------------------------------------------------------------------------
3371 Fill in Event data and post to the Main FSM
3372 ------------------------------------------------------------------------*/
3373 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003374 wdiEventData.pEventData = pwdiDelBAReqParams;
3375 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3376 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003377 wdiEventData.pUserData = pUserData;
3378
3379 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3380
3381}/*WDI_DelBAReq*/
3382
Jeff Johnsone7245742012-09-05 17:12:55 -07003383/*========================================================================
3384
Jeff Johnson295189b2012-06-20 16:38:30 -07003385 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003386
Jeff Johnson295189b2012-06-20 16:38:30 -07003387==========================================================================*/
3388
3389/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003390 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003391 wants to set the power save related configurations of
3392 the WLAN Device. Upon the call of this API the WLAN DAL
3393 will pack and send a HAL Update CFG request message to
3394 the lower RIVA sub-system if DAL is in state STARTED.
3395
3396 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003397 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003398
3399 WDI_Start must have been called.
3400
Jeff Johnsone7245742012-09-05 17:12:55 -07003401 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003402 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003403
Jeff Johnson295189b2012-06-20 16:38:30 -07003404 wdiSetPwrSaveCfgCb: callback for passing back the
3405 response of the set power save cfg operation received
3406 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003407
Jeff Johnson295189b2012-06-20 16:38:30 -07003408 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003409 callback
3410
Jeff Johnson295189b2012-06-20 16:38:30 -07003411 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003412 @return Result of the function call
3413*/
3414WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003415WDI_SetPwrSaveCfgReq
3416(
3417 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3418 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3419 void* pUserData
3420)
3421{
3422 WDI_EventInfoType wdiEventData;
3423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3424
3425 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003426 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003427 ------------------------------------------------------------------------*/
3428 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3429 {
3430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3431 "WDI API call before module is initialized - Fail request");
3432
Jeff Johnsone7245742012-09-05 17:12:55 -07003433 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003434 }
3435
3436 /*------------------------------------------------------------------------
3437 Fill in Event data and post to the Main FSM
3438 ------------------------------------------------------------------------*/
3439 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003440 wdiEventData.pEventData = pwdiPowerSaveCfg;
3441 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3442 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003443 wdiEventData.pUserData = pUserData;
3444
3445 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3446
3447}/*WDI_SetPwrSaveCfgReq*/
3448
3449/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003450 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003451 request the device to get into IMPS power state. Upon
3452 the call of this API the WLAN DAL will send a HAL Enter
3453 IMPS request message to the lower RIVA sub-system if DAL
3454 is in state STARTED.
3455
3456 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003457 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003458
Jeff Johnsone7245742012-09-05 17:12:55 -07003459
3460 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003461 response of the Enter IMPS operation received from the
3462 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003463
Jeff Johnson295189b2012-06-20 16:38:30 -07003464 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003465 callback
3466
Jeff Johnson295189b2012-06-20 16:38:30 -07003467 @see WDI_Start
3468 @return Result of the function call
3469*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003470WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003471WDI_EnterImpsReq
3472(
3473 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3474 void* pUserData
3475)
3476{
3477 WDI_EventInfoType wdiEventData;
3478 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3479
3480 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003481 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003482 ------------------------------------------------------------------------*/
3483 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3484 {
3485 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3486 "WDI API call before module is initialized - Fail request");
3487
Jeff Johnsone7245742012-09-05 17:12:55 -07003488 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003489 }
3490
3491 /*------------------------------------------------------------------------
3492 Fill in Event data and post to the Main FSM
3493 ------------------------------------------------------------------------*/
3494 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003495 wdiEventData.pEventData = NULL;
3496 wdiEventData.uEventDataSize = 0;
3497 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003498 wdiEventData.pUserData = pUserData;
3499
3500 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3501
3502}/*WDI_EnterImpsReq*/
3503
3504/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003505 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003506 request the device to get out of IMPS power state. Upon
3507 the call of this API the WLAN DAL will send a HAL Exit
3508 IMPS request message to the lower RIVA sub-system if DAL
3509 is in state STARTED.
3510
3511 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003512 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003513
Jeff Johnson295189b2012-06-20 16:38:30 -07003514
Jeff Johnsone7245742012-09-05 17:12:55 -07003515
3516 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003517 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003518
Jeff Johnson295189b2012-06-20 16:38:30 -07003519 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003520 callback
3521
Jeff Johnson295189b2012-06-20 16:38:30 -07003522 @see WDI_Start
3523 @return Result of the function call
3524*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003525WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003526WDI_ExitImpsReq
3527(
3528 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3529 void* pUserData
3530)
3531{
3532 WDI_EventInfoType wdiEventData;
3533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3534
3535 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003536 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003537 ------------------------------------------------------------------------*/
3538 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3539 {
3540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3541 "WDI API call before module is initialized - Fail request");
3542
Jeff Johnsone7245742012-09-05 17:12:55 -07003543 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003544 }
3545
3546 /*------------------------------------------------------------------------
3547 Fill in Event data and post to the Main FSM
3548 ------------------------------------------------------------------------*/
3549 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003550 wdiEventData.pEventData = NULL;
3551 wdiEventData.uEventDataSize = 0;
3552 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003553 wdiEventData.pUserData = pUserData;
3554
3555 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3556
3557}/*WDI_ExitImpsReq*/
3558
3559/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003560 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003561 request the device to get into BMPS power state. Upon
3562 the call of this API the WLAN DAL will pack and send a
3563 HAL Enter BMPS request message to the lower RIVA
3564 sub-system if DAL is in state STARTED.
3565
3566 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003567 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003568
3569 WDI_PostAssocReq must have been called.
3570
Jeff Johnsone7245742012-09-05 17:12:55 -07003571 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003572 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003573
Jeff Johnson295189b2012-06-20 16:38:30 -07003574 wdiEnterBmpsRspCb: callback for passing back the
3575 response of the Enter BMPS operation received from the
3576 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003577
Jeff Johnson295189b2012-06-20 16:38:30 -07003578 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003579 callback
3580
Jeff Johnson295189b2012-06-20 16:38:30 -07003581 @see WDI_PostAssocReq
3582 @return Result of the function call
3583*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003584WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003585WDI_EnterBmpsReq
3586(
3587 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3588 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3589 void* pUserData
3590)
3591{
3592 WDI_EventInfoType wdiEventData;
3593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3594
3595 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003596 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003597 ------------------------------------------------------------------------*/
3598 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3599 {
3600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3601 "WDI API call before module is initialized - Fail request");
3602
Jeff Johnsone7245742012-09-05 17:12:55 -07003603 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003604 }
3605
3606 /*------------------------------------------------------------------------
3607 Fill in Event data and post to the Main FSM
3608 ------------------------------------------------------------------------*/
3609 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003610 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3611 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3612 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003613 wdiEventData.pUserData = pUserData;
3614
3615 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3616
3617}/*WDI_EnterBmpsReq*/
3618
3619/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003620 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003621 request the device to get out of BMPS power state. Upon
3622 the call of this API the WLAN DAL will pack and send a
3623 HAL Exit BMPS request message to the lower RIVA
3624 sub-system if DAL is in state STARTED.
3625
3626 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003627 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003628
3629 WDI_PostAssocReq must have been called.
3630
Jeff Johnsone7245742012-09-05 17:12:55 -07003631 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003632 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003633
Jeff Johnson295189b2012-06-20 16:38:30 -07003634 wdiExitBmpsRspCb: callback for passing back the response
3635 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003636
Jeff Johnson295189b2012-06-20 16:38:30 -07003637 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003638 callback
3639
Jeff Johnson295189b2012-06-20 16:38:30 -07003640 @see WDI_PostAssocReq
3641 @return Result of the function call
3642*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003643WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003644WDI_ExitBmpsReq
3645(
3646 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3647 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3648 void* pUserData
3649)
3650{
3651 WDI_EventInfoType wdiEventData;
3652 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3653
3654 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003655 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003656 ------------------------------------------------------------------------*/
3657 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3658 {
3659 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3660 "WDI API call before module is initialized - Fail request");
3661
Jeff Johnsone7245742012-09-05 17:12:55 -07003662 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003663 }
3664
3665 /*------------------------------------------------------------------------
3666 Fill in Event data and post to the Main FSM
3667 ------------------------------------------------------------------------*/
3668 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003669 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3670 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3671 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003672 wdiEventData.pUserData = pUserData;
3673
3674 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3675
3676}/*WDI_ExitBmpsReq*/
3677
3678/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003679 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003680 request the device to get into UAPSD power state. Upon
3681 the call of this API the WLAN DAL will pack and send a
3682 HAL Enter UAPSD request message to the lower RIVA
3683 sub-system if DAL is in state STARTED.
3684
3685 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003686 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003687
3688 WDI_PostAssocReq must have been called.
3689 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003690
3691 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003692 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003693
Jeff Johnson295189b2012-06-20 16:38:30 -07003694 wdiEnterUapsdRspCb: callback for passing back the
3695 response of the Enter UAPSD operation received from the
3696 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003697
Jeff Johnson295189b2012-06-20 16:38:30 -07003698 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003699 callback
3700
Jeff Johnson295189b2012-06-20 16:38:30 -07003701 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3702 @return Result of the function call
3703*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003704WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003705WDI_EnterUapsdReq
3706(
3707 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3708 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3709 void* pUserData
3710)
3711{
3712 WDI_EventInfoType wdiEventData;
3713 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3714
3715 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003716 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003717 ------------------------------------------------------------------------*/
3718 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3719 {
3720 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3721 "WDI API call before module is initialized - Fail request");
3722
Jeff Johnsone7245742012-09-05 17:12:55 -07003723 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003724 }
3725
3726 /*------------------------------------------------------------------------
3727 Fill in Event data and post to the Main FSM
3728 ------------------------------------------------------------------------*/
3729 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003730 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3731 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3732 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003733 wdiEventData.pUserData = pUserData;
3734
3735 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3736
3737}/*WDI_EnterUapsdReq*/
3738
3739/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003740 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003741 request the device to get out of UAPSD power state. Upon
3742 the call of this API the WLAN DAL will send a HAL Exit
3743 UAPSD request message to the lower RIVA sub-system if
3744 DAL is in state STARTED.
3745
3746 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003747 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003748
3749 WDI_PostAssocReq must have been called.
3750
Jeff Johnsone7245742012-09-05 17:12:55 -07003751 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003752 response of the Exit UAPSD operation received from the
3753 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003754
Jeff Johnson295189b2012-06-20 16:38:30 -07003755 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003756 callback
3757
Jeff Johnson295189b2012-06-20 16:38:30 -07003758 @see WDI_PostAssocReq
3759 @return Result of the function call
3760*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003761WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003762WDI_ExitUapsdReq
3763(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003764 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003765 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3766 void* pUserData
3767)
3768{
3769 WDI_EventInfoType wdiEventData;
3770 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3771
3772 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003773 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003774 ------------------------------------------------------------------------*/
3775 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3776 {
3777 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3778 "WDI API call before module is initialized - Fail request");
3779
Jeff Johnsone7245742012-09-05 17:12:55 -07003780 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003781 }
3782
3783 /*------------------------------------------------------------------------
3784 Fill in Event data and post to the Main FSM
3785 ------------------------------------------------------------------------*/
3786 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003787 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3788 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003789 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003790 wdiEventData.pUserData = pUserData;
3791
3792 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3793
3794}/*WDI_ExitUapsdReq*/
3795
3796/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003797 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003798 MAC wants to set the UAPSD related configurations
3799 of an associated STA (while acting as an AP) to the WLAN
3800 Device. Upon the call of this API the WLAN DAL will pack
3801 and send a HAL Update UAPSD params request message to
3802 the lower RIVA sub-system if DAL is in state STARTED.
3803
3804 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003805 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003806
3807 WDI_ConfigBSSReq must have been called.
3808
Jeff Johnsone7245742012-09-05 17:12:55 -07003809 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003810 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003811
Jeff Johnson295189b2012-06-20 16:38:30 -07003812 wdiUpdateUapsdParamsCb: callback for passing back the
3813 response of the update UAPSD params operation received
3814 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003815
Jeff Johnson295189b2012-06-20 16:38:30 -07003816 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003817 callback
3818
Jeff Johnson295189b2012-06-20 16:38:30 -07003819 @see WDI_ConfigBSSReq
3820 @return Result of the function call
3821*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003822WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003823WDI_UpdateUapsdParamsReq
3824(
3825 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3826 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3827 void* pUserData
3828)
3829{
3830 WDI_EventInfoType wdiEventData;
3831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3832
3833 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003834 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003835 ------------------------------------------------------------------------*/
3836 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3837 {
3838 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3839 "WDI API call before module is initialized - Fail request");
3840
Jeff Johnsone7245742012-09-05 17:12:55 -07003841 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003842 }
3843
3844 /*------------------------------------------------------------------------
3845 Fill in Event data and post to the Main FSM
3846 ------------------------------------------------------------------------*/
3847 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003848 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003849 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003850 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003851 wdiEventData.pUserData = pUserData;
3852
3853 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3854
3855}/*WDI_UpdateUapsdParamsReq*/
3856
3857/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003858 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003859 MAC wants to set the UAPSD related configurations before
3860 requesting for enter UAPSD power state to the WLAN
3861 Device. Upon the call of this API the WLAN DAL will pack
3862 and send a HAL Set UAPSD params request message to
3863 the lower RIVA sub-system if DAL is in state STARTED.
3864
3865 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003866 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003867
3868 WDI_PostAssocReq must have been called.
3869
3870 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3871 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003872
Jeff Johnson295189b2012-06-20 16:38:30 -07003873 wdiSetUapsdAcParamsCb: callback for passing back the
3874 response of the set UAPSD params operation received from
3875 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003876
Jeff Johnson295189b2012-06-20 16:38:30 -07003877 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003878 callback
3879
Jeff Johnson295189b2012-06-20 16:38:30 -07003880 @see WDI_PostAssocReq
3881 @return Result of the function call
3882*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003883WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003884WDI_SetUapsdAcParamsReq
3885(
3886 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3887 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3888 void* pUserData
3889)
3890{
3891 WDI_EventInfoType wdiEventData;
3892 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3893
3894 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003895 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003896 ------------------------------------------------------------------------*/
3897 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3898 {
3899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3900 "WDI API call before module is initialized - Fail request");
3901
Jeff Johnsone7245742012-09-05 17:12:55 -07003902 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003903 }
3904
3905 /*------------------------------------------------------------------------
3906 Fill in Event data and post to the Main FSM
3907 ------------------------------------------------------------------------*/
3908 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003909 wdiEventData.pEventData = pwdiUapsdInfo;
3910 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3911 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003912 wdiEventData.pUserData = pUserData;
3913
3914 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3915
3916}/*WDI_SetUapsdAcParamsReq*/
3917
3918/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003919 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003920 MAC wants to set/reset the RXP filters for received pkts
3921 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3922 and send a HAL configure RXP filter request message to
3923 the lower RIVA sub-system.
3924
3925 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003926 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003927
Jeff Johnsone7245742012-09-05 17:12:55 -07003928
3929 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003930 filter as specified by the Device
3931 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003932
Jeff Johnson295189b2012-06-20 16:38:30 -07003933 wdiConfigureRxpFilterCb: callback for passing back the
3934 response of the configure RXP filter operation received
3935 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003936
Jeff Johnson295189b2012-06-20 16:38:30 -07003937 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003938 callback
3939
Jeff Johnson295189b2012-06-20 16:38:30 -07003940 @return Result of the function call
3941*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003942WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003943WDI_ConfigureRxpFilterReq
3944(
3945 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3946 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3947 void* pUserData
3948)
3949{
3950 WDI_EventInfoType wdiEventData;
3951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3952
3953 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003954 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003955 ------------------------------------------------------------------------*/
3956 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3957 {
3958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3959 "WDI API call before module is initialized - Fail request");
3960
Jeff Johnsone7245742012-09-05 17:12:55 -07003961 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003962 }
3963
3964 /*------------------------------------------------------------------------
3965 Fill in Event data and post to the Main FSM
3966 ------------------------------------------------------------------------*/
3967 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003968 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3969 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3970 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003971 wdiEventData.pUserData = pUserData;
3972
3973 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3974}/*WDI_ConfigureRxpFilterReq*/
3975
3976/**
3977 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3978 wants to set the beacon filters while in power save.
3979 Upon the call of this API the WLAN DAL will pack and
3980 send a Beacon filter request message to the
3981 lower RIVA sub-system.
3982
3983 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003984 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003985
Jeff Johnsone7245742012-09-05 17:12:55 -07003986
3987 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003988 filter as specified by the Device
3989 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003990
Jeff Johnson295189b2012-06-20 16:38:30 -07003991 wdiBeaconFilterCb: callback for passing back the
3992 response of the set beacon filter operation received
3993 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003994
Jeff Johnson295189b2012-06-20 16:38:30 -07003995 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003996 callback
3997
Jeff Johnson295189b2012-06-20 16:38:30 -07003998 @return Result of the function call
3999*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004000WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004001WDI_SetBeaconFilterReq
4002(
4003 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4004 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4005 void* pUserData
4006)
4007{
4008 WDI_EventInfoType wdiEventData;
4009 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4010
4011 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004012 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004013 ------------------------------------------------------------------------*/
4014 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4015 {
4016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4017 "WDI API call before module is initialized - Fail request");
4018
Jeff Johnsone7245742012-09-05 17:12:55 -07004019 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004020 }
4021
4022 /*------------------------------------------------------------------------
4023 Fill in Event data and post to the Main FSM
4024 ------------------------------------------------------------------------*/
4025 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004026 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004027 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004028 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004029 wdiEventData.pUserData = pUserData;
4030
4031 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4032}/*WDI_SetBeaconFilterReq*/
4033
4034/**
4035 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4036 wants to remove the beacon filter for particular IE
4037 while in power save. Upon the call of this API the WLAN
4038 DAL will pack and send a remove Beacon filter request
4039 message to the lower RIVA sub-system.
4040
4041 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004042 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004043
Jeff Johnsone7245742012-09-05 17:12:55 -07004044
4045 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004046 filter as specified by the Device
4047 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004048
Jeff Johnson295189b2012-06-20 16:38:30 -07004049 wdiBeaconFilterCb: callback for passing back the
4050 response of the remove beacon filter operation received
4051 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004052
Jeff Johnson295189b2012-06-20 16:38:30 -07004053 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004054 callback
4055
Jeff Johnson295189b2012-06-20 16:38:30 -07004056 @return Result of the function call
4057*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004058WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004059WDI_RemBeaconFilterReq
4060(
4061 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4062 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
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_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004084 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004085 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004086 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004087 wdiEventData.pUserData = pUserData;
4088
4089 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4090}/*WDI_RemBeaconFilterReq*/
4091
4092/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004093 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004094 MAC wants to set the RSSI thresholds related
4095 configurations while in power save. Upon the call of
4096 this API the WLAN DAL will pack and send a HAL Set RSSI
4097 thresholds request message to the lower RIVA
4098 sub-system if DAL is in state STARTED.
4099
4100 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004101 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004102
4103 WDI_PostAssocReq must have been called.
4104
4105 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4106 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004107
Jeff Johnson295189b2012-06-20 16:38:30 -07004108 wdiSetUapsdAcParamsCb: callback for passing back the
4109 response of the set UAPSD params operation received from
4110 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004111
Jeff Johnson295189b2012-06-20 16:38:30 -07004112 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004113 callback
4114
Jeff Johnson295189b2012-06-20 16:38:30 -07004115 @see WDI_PostAssocReq
4116 @return Result of the function call
4117*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004118WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004119WDI_SetRSSIThresholdsReq
4120(
4121 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4122 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4123 void* pUserData
4124)
4125{
4126 WDI_EventInfoType wdiEventData;
4127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4128
4129 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004130 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004131 ------------------------------------------------------------------------*/
4132 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4133 {
4134 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4135 "WDI API call before module is initialized - Fail request");
4136
Jeff Johnsone7245742012-09-05 17:12:55 -07004137 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004138 }
4139
4140 /*------------------------------------------------------------------------
4141 Fill in Event data and post to the Main FSM
4142 ------------------------------------------------------------------------*/
4143 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004144 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004145 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004146 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004147 wdiEventData.pUserData = pUserData;
4148
4149 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4150}/* WDI_SetRSSIThresholdsReq*/
4151
4152/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004153 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004154 wants to set the filter to minimize unnecessary host
4155 wakeup due to broadcast traffic while in power save.
4156 Upon the call of this API the WLAN DAL will pack and
4157 send a HAL host offload request message to the
4158 lower RIVA sub-system if DAL is in state STARTED.
4159
4160 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004161 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004162
4163 WDI_PostAssocReq must have been called.
4164
Jeff Johnsone7245742012-09-05 17:12:55 -07004165 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004166 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004167
Jeff Johnson295189b2012-06-20 16:38:30 -07004168 wdiHostOffloadCb: callback for passing back the response
4169 of the host offload operation received from the
4170 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004171
Jeff Johnson295189b2012-06-20 16:38:30 -07004172 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004173 callback
4174
Jeff Johnson295189b2012-06-20 16:38:30 -07004175 @see WDI_PostAssocReq
4176 @return Result of the function call
4177*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004178WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004179WDI_HostOffloadReq
4180(
4181 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4182 WDI_HostOffloadCb wdiHostOffloadCb,
4183 void* pUserData
4184)
4185{
4186 WDI_EventInfoType wdiEventData;
4187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4188
4189 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004190 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004191 ------------------------------------------------------------------------*/
4192 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4193 {
4194 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4195 "WDI API call before module is initialized - Fail request");
4196
Jeff Johnsone7245742012-09-05 17:12:55 -07004197 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004198 }
4199
4200 /*------------------------------------------------------------------------
4201 Fill in Event data and post to the Main FSM
4202 ------------------------------------------------------------------------*/
4203 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004204 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004205 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004206 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004207 wdiEventData.pUserData = pUserData;
4208
4209 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4210}/*WDI_HostOffloadReq*/
4211
4212/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004213 @brief WDI_KeepAliveReq will be called when the upper MAC
4214 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004215 and minimize unnecessary host wakeups due to while in power save.
4216 Upon the call of this API the WLAN DAL will pack and
4217 send a HAL Keep Alive request message to the
4218 lower RIVA sub-system if DAL is in state STARTED.
4219
4220 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004221 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004222
4223 WDI_PostAssocReq must have been called.
4224
Jeff Johnsone7245742012-09-05 17:12:55 -07004225 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004226 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004227
Jeff Johnson295189b2012-06-20 16:38:30 -07004228 wdiKeepAliveCb: callback for passing back the response
4229 of the Keep Alive operation received from the
4230 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004231
Jeff Johnson295189b2012-06-20 16:38:30 -07004232 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004233 callback
4234
Jeff Johnson295189b2012-06-20 16:38:30 -07004235 @see WDI_PostAssocReq
4236 @return Result of the function call
4237*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004238WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004239WDI_KeepAliveReq
4240(
4241 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4242 WDI_KeepAliveCb wdiKeepAliveCb,
4243 void* pUserData
4244)
4245{
4246 WDI_EventInfoType wdiEventData;
4247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4248
4249 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004250 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004251 ------------------------------------------------------------------------*/
4252 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4253 {
4254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4255 "WDI_KeepAliveReq: WDI API call before module "
4256 "is initialized - Fail request");
4257
Jeff Johnsone7245742012-09-05 17:12:55 -07004258 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004259 }
4260
4261 /*------------------------------------------------------------------------
4262 Fill in Event data and post to the Main FSM
4263 ------------------------------------------------------------------------*/
4264 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004265 wdiEventData.pEventData = pwdiKeepAliveParams;
4266 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4267 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004268 wdiEventData.pUserData = pUserData;
4269
4270 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4271}/*WDI_KeepAliveReq*/
4272
4273/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004274 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004275 wants to set the Wowl Bcast ptrn to minimize unnecessary
4276 host wakeup due to broadcast traffic while in power
4277 save. Upon the call of this API the WLAN DAL will pack
4278 and send a HAL Wowl Bcast ptrn request message to the
4279 lower RIVA sub-system if DAL is in state STARTED.
4280
4281 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004282 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004283
4284 WDI_PostAssocReq must have been called.
4285
Jeff Johnsone7245742012-09-05 17:12:55 -07004286 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004287 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004288
Jeff Johnson295189b2012-06-20 16:38:30 -07004289 wdiWowlAddBcPtrnCb: callback for passing back the
4290 response of the add Wowl bcast ptrn operation received
4291 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004292
Jeff Johnson295189b2012-06-20 16:38:30 -07004293 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004294 callback
4295
Jeff Johnson295189b2012-06-20 16:38:30 -07004296 @see WDI_PostAssocReq
4297 @return Result of the function call
4298*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004299WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004300WDI_WowlAddBcPtrnReq
4301(
4302 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4303 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4304 void* pUserData
4305)
4306{
4307 WDI_EventInfoType wdiEventData;
4308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4309
4310 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004311 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004312 ------------------------------------------------------------------------*/
4313 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4314 {
4315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4316 "WDI API call before module is initialized - Fail request");
4317
Jeff Johnsone7245742012-09-05 17:12:55 -07004318 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004319 }
4320
4321 /*------------------------------------------------------------------------
4322 Fill in Event data and post to the Main FSM
4323 ------------------------------------------------------------------------*/
4324 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004325 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004326 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004327 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004328 wdiEventData.pUserData = pUserData;
4329
4330 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4331}/*WDI_WowlAddBcPtrnReq*/
4332
4333/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004334 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004335 wants to clear the Wowl Bcast ptrn. Upon the call of
4336 this API the WLAN DAL will pack and send a HAL delete
4337 Wowl Bcast ptrn request message to the lower RIVA
4338 sub-system if DAL is in state STARTED.
4339
4340 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004341 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004342
4343 WDI_WowlAddBcPtrnReq must have been called.
4344
Jeff Johnsone7245742012-09-05 17:12:55 -07004345 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004346 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004347
Jeff Johnson295189b2012-06-20 16:38:30 -07004348 wdiWowlDelBcPtrnCb: callback for passing back the
4349 response of the del Wowl bcast ptrn operation received
4350 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004351
Jeff Johnson295189b2012-06-20 16:38:30 -07004352 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004353 callback
4354
Jeff Johnson295189b2012-06-20 16:38:30 -07004355 @see WDI_WowlAddBcPtrnReq
4356 @return Result of the function call
4357*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004358WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004359WDI_WowlDelBcPtrnReq
4360(
4361 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4362 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4363 void* pUserData
4364)
4365{
4366 WDI_EventInfoType wdiEventData;
4367 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4368
4369 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004370 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004371 ------------------------------------------------------------------------*/
4372 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4373 {
4374 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4375 "WDI API call before module is initialized - Fail request");
4376
Jeff Johnsone7245742012-09-05 17:12:55 -07004377 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004378 }
4379
4380 /*------------------------------------------------------------------------
4381 Fill in Event data and post to the Main FSM
4382 ------------------------------------------------------------------------*/
4383 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004384 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004385 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004386 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004387 wdiEventData.pUserData = pUserData;
4388
4389 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4390}/*WDI_WowlDelBcPtrnReq*/
4391
4392/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004393 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004394 wants to enter the Wowl state to minimize unnecessary
4395 host wakeup while in power save. Upon the call of this
4396 API the WLAN DAL will pack and send a HAL Wowl enter
4397 request message to the lower RIVA sub-system if DAL is
4398 in state STARTED.
4399
4400 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004401 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004402
4403 WDI_PostAssocReq must have been called.
4404
Jeff Johnsone7245742012-09-05 17:12:55 -07004405 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004406 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004407
Jeff Johnson295189b2012-06-20 16:38:30 -07004408 wdiWowlEnterReqCb: callback for passing back the
4409 response of the enter Wowl operation received from the
4410 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004411
Jeff Johnson295189b2012-06-20 16:38:30 -07004412 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004413 callback
4414
Jeff Johnson295189b2012-06-20 16:38:30 -07004415 @see WDI_PostAssocReq
4416 @return Result of the function call
4417*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004418WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004419WDI_WowlEnterReq
4420(
4421 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4422 WDI_WowlEnterReqCb wdiWowlEnterCb,
4423 void* pUserData
4424)
4425{
4426 WDI_EventInfoType wdiEventData;
4427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4428
4429 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004430 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004431 ------------------------------------------------------------------------*/
4432 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4433 {
4434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4435 "WDI API call before module is initialized - Fail request");
4436
Jeff Johnsone7245742012-09-05 17:12:55 -07004437 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004438 }
4439
4440 /*------------------------------------------------------------------------
4441 Fill in Event data and post to the Main FSM
4442 ------------------------------------------------------------------------*/
4443 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004444 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004445 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004446 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004447 wdiEventData.pUserData = pUserData;
4448
4449 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4450}/*WDI_WowlEnterReq*/
4451
4452/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004453 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004454 wants to exit the Wowl state. Upon the call of this API
4455 the WLAN DAL will pack and send a HAL Wowl exit request
4456 message to the lower RIVA sub-system if DAL is in state
4457 STARTED.
4458
4459 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004460 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004461
4462 WDI_WowlEnterReq must have been called.
4463
Jeff Johnsone7245742012-09-05 17:12:55 -07004464 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004465 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004466
Jeff Johnson295189b2012-06-20 16:38:30 -07004467 wdiWowlExitReqCb: callback for passing back the response
4468 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004469
Jeff Johnson295189b2012-06-20 16:38:30 -07004470 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004471 callback
4472
Jeff Johnson295189b2012-06-20 16:38:30 -07004473 @see WDI_WowlEnterReq
4474 @return Result of the function call
4475*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004476WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004477WDI_WowlExitReq
4478(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004479 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004480 WDI_WowlExitReqCb wdiWowlExitCb,
4481 void* pUserData
4482)
4483{
4484 WDI_EventInfoType wdiEventData;
4485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4486
4487 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004488 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004489 ------------------------------------------------------------------------*/
4490 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4491 {
4492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4493 "WDI API call before module is initialized - Fail request");
4494
Jeff Johnsone7245742012-09-05 17:12:55 -07004495 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004496 }
4497
4498 /*------------------------------------------------------------------------
4499 Fill in Event data and post to the Main FSM
4500 ------------------------------------------------------------------------*/
4501 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004502 wdiEventData.pEventData = pwdiWowlExitParams;
4503 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004504 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004505 wdiEventData.pUserData = pUserData;
4506
4507 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4508}/*WDI_WowlExitReq*/
4509
4510/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004511 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004512 the upper MAC wants to dynamically adjusts the listen
4513 interval based on the WLAN/MSM activity. Upon the call
4514 of this API the WLAN DAL will pack and send a HAL
4515 configure Apps Cpu Wakeup State request message to the
4516 lower RIVA sub-system.
4517
4518 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004519 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004520
Jeff Johnsone7245742012-09-05 17:12:55 -07004521
4522 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004523 Apps Cpu Wakeup State as specified by the
4524 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004525
Jeff Johnson295189b2012-06-20 16:38:30 -07004526 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4527 back the response of the configure Apps Cpu Wakeup State
4528 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004529
Jeff Johnson295189b2012-06-20 16:38:30 -07004530 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004531 callback
4532
Jeff Johnson295189b2012-06-20 16:38:30 -07004533 @return Result of the function call
4534*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004535WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004536WDI_ConfigureAppsCpuWakeupStateReq
4537(
4538 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4539 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4540 void* pUserData
4541)
4542{
4543 WDI_EventInfoType wdiEventData;
4544 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4545
4546 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004547 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004548 ------------------------------------------------------------------------*/
4549 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4550 {
4551 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4552 "WDI API call before module is initialized - Fail request");
4553
Jeff Johnsone7245742012-09-05 17:12:55 -07004554 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004555 }
4556
4557 /*------------------------------------------------------------------------
4558 Fill in Event data and post to the Main FSM
4559 ------------------------------------------------------------------------*/
4560 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004561 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4562 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4563 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004564 wdiEventData.pUserData = pUserData;
4565
4566 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4567}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4568/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004569 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004570 to to perform a flush operation on a given AC. Upon the
4571 call of this API the WLAN DAL will pack and send a HAL
4572 Flush AC request message to the lower RIVA sub-system if
4573 DAL is in state STARTED.
4574
4575 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004576 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004577
4578 WDI_AddBAReq must have been called.
4579
Jeff Johnsone7245742012-09-05 17:12:55 -07004580 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004581 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004582
Jeff Johnson295189b2012-06-20 16:38:30 -07004583 wdiFlushAcRspCb: callback for passing back the response
4584 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004585
Jeff Johnson295189b2012-06-20 16:38:30 -07004586 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004587 callback
4588
Jeff Johnson295189b2012-06-20 16:38:30 -07004589 @see WDI_AddBAReq
4590 @return Result of the function call
4591*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004592WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004593WDI_FlushAcReq
4594(
4595 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4596 WDI_FlushAcRspCb wdiFlushAcRspCb,
4597 void* pUserData
4598)
4599{
4600 WDI_EventInfoType wdiEventData;
4601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4602
4603 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004604 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004605 ------------------------------------------------------------------------*/
4606 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4607 {
4608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4609 "WDI API call before module is initialized - Fail request");
4610
Jeff Johnsone7245742012-09-05 17:12:55 -07004611 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004612 }
4613
4614 /*------------------------------------------------------------------------
4615 Fill in Event data and post to the Main FSM
4616 ------------------------------------------------------------------------*/
4617 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004618 wdiEventData.pEventData = pwdiFlushAcReqParams;
4619 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4620 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004621 wdiEventData.pUserData = pUserData;
4622
4623 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4624
4625}/*WDI_FlushAcReq*/
4626
4627/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004628 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004629 wants to notify the lower mac on a BT AMP event. This is
4630 to inform BTC-SLM that some BT AMP event occurred. Upon
4631 the call of this API the WLAN DAL will pack and send a
4632 HAL BT AMP event request message to the lower RIVA
4633 sub-system if DAL is in state STARTED.
4634
4635 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004636 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004637
Jeff Johnsone7245742012-09-05 17:12:55 -07004638
4639 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004640 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004641
Jeff Johnson295189b2012-06-20 16:38:30 -07004642 wdiBtAmpEventRspCb: callback for passing back the
4643 response of the BT AMP event operation received from the
4644 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004645
Jeff Johnson295189b2012-06-20 16:38:30 -07004646 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004647 callback
4648
Jeff Johnson295189b2012-06-20 16:38:30 -07004649 @return Result of the function call
4650*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004651WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004652WDI_BtAmpEventReq
4653(
4654 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4655 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4656 void* pUserData
4657)
4658{
4659 WDI_EventInfoType wdiEventData;
4660 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4661
4662 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004663 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004664 ------------------------------------------------------------------------*/
4665 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4666 {
4667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4668 "WDI API call before module is initialized - Fail request");
4669
Jeff Johnsone7245742012-09-05 17:12:55 -07004670 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004671 }
4672
4673 /*------------------------------------------------------------------------
4674 Fill in Event data and post to the Main FSM
4675 ------------------------------------------------------------------------*/
4676 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004677 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4678 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4679 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004680 wdiEventData.pUserData = pUserData;
4681
4682 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4683
4684}/*WDI_BtAmpEventReq*/
4685
Jeff Johnsone7245742012-09-05 17:12:55 -07004686#ifdef FEATURE_OEM_DATA_SUPPORT
4687/**
4688 @brief WDI_Start Oem Data Req will be called when the upper MAC
4689 wants to notify the lower mac on a oem data Req event.Upon
4690 the call of this API the WLAN DAL will pack and send a
4691 HAL OEM Data Req event request message to the lower RIVA
4692 sub-system if DAL is in state STARTED.
4693
4694 In state BUSY this request will be queued. Request won't
4695 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004696
4697
Jeff Johnsone7245742012-09-05 17:12:55 -07004698
4699 @param pwdiOemDataReqParams: the Oem Data Req as
4700 specified by the Device Interface
4701
4702 wdiStartOemDataRspCb: callback for passing back the
4703 response of the Oem Data Req received from the
4704 device
4705
4706 pUserData: user data will be passed back with the
4707 callback
4708
4709 @return Result of the function call
4710*/
4711WDI_Status
4712WDI_StartOemDataReq
4713(
4714 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4715 WDI_oemDataRspCb wdiOemDataRspCb,
4716 void* pUserData
4717)
4718{
4719 WDI_EventInfoType wdiEventData;
4720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4721
4722 /*------------------------------------------------------------------------
4723 Sanity Check
4724 ------------------------------------------------------------------------*/
4725 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4726 {
4727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4728 "WDI API call before module is initialized - Fail request");
4729
4730 return WDI_STATUS_E_NOT_ALLOWED;
4731 }
4732
4733 /*------------------------------------------------------------------------
4734 Fill in Event data and post to the Main FSM
4735 ------------------------------------------------------------------------*/
4736 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4737 wdiEventData.pEventData = pwdiOemDataReqParams;
4738 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4739 wdiEventData.pCBfnc = wdiOemDataRspCb;
4740 wdiEventData.pUserData = pUserData;
4741
4742 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4743
4744
4745}
4746
4747#endif
4748
4749
4750/*========================================================================
4751
Jeff Johnson295189b2012-06-20 16:38:30 -07004752 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004753
Jeff Johnson295189b2012-06-20 16:38:30 -07004754==========================================================================*/
4755/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004756 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004757 the WLAN HW to change the current channel of operation.
4758 Upon the call of this API the WLAN DAL will pack and
4759 send a HAL Start request message to the lower RIVA
4760 sub-system if DAL is in state STARTED.
4761
4762 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004763 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004764
4765 WDI_Start must have been called.
4766
Jeff Johnsone7245742012-09-05 17:12:55 -07004767 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004768 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004769
Jeff Johnson295189b2012-06-20 16:38:30 -07004770 wdiSwitchChRspCb: callback for passing back the response
4771 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004772
Jeff Johnson295189b2012-06-20 16:38:30 -07004773 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004774 callback
4775
Jeff Johnson295189b2012-06-20 16:38:30 -07004776 @see WDI_Start
4777 @return Result of the function call
4778*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004779WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004780WDI_SwitchChReq
4781(
4782 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4783 WDI_SwitchChRspCb wdiSwitchChRspCb,
4784 void* pUserData
4785)
4786{
4787 WDI_EventInfoType wdiEventData;
4788 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4789
4790 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004791 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004792 ------------------------------------------------------------------------*/
4793 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4794 {
4795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4796 "WDI API call before module is initialized - Fail request");
4797
Jeff Johnsone7245742012-09-05 17:12:55 -07004798 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004799 }
4800
4801 /*------------------------------------------------------------------------
4802 Fill in Event data and post to the Main FSM
4803 ------------------------------------------------------------------------*/
4804 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004805 wdiEventData.pEventData = pwdiSwitchChReqParams;
4806 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4807 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004808 wdiEventData.pUserData = pUserData;
4809
4810 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4811
4812}/*WDI_SwitchChReq*/
4813
4814
4815/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004816 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004817 wishes to add or update a STA in HW. Upon the call of
4818 this API the WLAN DAL will pack and send a HAL Start
4819 message request message to the lower RIVA sub-system if
4820 DAL is in state STARTED.
4821
4822 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004823 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004824
4825 WDI_Start must have been called.
4826
Jeff Johnsone7245742012-09-05 17:12:55 -07004827 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004828 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004829
Jeff Johnson295189b2012-06-20 16:38:30 -07004830 wdiConfigSTARspCb: callback for passing back the
4831 response of the config STA operation received from the
4832 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004833
Jeff Johnson295189b2012-06-20 16:38:30 -07004834 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004835 callback
4836
Jeff Johnson295189b2012-06-20 16:38:30 -07004837 @see WDI_Start
4838 @return Result of the function call
4839*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004840WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004841WDI_ConfigSTAReq
4842(
4843 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4844 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4845 void* pUserData
4846)
4847{
4848 WDI_EventInfoType wdiEventData;
4849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4850
4851 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004852 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004853 ------------------------------------------------------------------------*/
4854 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4855 {
4856 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4857 "WDI API call before module is initialized - Fail request");
4858
Jeff Johnsone7245742012-09-05 17:12:55 -07004859 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004860 }
4861
4862 /*------------------------------------------------------------------------
4863 Fill in Event data and post to the Main FSM
4864 ------------------------------------------------------------------------*/
4865 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004866 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4867 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4868 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004869 wdiEventData.pUserData = pUserData;
4870
4871 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4872
4873}/*WDI_ConfigSTAReq*/
4874
4875/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004876 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004877 wants to change the state of an ongoing link. Upon the
4878 call of this API the WLAN DAL will pack and send a HAL
4879 Start message request message to the lower RIVA
4880 sub-system if DAL is in state STARTED.
4881
4882 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004883 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004884
4885 WDI_JoinStartReq must have been called.
4886
Jeff Johnsone7245742012-09-05 17:12:55 -07004887 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004888 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004889
Jeff Johnson295189b2012-06-20 16:38:30 -07004890 wdiSetLinkStateRspCb: callback for passing back the
4891 response of the set link state operation received from
4892 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004893
Jeff Johnson295189b2012-06-20 16:38:30 -07004894 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004895 callback
4896
Jeff Johnson295189b2012-06-20 16:38:30 -07004897 @see WDI_JoinStartReq
4898 @return Result of the function call
4899*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004900WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004901WDI_SetLinkStateReq
4902(
4903 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4904 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4905 void* pUserData
4906)
4907{
4908 WDI_EventInfoType wdiEventData;
4909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4910
4911 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004912 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004913 ------------------------------------------------------------------------*/
4914 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4915 {
4916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4917 "WDI API call before module is initialized - Fail request");
4918
Jeff Johnsone7245742012-09-05 17:12:55 -07004919 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004920 }
4921
4922 /*------------------------------------------------------------------------
4923 Fill in Event data and post to the Main FSM
4924 ------------------------------------------------------------------------*/
4925 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004926 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4927 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4928 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004929 wdiEventData.pUserData = pUserData;
4930
4931 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4932
4933}/*WDI_SetLinkStateReq*/
4934
4935
4936/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004937 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004938 to get statistics (MIB counters) from the device. Upon
4939 the call of this API the WLAN DAL will pack and send a
4940 HAL Start request message to the lower RIVA sub-system
4941 if DAL is in state STARTED.
4942
4943 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004944 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004945
4946 WDI_Start must have been called.
4947
Jeff Johnsone7245742012-09-05 17:12:55 -07004948 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004949 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004950
Jeff Johnson295189b2012-06-20 16:38:30 -07004951 wdiGetStatsRspCb: callback for passing back the response
4952 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004953
Jeff Johnson295189b2012-06-20 16:38:30 -07004954 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004955 callback
4956
Jeff Johnson295189b2012-06-20 16:38:30 -07004957 @see WDI_Start
4958 @return Result of the function call
4959*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004960WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004961WDI_GetStatsReq
4962(
4963 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4964 WDI_GetStatsRspCb wdiGetStatsRspCb,
4965 void* pUserData
4966)
4967{
4968 WDI_EventInfoType wdiEventData;
4969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4970
4971 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004972 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004973 ------------------------------------------------------------------------*/
4974 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4975 {
4976 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4977 "WDI API call before module is initialized - Fail request");
4978
Jeff Johnsone7245742012-09-05 17:12:55 -07004979 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004980 }
4981
4982 /*------------------------------------------------------------------------
4983 Fill in Event data and post to the Main FSM
4984 ------------------------------------------------------------------------*/
4985 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004986 wdiEventData.pEventData = pwdiGetStatsReqParams;
4987 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4988 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004989 wdiEventData.pUserData = pUserData;
4990
4991 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4992
4993}/*WDI_GetStatsReq*/
4994
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08004995#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
4996/**
4997 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
4998 to get roam rssi from the device. Upon
4999 the call of this API the WLAN DAL will pack and send a
5000 HAL Start request message to the lower RIVA sub-system
5001 if DAL is in state STARTED.
5002
5003 In state BUSY this request will be queued. Request won't
5004 be allowed in any other state.
5005
5006 WDI_Start must have been called.
5007
5008 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5009 specified by the Device Interface
5010
5011 wdiGetRoamRssiRspCb: callback for passing back the response
5012 of the get stats operation received from the device
5013
5014 pUserData: user data will be passed back with the
5015 callback
5016
5017 @see WDI_Start
5018 @return Result of the function call
5019*/
5020WDI_Status
5021WDI_GetRoamRssiReq
5022(
5023 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5024 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5025 void* pUserData
5026)
5027{
5028 WDI_EventInfoType wdiEventData;
5029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5030
5031 /*------------------------------------------------------------------------
5032 Sanity Check
5033 ------------------------------------------------------------------------*/
5034 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5035 {
5036 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5037 "WDI API call before module is initialized - Fail request");
5038
5039 return WDI_STATUS_E_NOT_ALLOWED;
5040 }
5041 /*------------------------------------------------------------------------
5042 Fill in Event data and post to the Main FSM
5043 ------------------------------------------------------------------------*/
5044 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5045 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5046 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5047 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5048 wdiEventData.pUserData = pUserData;
5049
5050 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5051
5052}/*WDI_GetRoamRssiReq*/
5053#endif
5054
Jeff Johnson295189b2012-06-20 16:38:30 -07005055
5056/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005057 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005058 it wishes to change the configuration of the WLAN
5059 Device. Upon the call of this API the WLAN DAL will pack
5060 and send a HAL Update CFG request message to the lower
5061 RIVA sub-system if DAL is in state STARTED.
5062
5063 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005064 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005065
5066 WDI_Start must have been called.
5067
Jeff Johnsone7245742012-09-05 17:12:55 -07005068 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005069 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005070
Jeff Johnson295189b2012-06-20 16:38:30 -07005071 wdiUpdateCfgsRspCb: callback for passing back the
5072 response of the update cfg operation received from the
5073 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005074
Jeff Johnson295189b2012-06-20 16:38:30 -07005075 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005076 callback
5077
Jeff Johnson295189b2012-06-20 16:38:30 -07005078 @see WDI_Start
5079 @return Result of the function call
5080*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005081WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005082WDI_UpdateCfgReq
5083(
5084 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5085 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5086 void* pUserData
5087)
5088{
5089 WDI_EventInfoType wdiEventData;
5090 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5091
5092 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005093 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005094 ------------------------------------------------------------------------*/
5095 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5096 {
5097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5098 "WDI API call before module is initialized - Fail request");
5099
Jeff Johnsone7245742012-09-05 17:12:55 -07005100 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005101 }
5102
5103 /*------------------------------------------------------------------------
5104 Fill in Event data and post to the Main FSM
5105 ------------------------------------------------------------------------*/
5106 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005107 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5108 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5109 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005110 wdiEventData.pUserData = pUserData;
5111
5112 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5113
5114}/*WDI_UpdateCfgReq*/
5115
5116
5117
5118/**
5119 @brief WDI_AddBAReq will be called when the upper MAC has setup
5120 successfully a BA session and needs to notify the HW for
5121 the appropriate settings to take place. Upon the call of
5122 this API the WLAN DAL will pack and send a HAL Add BA
5123 request message to the lower RIVA sub-system if DAL is
5124 in state STARTED.
5125
5126 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005127 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005128
5129 WDI_PostAssocReq must have been called.
5130
5131 @param wdiAddBAReqParams: the add BA parameters as specified by
5132 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005133
Jeff Johnson295189b2012-06-20 16:38:30 -07005134 wdiAddBARspCb: callback for passing back the response of
5135 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005136
Jeff Johnson295189b2012-06-20 16:38:30 -07005137 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005138 callback
5139
Jeff Johnson295189b2012-06-20 16:38:30 -07005140 @see WDI_PostAssocReq
5141 @return Result of the function call
5142*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005143WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005144WDI_AddBAReq
5145(
5146 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5147 WDI_AddBARspCb wdiAddBARspCb,
5148 void* pUserData
5149)
5150{
5151 WDI_EventInfoType wdiEventData;
5152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5153
5154 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005155 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005156 ------------------------------------------------------------------------*/
5157 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5158 {
5159 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5160 "WDI API call before module is initialized - Fail request");
5161
Jeff Johnsone7245742012-09-05 17:12:55 -07005162 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005163 }
5164
5165 /*------------------------------------------------------------------------
5166 Fill in Event data and post to the Main FSM
5167 ------------------------------------------------------------------------*/
5168 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005169 wdiEventData.pEventData = pwdiAddBAReqParams;
5170 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5171 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005172 wdiEventData.pUserData = pUserData;
5173
5174 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5175
5176}/*WDI_AddBAReq*/
5177
5178
5179/**
5180 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5181 successfully a BA session and needs to notify the HW for
5182 the appropriate settings to take place. Upon the call of
5183 this API the WLAN DAL will pack and send a HAL Add BA
5184 request message to the lower RIVA sub-system if DAL is
5185 in state STARTED.
5186
5187 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005188 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005189
5190 WDI_PostAssocReq must have been called.
5191
5192 @param wdiAddBAReqParams: the add BA parameters as specified by
5193 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005194
Jeff Johnson295189b2012-06-20 16:38:30 -07005195 wdiAddBARspCb: callback for passing back the response of
5196 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005197
Jeff Johnson295189b2012-06-20 16:38:30 -07005198 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005199 callback
5200
Jeff Johnson295189b2012-06-20 16:38:30 -07005201 @see WDI_PostAssocReq
5202 @return Result of the function call
5203*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005204WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005205WDI_TriggerBAReq
5206(
5207 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5208 WDI_TriggerBARspCb wdiTriggerBARspCb,
5209 void* pUserData
5210)
5211{
5212 WDI_EventInfoType wdiEventData;
5213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5214
5215 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005216 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005217 ------------------------------------------------------------------------*/
5218 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5219 {
5220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5221 "WDI API call before module is initialized - Fail request");
5222
Jeff Johnsone7245742012-09-05 17:12:55 -07005223 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005224 }
5225
5226 /*------------------------------------------------------------------------
5227 Fill in Event data and post to the Main FSM
5228 ------------------------------------------------------------------------*/
5229 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005230 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5231 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5232 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005233 wdiEventData.pUserData = pUserData;
5234
5235 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5236
5237}/*WDI_AddBAReq*/
5238
5239/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005240 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005241 wishes to update any of the Beacon parameters used by HW.
5242 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5243 message to the lower RIVA sub-system if DAL is in state
5244 STARTED.
5245
5246 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005247 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005248
5249 WDI_PostAssocReq must have been called.
5250
Jeff Johnsone7245742012-09-05 17:12:55 -07005251 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005252 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005253
Jeff Johnson295189b2012-06-20 16:38:30 -07005254 wdiUpdateBeaconParamsRspCb: callback for passing back the
5255 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005256
Jeff Johnson295189b2012-06-20 16:38:30 -07005257 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005258 callback
5259
Jeff Johnson295189b2012-06-20 16:38:30 -07005260 @see WDI_PostAssocReq
5261 @return Result of the function call
5262*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005263WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005264WDI_UpdateBeaconParamsReq
5265(
5266 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5267 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5268 void* pUserData
5269)
5270{
5271 WDI_EventInfoType wdiEventData;
5272 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5273
5274 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005275 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005276 ------------------------------------------------------------------------*/
5277 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5278 {
5279 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5280 "WDI API call before module is initialized - Fail request");
5281
Jeff Johnsone7245742012-09-05 17:12:55 -07005282 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005283 }
5284
5285 /*------------------------------------------------------------------------
5286 Fill in Event data and post to the Main FSM
5287 ------------------------------------------------------------------------*/
5288 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005289 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5290 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5291 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005292 wdiEventData.pUserData = pUserData;
5293
5294 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5295
5296}/*WDI_UpdateBeaconParamsReq*/
5297
5298/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005299 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005300 wishes to update the Beacon template used by HW.
5301 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5302 message to the lower RIVA sub-system if DAL is in state
5303 STARTED.
5304
5305 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005306 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005307
5308 WDI_PostAssocReq must have been called.
5309
Jeff Johnsone7245742012-09-05 17:12:55 -07005310 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005311 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005312
Jeff Johnson295189b2012-06-20 16:38:30 -07005313 wdiSendBeaconParamsRspCb: callback for passing back the
5314 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005315
Jeff Johnson295189b2012-06-20 16:38:30 -07005316 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005317 callback
5318
Jeff Johnson295189b2012-06-20 16:38:30 -07005319 @see WDI_PostAssocReq
5320 @return Result of the function call
5321*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005322WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005323WDI_SendBeaconParamsReq
5324(
5325 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5326 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5327 void* pUserData
5328)
5329{
5330 WDI_EventInfoType wdiEventData;
5331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5332
5333 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005334 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005335 ------------------------------------------------------------------------*/
5336 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5337 {
5338 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5339 "WDI API call before module is initialized - Fail request");
5340
Jeff Johnsone7245742012-09-05 17:12:55 -07005341 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005342 }
5343
5344 /*------------------------------------------------------------------------
5345 Fill in Event data and post to the Main FSM
5346 ------------------------------------------------------------------------*/
5347 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005348 wdiEventData.pEventData = pwdiSendBeaconParams;
5349 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5350 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005351 wdiEventData.pUserData = pUserData;
5352
5353 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5354
5355}/*WDI_SendBeaconParamsReq*/
5356
5357/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005358 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005359 upper MAC wants to update the probe response template to
5360 be transmitted as Soft AP
5361 Upon the call of this API the WLAN DAL will
5362 pack and send the probe rsp template message to the
5363 lower RIVA sub-system if DAL is in state STARTED.
5364
5365 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005366 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005367
5368
Jeff Johnsone7245742012-09-05 17:12:55 -07005369 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005370 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005371
Jeff Johnson295189b2012-06-20 16:38:30 -07005372 wdiSendBeaconParamsRspCb: callback for passing back the
5373 response of the Send Beacon Params operation received
5374 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005375
Jeff Johnson295189b2012-06-20 16:38:30 -07005376 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005377 callback
5378
Jeff Johnson295189b2012-06-20 16:38:30 -07005379 @see WDI_AddBAReq
5380 @return Result of the function call
5381*/
5382
Jeff Johnsone7245742012-09-05 17:12:55 -07005383WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005384WDI_UpdateProbeRspTemplateReq
5385(
5386 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5387 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5388 void* pUserData
5389)
5390{
5391 WDI_EventInfoType wdiEventData;
5392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5393
5394 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005395 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005396 ------------------------------------------------------------------------*/
5397 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5398 {
5399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5400 "WDI API call before module is initialized - Fail request");
5401
Jeff Johnsone7245742012-09-05 17:12:55 -07005402 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005403 }
5404
5405 /*------------------------------------------------------------------------
5406 Fill in Event data and post to the Main FSM
5407 ------------------------------------------------------------------------*/
5408 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005409 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5410 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5411 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005412 wdiEventData.pUserData = pUserData;
5413
5414 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5415
5416}/*WDI_UpdateProbeRspTemplateReq*/
5417
5418/**
5419 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5420 to the NV memory.
5421
5422
5423 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5424 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005425
Jeff Johnson295189b2012-06-20 16:38:30 -07005426 wdiNvDownloadRspCb: callback for passing back the response of
5427 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005428
Jeff Johnson295189b2012-06-20 16:38:30 -07005429 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005430 callback
5431
Jeff Johnson295189b2012-06-20 16:38:30 -07005432 @see WDI_PostAssocReq
5433 @return Result of the function call
5434*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005435WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005436WDI_NvDownloadReq
5437(
5438 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5439 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5440 void* pUserData
5441)
5442{
5443 WDI_EventInfoType wdiEventData;
5444
5445 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005446 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005447 ------------------------------------------------------------------------*/
5448 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5449 {
5450 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5451 "WDI API call before module is initialized - Fail request");
5452
Jeff Johnsone7245742012-09-05 17:12:55 -07005453 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005454 }
5455
5456 /*------------------------------------------------------------------------
5457 Fill in Event data and post to the Main FSM
5458 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005459 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5460 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5461 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5462 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005463 wdiEventData.pUserData = pUserData;
5464
5465 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5466
5467}/*WDI_NVDownloadReq*/
5468
Jeff Johnson295189b2012-06-20 16:38:30 -07005469/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005470 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005471 upper MAC wants to send Notice of Absence
5472 Upon the call of this API the WLAN DAL will
5473 pack and send the probe rsp template message to the
5474 lower RIVA sub-system if DAL is in state STARTED.
5475
5476 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005477 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005478
5479
Jeff Johnsone7245742012-09-05 17:12:55 -07005480 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005481 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005482
Jeff Johnson295189b2012-06-20 16:38:30 -07005483 wdiSendBeaconParamsRspCb: callback for passing back the
5484 response of the Send Beacon Params operation received
5485 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005486
Jeff Johnson295189b2012-06-20 16:38:30 -07005487 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005488 callback
5489
Jeff Johnson295189b2012-06-20 16:38:30 -07005490 @see WDI_AddBAReq
5491 @return Result of the function call
5492*/
5493WDI_Status
5494WDI_SetP2PGONOAReq
5495(
5496 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5497 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5498 void* pUserData
5499)
5500{
5501 WDI_EventInfoType wdiEventData;
5502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5503
5504 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005505 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005506 ------------------------------------------------------------------------*/
5507 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5508 {
5509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5510 "WDI API call before module is initialized - Fail request");
5511
Jeff Johnsone7245742012-09-05 17:12:55 -07005512 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005513 }
5514
5515 /*------------------------------------------------------------------------
5516 Fill in Event data and post to the Main FSM
5517 ------------------------------------------------------------------------*/
5518 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005519 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5520 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5521 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005522 wdiEventData.pUserData = pUserData;
5523
5524 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5525
5526}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005527
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05305528#ifdef FEATURE_WLAN_TDLS
5529/**
5530 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5531 upper MAC wants to send TDLS Link Establish Request Parameters
5532 Upon the call of this API the WLAN DAL will
5533 pack and send the TDLS Link Establish Request message to the
5534 lower RIVA sub-system if DAL is in state STARTED.
5535
5536 In state BUSY this request will be queued. Request won't
5537 be allowed in any other state.
5538
5539
5540 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5541 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5542
5543 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5544 response of the TDLS Link Establish request received
5545 from the device
5546
5547 pUserData: user data will be passed back with the
5548 callback
5549
5550 @see
5551 @return Result of the function call
5552*/
5553WDI_Status
5554WDI_SetTDLSLinkEstablishReq
5555(
5556 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5557 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5558 void* pUserData
5559)
5560{
5561 WDI_EventInfoType wdiEventData;
5562 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5563
5564 /*------------------------------------------------------------------------
5565 Sanity Check
5566 ------------------------------------------------------------------------*/
5567 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5568 {
5569 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5570 "WDI API call before module is initialized - Fail request");
5571
5572 return WDI_STATUS_E_NOT_ALLOWED;
5573 }
5574
5575 /*------------------------------------------------------------------------
5576 Fill in Event data and post to the Main FSM
5577 ------------------------------------------------------------------------*/
5578 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5579 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5580 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5581 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5582 wdiEventData.pUserData = pUserData;
5583
5584 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5585
5586}/*WDI_SetTDLSLinkEstablishReq*/
5587#endif
5588
Jeff Johnson295189b2012-06-20 16:38:30 -07005589/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005590 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005591 UMAC wanted to add STA self while opening any new session
5592 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005593 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005594
5595
Jeff Johnsone7245742012-09-05 17:12:55 -07005596 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005597 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005598
Jeff Johnson295189b2012-06-20 16:38:30 -07005599 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005600 callback
5601
5602 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005603 @return Result of the function call
5604*/
5605WDI_Status
5606WDI_AddSTASelfReq
5607(
5608 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5609 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5610 void* pUserData
5611)
5612{
5613 WDI_EventInfoType wdiEventData;
5614 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5615
5616 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005617 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005618 ------------------------------------------------------------------------*/
5619 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5620 {
5621 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5622 "WDI API call before module is initialized - Fail request");
5623
Jeff Johnsone7245742012-09-05 17:12:55 -07005624 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005625 }
5626
5627 /*------------------------------------------------------------------------
5628 Fill in Event data and post to the Main FSM
5629 ------------------------------------------------------------------------*/
5630 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005631 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5632 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5633 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005634 wdiEventData.pUserData = pUserData;
5635
5636 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5637
5638}/*WDI_AddSTASelfReq*/
5639
5640
Jeff Johnsone7245742012-09-05 17:12:55 -07005641#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005642/**
5643 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5644 the device of a successful add TSpec negotiation. HW
5645 needs to receive the TSpec Info from the UMAC in order
5646 to configure properly the QoS data traffic. Upon the
5647 call of this API the WLAN DAL will pack and send a HAL
5648 Add TS request message to the lower RIVA sub-system if
5649 DAL is in state STARTED.
5650
5651 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005652 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005653
5654 WDI_PostAssocReq must have been called.
5655
5656 @param wdiAddTsReqParams: the add TS parameters as specified by
5657 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005658
Jeff Johnson295189b2012-06-20 16:38:30 -07005659 wdiAddTsRspCb: callback for passing back the response of
5660 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005661
Jeff Johnson295189b2012-06-20 16:38:30 -07005662 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005663 callback
5664
Jeff Johnson295189b2012-06-20 16:38:30 -07005665 @see WDI_PostAssocReq
5666 @return Result of the function call
5667*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005668WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005669WDI_AggrAddTSReq
5670(
5671 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5672 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5673 void* pUserData
5674)
5675{
5676 WDI_EventInfoType wdiEventData;
5677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5678
5679 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005680 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005681 ------------------------------------------------------------------------*/
5682 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5683 {
5684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5685 "WDI API call before module is initialized - Fail request");
5686
Jeff Johnsone7245742012-09-05 17:12:55 -07005687 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005688 }
5689
5690 /*------------------------------------------------------------------------
5691 Fill in Event data and post to the Main FSM
5692 ------------------------------------------------------------------------*/
5693 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005694 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5695 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5696 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005697 wdiEventData.pUserData = pUserData;
5698
5699 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5700
5701}/*WDI_AggrAddTSReq*/
5702
5703#endif /* WLAN_FEATURE_VOWIFI_11R */
5704
Jeff Johnson295189b2012-06-20 16:38:30 -07005705/**
5706 @brief WDI_FTMCommandReq
5707 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005708
5709 @param ftmCommandReq: FTM Command Body
5710 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005711 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005712
Jeff Johnson295189b2012-06-20 16:38:30 -07005713 @see
5714 @return Result of the function call
5715*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005716WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005717WDI_FTMCommandReq
5718(
5719 WDI_FTMCommandReqType *ftmCommandReq,
5720 WDI_FTMCommandRspCb ftmCommandRspCb,
5721 void *pUserData
5722)
5723{
5724 WDI_EventInfoType wdiEventData;
5725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5726
5727 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005728 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005729 ------------------------------------------------------------------------*/
5730 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5731 {
5732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5733 "WDI API call before module is initialized - Fail request");
5734
Jeff Johnsone7245742012-09-05 17:12:55 -07005735 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005736 }
5737
5738 /*------------------------------------------------------------------------
5739 Fill in Event data and post to the Main FSM
5740 ------------------------------------------------------------------------*/
5741 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5742 wdiEventData.pEventData = (void *)ftmCommandReq;
5743 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5744 wdiEventData.pCBfnc = ftmCommandRspCb;
5745 wdiEventData.pUserData = pUserData;
5746
5747 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5748}
Jeff Johnson295189b2012-06-20 16:38:30 -07005749/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005750 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005751
5752 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005753 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005754
5755
5756 @param pwdiResumeReqParams: as specified by
5757 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005758
Jeff Johnson295189b2012-06-20 16:38:30 -07005759 wdiResumeReqRspCb: callback for passing back the response of
5760 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005761
Jeff Johnson295189b2012-06-20 16:38:30 -07005762 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005763 callback
5764
5765 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005766 @return Result of the function call
5767*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005768WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005769WDI_HostResumeReq
5770(
5771 WDI_ResumeParamsType* pwdiResumeReqParams,
5772 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5773 void* pUserData
5774)
5775{
5776 WDI_EventInfoType wdiEventData;
5777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5778
5779 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005780 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005781 ------------------------------------------------------------------------*/
5782 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5783 {
5784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5785 "WDI API call before module is initialized - Fail request");
5786
Jeff Johnsone7245742012-09-05 17:12:55 -07005787 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005788 }
5789
5790 /*------------------------------------------------------------------------
5791 Fill in Event data and post to the Main FSM
5792 ------------------------------------------------------------------------*/
5793 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005794 wdiEventData.pEventData = pwdiResumeReqParams;
5795 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5796 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005797 wdiEventData.pUserData = pUserData;
5798
5799 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5800
5801}/*WDI_HostResumeReq*/
5802
5803/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005804 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005805
5806 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005807 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005808
5809
5810 @param pwdiDelStaSelfReqParams: as specified by
5811 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005812
Jeff Johnson295189b2012-06-20 16:38:30 -07005813 wdiDelStaSelfRspCb: callback for passing back the response of
5814 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005815
Jeff Johnson295189b2012-06-20 16:38:30 -07005816 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005817 callback
5818
Jeff Johnson295189b2012-06-20 16:38:30 -07005819 @see WDI_PostAssocReq
5820 @return Result of the function call
5821*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005822WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005823WDI_DelSTASelfReq
5824(
5825 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5826 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5827 void* pUserData
5828)
5829{
5830 WDI_EventInfoType wdiEventData;
5831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5832
5833 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005834 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005835 ------------------------------------------------------------------------*/
5836 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5837 {
5838 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5839 "WDI API call before module is initialized - Fail request");
5840
Jeff Johnsone7245742012-09-05 17:12:55 -07005841 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005842 }
5843
5844 /*------------------------------------------------------------------------
5845 Fill in Event data and post to the Main FSM
5846 ------------------------------------------------------------------------*/
5847 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005848 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5849 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5850 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005851 wdiEventData.pUserData = pUserData;
5852
5853 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5854
5855}/*WDI_AggrAddTSReq*/
5856
5857/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005858 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5859 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005860 Upon the call of this API the WLAN DAL will pack
5861 and send a HAL Set Tx Per Tracking request message to the
5862 lower RIVA sub-system if DAL is in state STARTED.
5863
5864 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005865 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005866
Jeff Johnsone7245742012-09-05 17:12:55 -07005867 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005868 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005869
Jeff Johnson295189b2012-06-20 16:38:30 -07005870 pwdiSetTxPerTrackingRspCb: callback for passing back the
5871 response of the set Tx PER Tracking configurations operation received
5872 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005873
Jeff Johnson295189b2012-06-20 16:38:30 -07005874 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005875 callback
5876
Jeff Johnson295189b2012-06-20 16:38:30 -07005877 @return Result of the function call
5878*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005879WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005880WDI_SetTxPerTrackingReq
5881(
5882 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5883 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5884 void* pUserData
5885)
5886{
5887 WDI_EventInfoType wdiEventData;
5888 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5889
5890 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005891 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005892 ------------------------------------------------------------------------*/
5893 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5894 {
5895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5896 "WDI API call before module is initialized - Fail request");
5897
Jeff Johnsone7245742012-09-05 17:12:55 -07005898 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005899 }
5900
5901 /*------------------------------------------------------------------------
5902 Fill in Event data and post to the Main FSM
5903 ------------------------------------------------------------------------*/
5904 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005905 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005906 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005907 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005908 wdiEventData.pUserData = pUserData;
5909
5910 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5911
5912}/*WDI_SetTxPerTrackingReq*/
5913
5914/**
5915 @brief WDI_SetTmLevelReq
5916 If HW Thermal condition changed, driver should react based on new
5917 HW thermal condition.
5918
5919 @param pwdiSetTmLevelReq: New thermal condition information
5920
5921 pwdiSetTmLevelRspCb: callback
5922
5923 usrData: user data will be passed back with the
5924 callback
5925
5926 @return Result of the function call
5927*/
5928WDI_Status
5929WDI_SetTmLevelReq
5930(
5931 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5932 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5933 void *usrData
5934)
5935{
5936 WDI_EventInfoType wdiEventData;
5937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5938
5939 /*------------------------------------------------------------------------
5940 Sanity Check
5941 ------------------------------------------------------------------------*/
5942 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5943 {
5944 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5945 "WDI API call before module is initialized - Fail request");
5946
5947 return WDI_STATUS_E_NOT_ALLOWED;
5948 }
5949
5950 /*------------------------------------------------------------------------
5951 Fill in Event data and post to the Main FSM
5952 ------------------------------------------------------------------------*/
5953 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5954 wdiEventData.pEventData = pwdiSetTmLevelReq;
5955 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5956 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5957 wdiEventData.pUserData = usrData;
5958
5959 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5960}
5961
5962/**
5963 @brief WDI_HostSuspendInd
5964
5965 Suspend Indication from the upper layer will be sent
5966 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005967
Jeff Johnson295189b2012-06-20 16:38:30 -07005968 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005969
5970 @see
5971
Jeff Johnson295189b2012-06-20 16:38:30 -07005972 @return Status of the request
5973*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005974WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005975WDI_HostSuspendInd
5976(
5977 WDI_SuspendParamsType* pwdiSuspendIndParams
5978)
5979{
5980
5981 WDI_EventInfoType wdiEventData;
5982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5983
5984 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005985 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005986 ------------------------------------------------------------------------*/
5987 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5988 {
5989 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5990 "WDI API call before module is initialized - Fail request");
5991
Jeff Johnsone7245742012-09-05 17:12:55 -07005992 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005993 }
5994
5995 /*------------------------------------------------------------------------
5996 Fill in Event data and post to the Main FSM
5997 ------------------------------------------------------------------------*/
5998 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005999 wdiEventData.pEventData = pwdiSuspendIndParams;
6000 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6001 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006002 wdiEventData.pUserData = NULL;
6003
6004 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6005
6006}/*WDI_HostSuspendInd*/
6007
6008/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006009 @brief WDI_TrafficStatsInd
6010 Traffic Stats from the upper layer will be sent
6011 down to HAL
6012
6013 @param WDI_TrafficStatsIndType
6014
6015 @see
6016
6017 @return Status of the request
6018*/
6019WDI_Status
6020WDI_TrafficStatsInd
6021(
6022 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6023)
6024{
6025
6026 WDI_EventInfoType wdiEventData;
6027 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6028
6029 /*------------------------------------------------------------------------
6030 Sanity Check
6031 ------------------------------------------------------------------------*/
6032 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6033 {
6034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6035 "WDI API call before module is initialized - Fail request");
6036
6037 return WDI_STATUS_E_NOT_ALLOWED;
6038 }
6039
6040 /*------------------------------------------------------------------------
6041 Fill in Event data and post to the Main FSM
6042 ------------------------------------------------------------------------*/
6043 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6044 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6045 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6046 wdiEventData.pCBfnc = NULL;
6047 wdiEventData.pUserData = NULL;
6048
6049 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6050
6051}/*WDI_TrafficStatsInd*/
6052
Chet Lanctot186b5732013-03-18 10:26:30 -07006053#ifdef WLAN_FEATURE_11W
6054/**
6055 @brief WDI_ExcludeUnencryptedInd
6056 Register with HAL to receive/drop unencrypted frames
6057
6058 @param WDI_ExcludeUnencryptIndType
6059
6060 @see
6061
6062 @return Status of the request
6063*/
6064WDI_Status
6065WDI_ExcludeUnencryptedInd
6066(
6067 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6068)
6069{
6070
6071 WDI_EventInfoType wdiEventData;
6072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6073
6074 /*------------------------------------------------------------------------
6075 Sanity Check
6076 ------------------------------------------------------------------------*/
6077 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6078 {
6079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6080 "WDI API call before module is initialized - Fail request");
6081
6082 return WDI_STATUS_E_NOT_ALLOWED;
6083 }
6084
6085 /*------------------------------------------------------------------------
6086 Fill in Event data and post to the Main FSM
6087 ------------------------------------------------------------------------*/
6088 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6089 wdiEventData.pEventData = pWdiExcUnencParams;
6090 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6091 wdiEventData.pCBfnc = NULL;
6092 wdiEventData.pUserData = NULL;
6093
6094 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6095
6096}/*WDI_TrafficStatsInd*/
6097#endif
6098
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006099/**
Yue Mab9c86f42013-08-14 15:59:08 -07006100 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6101
6102 @param addPeriodicTxPtrnParams: Add Pattern parameters
6103
6104 @see
6105
6106 @return Status of the request
6107*/
6108WDI_Status
6109WDI_AddPeriodicTxPtrnInd
6110(
6111 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6112)
6113{
6114 WDI_EventInfoType wdiEventData;
6115
6116 /*-------------------------------------------------------------------------
6117 Sanity Check
6118 ------------------------------------------------------------------------*/
6119 if (eWLAN_PAL_FALSE == gWDIInitialized)
6120 {
6121 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6122 "WDI API call before module is initialized - Fail request!");
6123
6124 return WDI_STATUS_E_NOT_ALLOWED;
6125 }
6126
6127 /*-------------------------------------------------------------------------
6128 Fill in Event data and post to the Main FSM
6129 ------------------------------------------------------------------------*/
6130 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6131 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6132 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6133 wdiEventData.pCBfnc = NULL;
6134 wdiEventData.pUserData = NULL;
6135
6136 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6137}
6138
6139/**
6140 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6141
6142 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6143
6144 @see
6145
6146 @return Status of the request
6147*/
6148WDI_Status
6149WDI_DelPeriodicTxPtrnInd
6150(
6151 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6152)
6153{
6154 WDI_EventInfoType wdiEventData;
6155
6156 /*-------------------------------------------------------------------------
6157 Sanity Check
6158 ------------------------------------------------------------------------*/
6159 if (eWLAN_PAL_FALSE == gWDIInitialized)
6160 {
6161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6162 "WDI API call before module is initialized - Fail request!");
6163
6164 return WDI_STATUS_E_NOT_ALLOWED;
6165 }
6166
6167 /*-------------------------------------------------------------------------
6168 Fill in Event data and post to the Main FSM
6169 ------------------------------------------------------------------------*/
6170 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6171 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6172 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6173 wdiEventData.pCBfnc = NULL;
6174 wdiEventData.pUserData = NULL;
6175
6176 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6177}
6178
6179/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006180 @brief WDI_HALDumpCmdReq
6181 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006182
6183 @param halDumpCmdReqParams: Hal Dump Command Body
6184 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006185 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006186
Jeff Johnson295189b2012-06-20 16:38:30 -07006187 @see
6188 @return Result of the function call
6189*/
6190WDI_Status WDI_HALDumpCmdReq
6191(
6192 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6193 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6194 void *pUserData
6195)
6196{
6197 WDI_EventInfoType wdiEventData;
6198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6199
6200 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006201 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006202 ------------------------------------------------------------------------*/
6203 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6204 {
6205 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6206 "WDI API call before module is initialized - Fail request");
6207
Jeff Johnsone7245742012-09-05 17:12:55 -07006208 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006209 }
6210
6211 /*------------------------------------------------------------------------
6212 Fill in Event data and post to the Main FSM
6213 ------------------------------------------------------------------------*/
6214 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6215 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6216 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6217 wdiEventData.pCBfnc = halDumpCmdRspCb;
6218 wdiEventData.pUserData = pUserData;
6219
6220 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6221}
6222
Jeff Johnsone7245742012-09-05 17:12:55 -07006223/*============================================================================
6224
Jeff Johnson295189b2012-06-20 16:38:30 -07006225 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006226
Jeff Johnson295189b2012-06-20 16:38:30 -07006227 ============================================================================*/
6228
6229/**
6230 @brief Main FSM Start function for all states except BUSY
6231
Jeff Johnsone7245742012-09-05 17:12:55 -07006232
6233 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006234 wdiEV: event posted to the main DAL FSM
6235 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006236 structure
6237
Jeff Johnson295189b2012-06-20 16:38:30 -07006238 @see
6239 @return Result of the function call
6240*/
6241WDI_Status
6242WDI_PostMainEvent
6243(
Jeff Johnsone7245742012-09-05 17:12:55 -07006244 WDI_ControlBlockType* pWDICtx,
6245 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006246 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07006247
Jeff Johnson295189b2012-06-20 16:38:30 -07006248)
6249{
Jeff Johnsone7245742012-09-05 17:12:55 -07006250 WDI_Status wdiStatus;
6251 WDI_MainFuncType pfnWDIMainEvHdlr;
6252 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6254
6255 /*-------------------------------------------------------------------------
6256 Sanity check
6257 -------------------------------------------------------------------------*/
6258 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6259 ( wdiEV >= WDI_MAX_EVENT ))
6260 {
6261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6262 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6263 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006264 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006265 }
6266
6267 /*Access to the global state must be locked */
6268 wpalMutexAcquire(&pWDICtx->wptMutex);
6269
6270 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006271 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006272
6273 wdiOldState = pWDICtx->uGlobalState;
6274
6275 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006276 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6277 response comes from CCPU for the request sent by host:
6278 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 -07006279 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 -07006280 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006281 CCPU:
6282 don't change the state */
6283 if ( WDI_RESPONSE_EVENT != wdiEV)
6284 {
6285 /*Transition to BUSY State - the request is now being processed by the FSM,
6286 if the request fails we shall transition back to the old state, if not
6287 the request will manage its own state transition*/
6288 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6289 }
6290 /* If the state function associated with the EV is NULL it means that this
6291 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006292 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006293 {
6294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006295 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006296 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006297 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006298 }
6299 else
6300 {
6301 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006302 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006303 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006304 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006305 }
6306
6307 /* If a request handles itself well it will end up in a success or in a
6308 pending
6309 Success - means that the request was processed and the proper state
6310 transition already occurred or will occur when the resp is received
6311 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006312
Jeff Johnson295189b2012-06-20 16:38:30 -07006313 Pending - means the request could not be processed at this moment in time
6314 because the FSM was already busy so no state transition or dequeueing
6315 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006316
Jeff Johnson295189b2012-06-20 16:38:30 -07006317 Success for synchronous case means that the transition may occur and
6318 processing of pending requests may continue - so it should go through
6319 and restores the state and continue processing queued requests*/
6320 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6321 ( WDI_STATUS_PENDING != wdiStatus ))
6322 {
6323 if ( WDI_RESPONSE_EVENT != wdiEV)
6324 {
6325 /*The request has failed or could not be processed - transition back to
6326 the old state - check to see if anything was queued and try to execute
6327 The dequeue logic should post a message to a thread and return - no
6328 actual processing can occur */
6329 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6330 }
6331 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006332
Jeff Johnson295189b2012-06-20 16:38:30 -07006333 }
6334
6335 /* we have completed processing the event */
6336 wpalMutexRelease(&pWDICtx->wptMutex);
6337
Jeff Johnsone7245742012-09-05 17:12:55 -07006338 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006339
6340}/*WDI_PostMainEvent*/
6341
6342
6343/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006344 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006345--------------------------------------------------------------------------*/
6346/**
6347 @brief Main FSM Start function for all states except BUSY
6348
Jeff Johnsone7245742012-09-05 17:12:55 -07006349
6350 @param pWDICtx: pointer to the WLAN DAL context
6351 pEventData: pointer to the event information structure
6352
Jeff Johnson295189b2012-06-20 16:38:30 -07006353 @see
6354 @return Result of the function call
6355*/
6356WDI_Status
6357WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006358(
Jeff Johnson295189b2012-06-20 16:38:30 -07006359 WDI_ControlBlockType* pWDICtx,
6360 WDI_EventInfoType* pEventData
6361)
6362{
6363
6364 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006365 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006366 ----------------------------------------------------------------------*/
6367 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6368 {
6369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006370 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006371 pWDICtx, pEventData);
6372 return WDI_STATUS_E_FAILURE;
6373 }
6374
6375 wpalMutexAcquire(&pWDICtx->wptMutex);
6376
6377 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006378 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006379 ----------------------------------------------------------------------*/
6380 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6381 {
6382 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6383 "Control Transport not yet Open - queueing the request");
6384
6385 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006386 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006387
6388 wpalMutexRelease(&pWDICtx->wptMutex);
6389 return WDI_STATUS_PENDING;
6390 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006391
Jeff Johnson295189b2012-06-20 16:38:30 -07006392 wpalMutexRelease(&pWDICtx->wptMutex);
6393
6394 /*Return Success*/
6395 return WDI_ProcessRequest( pWDICtx, pEventData );
6396
6397}/*WDI_MainStart*/
6398
6399/**
6400 @brief Main FSM Response function for state INIT
6401
Jeff Johnsone7245742012-09-05 17:12:55 -07006402
6403 @param pWDICtx: pointer to the WLAN DAL context
6404 pEventData: pointer to the event information structure
6405
Jeff Johnson295189b2012-06-20 16:38:30 -07006406 @see
6407 @return Result of the function call
6408*/
6409WDI_Status
6410WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006411(
Jeff Johnson295189b2012-06-20 16:38:30 -07006412 WDI_ControlBlockType* pWDICtx,
6413 WDI_EventInfoType* pEventData
6414)
6415{
6416 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006417 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006418 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006419 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006420
6421 /*Return Success*/
6422 return WDI_STATUS_E_NOT_ALLOWED;
6423}/* WDI_MainRspInit */
6424
6425/**
6426 @brief Main FSM Close function for all states except BUSY
6427
Jeff Johnsone7245742012-09-05 17:12:55 -07006428
6429 @param pWDICtx: pointer to the WLAN DAL context
6430 pEventData: pointer to the event information structure
6431
Jeff Johnson295189b2012-06-20 16:38:30 -07006432 @see
6433 @return Result of the function call
6434*/
6435WDI_Status
6436WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006437(
Jeff Johnson295189b2012-06-20 16:38:30 -07006438 WDI_ControlBlockType* pWDICtx,
6439 WDI_EventInfoType* pEventData
6440)
6441{
6442
6443 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006444 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006445 ----------------------------------------------------------------------*/
6446 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6447 {
6448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006449 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006450 pWDICtx, pEventData);
6451 return WDI_STATUS_E_FAILURE;
6452 }
6453
6454 /*Return Success*/
6455 return WDI_ProcessRequest( pWDICtx, pEventData );
6456
6457}/*WDI_MainClose*/
6458/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006459 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006460--------------------------------------------------------------------------*/
6461/**
6462 @brief Main FSM Start function for state STARTED
6463
Jeff Johnsone7245742012-09-05 17:12:55 -07006464
6465 @param pWDICtx: pointer to the WLAN DAL context
6466 pEventData: pointer to the event information structure
6467
Jeff Johnson295189b2012-06-20 16:38:30 -07006468 @see
6469 @return Result of the function call
6470*/
6471WDI_Status
6472WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006473(
Jeff Johnson295189b2012-06-20 16:38:30 -07006474 WDI_ControlBlockType* pWDICtx,
6475 WDI_EventInfoType* pEventData
6476)
6477{
6478 WDI_StartRspCb wdiStartRspCb = NULL;
6479 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6480
6481 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006482 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006483 ----------------------------------------------------------------------*/
6484 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6485 {
6486 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006487 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006488 pWDICtx, pEventData);
6489 return WDI_STATUS_E_FAILURE;
6490 }
6491
6492 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006493 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006494 ----------------------------------------------------------------------*/
6495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006496 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006497
6498 wpalMutexAcquire(&pWDICtx->wptMutex);
6499
6500 /*Transition back to started because the post function transitioned us to
6501 busy*/
6502 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6503
6504 /*Check to see if any request is pending*/
6505 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006506
Jeff Johnson295189b2012-06-20 16:38:30 -07006507 wpalMutexRelease(&pWDICtx->wptMutex);
6508
6509 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006510 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6511
Jeff Johnson295189b2012-06-20 16:38:30 -07006512 /*Notify UMAC*/
6513 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6514
6515 /*Return Success*/
6516 return WDI_STATUS_SUCCESS;
6517
6518}/*WDI_MainStartStarted*/
6519
6520/**
6521 @brief Main FSM Stop function for state STARTED
6522
Jeff Johnsone7245742012-09-05 17:12:55 -07006523
6524 @param pWDICtx: pointer to the WLAN DAL context
6525 pEventData: pointer to the event information structure
6526
Jeff Johnson295189b2012-06-20 16:38:30 -07006527 @see
6528 @return Result of the function call
6529*/
6530WDI_Status
6531WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006532(
Jeff Johnson295189b2012-06-20 16:38:30 -07006533 WDI_ControlBlockType* pWDICtx,
6534 WDI_EventInfoType* pEventData
6535)
6536{
6537 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006538 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006539 ----------------------------------------------------------------------*/
6540 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6541 {
6542 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006543 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006544 pWDICtx, pEventData);
6545 return WDI_STATUS_E_FAILURE;
6546 }
6547
6548 /*State at this point is BUSY - because we enter this state before posting
6549 an event to the FSM in order to prevent potential race conditions*/
6550
6551 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6552 "Processing stop request in FSM");
6553
6554 /*Return Success*/
6555 return WDI_ProcessRequest( pWDICtx, pEventData );
6556
6557}/*WDI_MainStopStarted*/
6558/**
6559 @brief Main FSM Request function for state started
6560
Jeff Johnsone7245742012-09-05 17:12:55 -07006561
6562 @param pWDICtx: pointer to the WLAN DAL context
6563 pEventData: pointer to the event information structure
6564
Jeff Johnson295189b2012-06-20 16:38:30 -07006565 @see
6566 @return Result of the function call
6567*/
6568WDI_Status
6569WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006570(
Jeff Johnson295189b2012-06-20 16:38:30 -07006571 WDI_ControlBlockType* pWDICtx,
6572 WDI_EventInfoType* pEventData
6573)
6574{
6575
6576 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006577 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006578 ----------------------------------------------------------------------*/
6579 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6580 {
6581 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006582 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006583 pWDICtx, pEventData);
6584 return WDI_STATUS_E_FAILURE;
6585 }
6586
6587 /*State at this point is BUSY - because we enter this state before posting
6588 an event to the FSM in order to prevent potential race conditions*/
6589
6590 /*Return Success*/
6591 return WDI_ProcessRequest( pWDICtx, pEventData );
6592
6593}/*WDI_MainReqStarted*/
6594
6595/**
6596 @brief Main FSM Response function for all states except INIT
6597
Jeff Johnsone7245742012-09-05 17:12:55 -07006598
6599 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006600 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006601
Jeff Johnson295189b2012-06-20 16:38:30 -07006602 @see
6603 @return Result of the function call
6604*/
6605WDI_Status
6606WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006607(
Jeff Johnson295189b2012-06-20 16:38:30 -07006608 WDI_ControlBlockType* pWDICtx,
6609 WDI_EventInfoType* pEventData
6610)
6611{
Jeff Johnsone7245742012-09-05 17:12:55 -07006612 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006613 wpt_boolean expectedResponse;
6614
6615 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006616 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006617 ----------------------------------------------------------------------*/
6618 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6619 {
6620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006621 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006622 pWDICtx, pEventData);
6623 return WDI_STATUS_E_FAILURE;
6624 }
6625
6626 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6627 {
6628 /* we received an expected response */
6629 expectedResponse = eWLAN_PAL_TRUE;
6630
6631 /*We expect that we will transition to started after this processing*/
6632 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6633
6634 /* we are no longer expecting a response */
6635 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6636 }
6637 else
6638 {
6639 /* we received an indication or unexpected response */
6640 expectedResponse = eWLAN_PAL_FALSE;
6641 /* for indications no need to update state from what it is right
6642 now, unless it explicitly does it in the indication handler (say
6643 for device failure ind) */
6644 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6645 }
6646
6647 /*Process the response and indication */
6648 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6649
6650 /*Lock the CB as we are about to do a state transition*/
6651 wpalMutexAcquire(&pWDICtx->wptMutex);
6652
6653 /*Transition to the expected state after the response processing
6654 - this should always be started state with the following exceptions:
6655 1. processing of a failed start response
6656 2. device failure detected while processing response
6657 3. stop response received*/
6658 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006659
Jeff Johnson295189b2012-06-20 16:38:30 -07006660 /*Dequeue request that may have been queued while we were waiting for the
6661 response */
6662 if ( expectedResponse )
6663 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006664 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006665 }
6666
6667 wpalMutexRelease(&pWDICtx->wptMutex);
6668
6669 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006670 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006671
6672}/*WDI_MainRsp*/
6673
6674/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006675 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006676--------------------------------------------------------------------------*/
6677/**
6678 @brief Main FSM Stop function for state STOPPED
6679
Jeff Johnsone7245742012-09-05 17:12:55 -07006680
6681 @param pWDICtx: pointer to the WLAN DAL context
6682 pEventData: pointer to the event information structure
6683
Jeff Johnson295189b2012-06-20 16:38:30 -07006684 @see
6685 @return Result of the function call
6686*/
6687WDI_Status
6688WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006689(
Jeff Johnson295189b2012-06-20 16:38:30 -07006690 WDI_ControlBlockType* pWDICtx,
6691 WDI_EventInfoType* pEventData
6692)
6693{
6694 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006695 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006696 ----------------------------------------------------------------------*/
6697 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6698 {
6699 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006700 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006701 pWDICtx, pEventData);
6702 return WDI_STATUS_E_FAILURE;
6703 }
6704
6705 /*We should normally not get a STOP request if we are already stopped
6706 since we should normally be stopped by the UMAC. However in some
6707 error situations we put ourselves in the stopped state without the
6708 UMAC knowing, so when we get a STOP request in this state we still
6709 process it since we need to clean up the underlying state */
6710 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6711 "Processing stop request while stopped in FSM");
6712
6713 /*Return Success*/
6714 return WDI_ProcessRequest( pWDICtx, pEventData );
6715
6716}/*WDI_MainStopStopped*/
6717
6718/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006719 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006720--------------------------------------------------------------------------*/
6721/**
6722 @brief Main FSM Start function for state BUSY
6723
Jeff Johnsone7245742012-09-05 17:12:55 -07006724
6725 @param pWDICtx: pointer to the WLAN DAL context
6726 pEventData: pointer to the event information structure
6727
Jeff Johnson295189b2012-06-20 16:38:30 -07006728 @see
6729 @return Result of the function call
6730*/
6731WDI_Status
6732WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006733(
Jeff Johnson295189b2012-06-20 16:38:30 -07006734 WDI_ControlBlockType* pWDICtx,
6735 WDI_EventInfoType* pEventData
6736)
6737{
6738 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006739 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006740 ----------------------------------------------------------------------*/
6741 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6742 {
6743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006744 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006745 pWDICtx, pEventData);
6746 return WDI_STATUS_E_FAILURE;
6747 }
6748
6749 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006750 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006751 ----------------------------------------------------------------------*/
6752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6753 "WDI Busy state - queue start request");
6754
6755 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006756 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006757
6758 /*Return Success*/
6759 return WDI_STATUS_PENDING;
6760}/*WDI_MainStartBusy*/
6761
6762/**
6763 @brief Main FSM Stop function for state BUSY
6764
Jeff Johnsone7245742012-09-05 17:12:55 -07006765
6766 @param pWDICtx: pointer to the WLAN DAL context
6767 pEventData: pointer to the event information structure
6768
Jeff Johnson295189b2012-06-20 16:38:30 -07006769 @see
6770 @return Result of the function call
6771*/
6772WDI_Status
6773WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006774(
Jeff Johnson295189b2012-06-20 16:38:30 -07006775 WDI_ControlBlockType* pWDICtx,
6776 WDI_EventInfoType* pEventData
6777)
6778{
6779 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006780 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006781 ----------------------------------------------------------------------*/
6782 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6783 {
6784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006785 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006786 pWDICtx, pEventData);
6787 return WDI_STATUS_E_FAILURE;
6788 }
6789
6790 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006791 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006792 ----------------------------------------------------------------------*/
6793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6794 "WDI Busy state - queue stop request");
6795
Jeff Johnsone7245742012-09-05 17:12:55 -07006796 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006797 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006798
Jeff Johnson295189b2012-06-20 16:38:30 -07006799}/*WDI_MainStopBusy*/
6800
6801/**
6802 @brief Main FSM Request function for state BUSY
6803
Jeff Johnsone7245742012-09-05 17:12:55 -07006804
6805 @param pWDICtx: pointer to the WLAN DAL context
6806 pEventData: pointer to the event information structure
6807
Jeff Johnson295189b2012-06-20 16:38:30 -07006808 @see
6809 @return Result of the function call
6810*/
6811WDI_Status
6812WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006813(
Jeff Johnson295189b2012-06-20 16:38:30 -07006814 WDI_ControlBlockType* pWDICtx,
6815 WDI_EventInfoType* pEventData
6816)
6817{
6818 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006819 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006820 ----------------------------------------------------------------------*/
6821 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6822 {
6823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006824 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006825 pWDICtx, pEventData);
6826 return WDI_STATUS_E_FAILURE;
6827 }
6828
6829 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006830 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006831 ----------------------------------------------------------------------*/
6832 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6833 "WDI Busy state - queue request %d because waiting for response %d",
6834 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6835
Jeff Johnsone7245742012-09-05 17:12:55 -07006836 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006837 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006838
Jeff Johnson295189b2012-06-20 16:38:30 -07006839}/*WDI_MainReqBusy*/
6840/**
6841 @brief Main FSM Close function for state BUSY
6842
Jeff Johnsone7245742012-09-05 17:12:55 -07006843
6844 @param pWDICtx: pointer to the WLAN DAL context
6845 pEventData: pointer to the event information structure
6846
Jeff Johnson295189b2012-06-20 16:38:30 -07006847 @see
6848 @return Result of the function call
6849*/
6850WDI_Status
6851WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006852(
Jeff Johnson295189b2012-06-20 16:38:30 -07006853 WDI_ControlBlockType* pWDICtx,
6854 WDI_EventInfoType* pEventData
6855)
6856{
6857 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006858 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006859 ----------------------------------------------------------------------*/
6860 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6861 {
6862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006863 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006864 pWDICtx, pEventData);
6865 return WDI_STATUS_E_FAILURE;
6866 }
6867
6868 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006869 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006870 ----------------------------------------------------------------------*/
6871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6872 "WDI Busy state - queue close request");
6873
Jeff Johnsone7245742012-09-05 17:12:55 -07006874 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006875 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006876
Jeff Johnson295189b2012-06-20 16:38:30 -07006877}/*WDI_MainCloseBusy*/
6878
6879/**
6880 @brief Main FSM Shutdown function for INIT & STARTED states
6881
6882
6883 @param pWDICtx: pointer to the WLAN DAL context
6884 pEventData: pointer to the event information structure
6885
6886 @see
6887 @return Result of the function call
6888*/
6889WDI_Status
6890WDI_MainShutdown
6891(
6892 WDI_ControlBlockType* pWDICtx,
6893 WDI_EventInfoType* pEventData
6894)
6895{
6896 /*--------------------------------------------------------------------
6897 Sanity Check
6898 ----------------------------------------------------------------------*/
6899 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6900 {
6901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006902 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006903 pWDICtx, pEventData);
6904 return WDI_STATUS_E_FAILURE;
6905 }
6906
6907 /*State at this point is BUSY - because we enter this state before posting
6908 an event to the FSM in order to prevent potential race conditions*/
6909
6910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6911 "Processing shutdown request in FSM");
6912
6913 /*Return Success*/
6914 return WDI_ProcessRequest( pWDICtx, pEventData );
6915
6916}/*WDI_MainShutdown*/
6917
6918/**
6919 @brief Main FSM Shutdown function for BUSY state
6920
6921
6922 @param pWDICtx: pointer to the WLAN DAL context
6923 pEventData: pointer to the event information structure
6924
6925 @see
6926 @return Result of the function call
6927*/
6928WDI_Status
6929WDI_MainShutdownBusy
6930(
6931 WDI_ControlBlockType* pWDICtx,
6932 WDI_EventInfoType* pEventData
6933)
6934{
6935 /*--------------------------------------------------------------------
6936 Sanity Check
6937 ----------------------------------------------------------------------*/
6938 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6939 {
6940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006941 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006942 pWDICtx, pEventData);
6943 return WDI_STATUS_E_FAILURE;
6944 }
6945
6946 /* If you are waiting for a HAL response at this stage, you are not
6947 * going to get it. Riva is already shutdown/crashed.
6948 */
6949 wpalTimerStop(&gWDICb.wptResponseTimer);
6950
6951 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6952 "Processing shutdown request in FSM: Busy state ");
6953
6954 return WDI_ProcessRequest( pWDICtx, pEventData );
6955
6956}/*WDI_MainShutdownBusy*/
6957
6958
Jeff Johnsone7245742012-09-05 17:12:55 -07006959/*=======================================================================
6960
Jeff Johnson295189b2012-06-20 16:38:30 -07006961 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006962
Jeff Johnson295189b2012-06-20 16:38:30 -07006963*=======================================================================*/
6964
6965/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006966 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006967========================================================================*/
6968/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006969 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006970 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006971
6972 @param pWDICtx: pointer to the WLAN DAL context
6973 pEventData: pointer to the event information structure
6974
Jeff Johnson295189b2012-06-20 16:38:30 -07006975 @see
6976 @return Result of the function call
6977*/
6978WDI_Status
6979WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006980(
Jeff Johnson295189b2012-06-20 16:38:30 -07006981 WDI_ControlBlockType* pWDICtx,
6982 WDI_EventInfoType* pEventData
6983)
6984{
6985 WDI_StartReqParamsType* pwdiStartParams = NULL;
6986 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006987 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006988 wpt_uint16 usDataOffset = 0;
6989 wpt_uint16 usSendSize = 0;
6990
Jeff Johnsone7245742012-09-05 17:12:55 -07006991 tHalMacStartReqMsg halStartReq;
6992 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6994
6995 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006996 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006997 -------------------------------------------------------------------------*/
6998 if (( NULL == pEventData ) ||
6999 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7000 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7001 {
7002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007003 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007004 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007005 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007006 }
7007
7008 /*-----------------------------------------------------------------------
7009 Get message buffer
7010 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007011 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007012 pwdiStartParams->usConfigBufferLen;
7013
Jeff Johnsone7245742012-09-05 17:12:55 -07007014 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007015 usLen,
7016 &pSendBuffer, &usDataOffset, &usSendSize))||
7017 ( usSendSize < (usDataOffset + usLen )))
7018 {
7019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007020 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007021 pEventData, pwdiStartParams, wdiStartRspCb);
7022 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007024 }
7025
7026 /*-----------------------------------------------------------------------
7027 Fill in the message
7028 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007029 halStartReq.startReqParams.driverType =
7030 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007031
Jeff Johnsone7245742012-09-05 17:12:55 -07007032 halStartReq.startReqParams.uConfigBufferLen =
7033 pwdiStartParams->usConfigBufferLen;
7034 wpalMemoryCopy( pSendBuffer+usDataOffset,
7035 &halStartReq.startReqParams,
7036 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007037
Jeff Johnsone7245742012-09-05 17:12:55 -07007038 usDataOffset += sizeof(halStartReq.startReqParams);
7039 wpalMemoryCopy( pSendBuffer+usDataOffset,
7040 pwdiStartParams->pConfigBuffer,
7041 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007042
7043 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007044 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007045
7046 /*Save Low Level Ind CB and associated user data - it will be used further
7047 on when an indication is coming from the lower MAC*/
7048 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007049 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007050
Jeff Johnsone7245742012-09-05 17:12:55 -07007051 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007053 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007054 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007055 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007056 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7057
Jeff Johnsone7245742012-09-05 17:12:55 -07007058
Jeff Johnson295189b2012-06-20 16:38:30 -07007059}/*WDI_ProcessStartReq*/
7060
7061/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007062 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007063 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007064
7065 @param pWDICtx: pointer to the WLAN DAL context
7066 pEventData: pointer to the event information structure
7067
Jeff Johnson295189b2012-06-20 16:38:30 -07007068 @see
7069 @return Result of the function call
7070*/
7071WDI_Status
7072WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007073(
Jeff Johnson295189b2012-06-20 16:38:30 -07007074 WDI_ControlBlockType* pWDICtx,
7075 WDI_EventInfoType* pEventData
7076)
7077{
7078 WDI_StopReqParamsType* pwdiStopParams = NULL;
7079 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007080 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007081 wpt_uint16 usDataOffset = 0;
7082 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007083 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007084 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7086
7087 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007088 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007089 -------------------------------------------------------------------------*/
7090 if (( NULL == pEventData ) ||
7091 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7092 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7093 {
7094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007095 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007096 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007097 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007098 }
7099
7100 /*-----------------------------------------------------------------------
7101 Get message buffer
7102 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007103 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007104 sizeof(halStopReq.stopReqParams),
7105 &pSendBuffer, &usDataOffset, &usSendSize))||
7106 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7107 {
7108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007109 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007110 pEventData, pwdiStopParams, wdiStopRspCb);
7111 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007112 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007113 }
7114
7115 /*-----------------------------------------------------------------------
7116 Fill in the message
7117 -----------------------------------------------------------------------*/
7118 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7119 pwdiStopParams->wdiStopReason);
7120
Jeff Johnsone7245742012-09-05 17:12:55 -07007121 wpalMemoryCopy( pSendBuffer+usDataOffset,
7122 &halStopReq.stopReqParams,
7123 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007124
7125 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007126 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007127
7128 /*! TO DO: stop the data services */
7129 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7130 {
7131 /*Stop the STA Table !UT- check this logic again
7132 It is safer to do it here than on the response - because a stop is imminent*/
7133 WDI_STATableStop(pWDICtx);
7134
7135 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007136 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7137 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007138 {
7139 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7140 "WDI Init failed to reset power state event");
7141
Jeff Johnsone7245742012-09-05 17:12:55 -07007142 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007143 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007144 }
7145 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007146 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7147 if( eWLAN_PAL_STATUS_SUCCESS != status )
7148 {
7149 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007150 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state", status);
Ravali85acf6b2012-12-12 14:01:38 -08007151 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007152 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007153 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007154 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007155 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007156 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007157 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7158 WDI_SET_POWER_STATE_TIMEOUT);
7159 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007160 {
7161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7162 "WDI Init failed to wait on an event");
7163
Jeff Johnsone7245742012-09-05 17:12:55 -07007164 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007165 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007166 }
7167 }
7168
7169 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007170 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007171 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007172 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007173 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7174
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007175fail:
7176 // Release the message buffer so we don't leak
7177 wpalMemoryFree(pSendBuffer);
7178
7179failRequest:
7180 //WDA should have failure check to avoid the memory leak
7181 return WDI_STATUS_E_FAILURE;
7182
Jeff Johnson295189b2012-06-20 16:38:30 -07007183}/*WDI_ProcessStopReq*/
7184
7185/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007186 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007187 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007188
7189 @param pWDICtx: pointer to the WLAN DAL context
7190 pEventData: pointer to the event information structure
7191
Jeff Johnson295189b2012-06-20 16:38:30 -07007192 @see
7193 @return Result of the function call
7194*/
7195WDI_Status
7196WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007197(
Jeff Johnson295189b2012-06-20 16:38:30 -07007198 WDI_ControlBlockType* pWDICtx,
7199 WDI_EventInfoType* pEventData
7200)
7201{
Jeff Johnsone7245742012-09-05 17:12:55 -07007202 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7204
7205 /*Lock control block for cleanup*/
7206 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007207
Jeff Johnson295189b2012-06-20 16:38:30 -07007208 /*Clear all pending request*/
7209 WDI_ClearPendingRequests(pWDICtx);
7210
7211 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007212 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007213
7214 /* Close Data transport*/
7215 /* FTM mode does not open Data Path */
7216 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7217 {
7218 WDTS_Close(pWDICtx);
7219 }
7220
7221 /*Close the STA Table !UT- check this logic again*/
7222 WDI_STATableClose(pWDICtx);
7223
7224 /*close the PAL */
7225 wptStatus = wpalClose(pWDICtx->pPALContext);
7226 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7227 {
7228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7229 "Failed to wpal Close %d", wptStatus);
7230 WDI_ASSERT(0);
7231 }
7232
7233 /*Transition back to init state*/
7234 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7235
7236 wpalMutexRelease(&pWDICtx->wptMutex);
7237
7238 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007239 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007240
Jeff Johnsone7245742012-09-05 17:12:55 -07007241 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007242}/*WDI_ProcessCloseReq*/
7243
7244
7245/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007246 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007247===========================================================================*/
7248
7249/**
7250 @brief Process Init Scan Request function (called when Main FSM
7251 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007252
7253 @param pWDICtx: pointer to the WLAN DAL context
7254 pEventData: pointer to the event information structure
7255
Jeff Johnson295189b2012-06-20 16:38:30 -07007256 @see
7257 @return Result of the function call
7258*/
7259WDI_Status
7260WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007261(
Jeff Johnson295189b2012-06-20 16:38:30 -07007262 WDI_ControlBlockType* pWDICtx,
7263 WDI_EventInfoType* pEventData
7264)
7265{
7266 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7267 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007268 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007269 wpt_uint16 usDataOffset = 0;
7270 wpt_uint16 usSendSize = 0;
7271 wpt_uint8 i = 0;
7272
7273 tHalInitScanReqMsg halInitScanReqMsg;
7274
Jeff Johnsone7245742012-09-05 17:12:55 -07007275 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007276 * It shold be removed once host and riva changes are in sync*/
7277 tHalInitScanConReqMsg halInitScanConReqMsg;
7278
7279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7280
7281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007282 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007283 -------------------------------------------------------------------------*/
7284 if (( NULL == pEventData ) ||
7285 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7286 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7287 {
7288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007289 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007290 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007292 }
7293
7294#if 0
7295 wpalMutexAcquire(&pWDICtx->wptMutex);
7296 /*-----------------------------------------------------------------------
7297 Check to see if SCAN is already in progress - if so reject the req
7298 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007299 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007300 -----------------------------------------------------------------------*/
7301 if ( pWDICtx->bScanInProgress )
7302 {
7303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7304 "Scan is already in progress - subsequent scan is not allowed"
7305 " until the first scan completes");
7306
7307 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007308 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007309 }
7310
Jeff Johnsone7245742012-09-05 17:12:55 -07007311 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7312 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007313
7314 wpalMutexRelease(&pWDICtx->wptMutex);
7315#endif
Viral Modid86bde22012-12-10 13:09:21 -08007316 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007317 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007318 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007319 * It shold be removed once host and riva changes are in sync*/
7320 /*-----------------------------------------------------------------------
7321 Get message buffer
7322 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007323 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007324 sizeof(halInitScanConReqMsg.initScanParams),
7325 &pSendBuffer, &usDataOffset, &usSendSize))||
7326 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7327 {
7328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007329 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007330 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007333 }
7334
7335
7336 /*-----------------------------------------------------------------------
7337 Fill in the message
7338 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007339 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007340 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7341
7342 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7343 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7344
Jeff Johnsone7245742012-09-05 17:12:55 -07007345 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007346 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007347 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007348 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007349 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007350 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7351
7352 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7353 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7354
Jeff Johnson295189b2012-06-20 16:38:30 -07007355 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7356 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007357
Jeff Johnsone7245742012-09-05 17:12:55 -07007358 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007359 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7360
7361 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7362 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007363 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007364 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7365 }
7366
Jeff Johnsone7245742012-09-05 17:12:55 -07007367 wpalMemoryCopy( pSendBuffer+usDataOffset,
7368 &halInitScanConReqMsg.initScanParams,
7369 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007370 }
7371 else
7372 {
7373 /*-----------------------------------------------------------------------
7374 Get message buffer
7375 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007376 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007377 sizeof(halInitScanReqMsg.initScanParams),
7378 &pSendBuffer, &usDataOffset, &usSendSize))||
7379 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7380 {
7381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007382 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007383 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7384 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007385 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007386 }
7387
7388
7389 /*-----------------------------------------------------------------------
7390 Fill in the message
7391 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007392 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007393 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7394
7395 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7396 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7397
Jeff Johnsone7245742012-09-05 17:12:55 -07007398 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007399 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007400 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007401 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007402 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007403 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7404
7405 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7406 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7407
Jeff Johnsone7245742012-09-05 17:12:55 -07007408 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007409 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7410
7411 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7412 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007413 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007414 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7415 }
7416
Jeff Johnsone7245742012-09-05 17:12:55 -07007417 wpalMemoryCopy( pSendBuffer+usDataOffset,
7418 &halInitScanReqMsg.initScanParams,
7419 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007420 }
7421
7422 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007423 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007424
7425 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007426 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007427 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007428 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007429 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7430
7431}/*WDI_ProcessInitScanReq*/
7432
7433/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007434 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007435 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007436
7437 @param pWDICtx: pointer to the WLAN DAL context
7438 pEventData: pointer to the event information structure
7439
Jeff Johnson295189b2012-06-20 16:38:30 -07007440 @see
7441 @return Result of the function call
7442*/
7443WDI_Status
7444WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007445(
Jeff Johnson295189b2012-06-20 16:38:30 -07007446 WDI_ControlBlockType* pWDICtx,
7447 WDI_EventInfoType* pEventData
7448)
7449{
7450 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7451 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007452 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007453 wpt_uint16 usDataOffset = 0;
7454 wpt_uint16 usSendSize = 0;
7455
Jeff Johnsone7245742012-09-05 17:12:55 -07007456 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007457 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7458
7459 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007460 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007461 -------------------------------------------------------------------------*/
7462 if (( NULL == pEventData ) ||
7463 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7464 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7465 {
7466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007467 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007468 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007469 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007470 }
7471
7472#if 0
7473 wpalMutexAcquire(&pWDICtx->wptMutex);
7474 /*-----------------------------------------------------------------------
7475 Check to see if SCAN is already in progress - start scan is only
7476 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007477 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007478 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007479 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007480 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7481 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7482 {
7483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7484 "Scan start not allowed in this state %d %d",
7485 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007486
Jeff Johnson295189b2012-06-20 16:38:30 -07007487 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007488 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007489 }
7490
Jeff Johnsone7245742012-09-05 17:12:55 -07007491 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007492
7493 wpalMutexRelease(&pWDICtx->wptMutex);
7494#endif
7495
7496 /*-----------------------------------------------------------------------
7497 Get message buffer
7498 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007499 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007500 sizeof(halStartScanReqMsg.startScanParams),
7501 &pSendBuffer, &usDataOffset, &usSendSize))||
7502 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7503 {
7504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007505 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007506 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7507 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007508 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007509 }
7510
Jeff Johnsone7245742012-09-05 17:12:55 -07007511 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007512 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007513 wpalMemoryCopy( pSendBuffer+usDataOffset,
7514 &halStartScanReqMsg.startScanParams,
7515 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007516
7517 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007518 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007519
7520 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007521 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007522 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007523 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007524 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7525}/*WDI_ProcessStartScanReq*/
7526
7527
7528/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007529 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007530 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007531
7532 @param pWDICtx: pointer to the WLAN DAL context
7533 pEventData: pointer to the event information structure
7534
Jeff Johnson295189b2012-06-20 16:38:30 -07007535 @see
7536 @return Result of the function call
7537*/
7538WDI_Status
7539WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007540(
Jeff Johnson295189b2012-06-20 16:38:30 -07007541 WDI_ControlBlockType* pWDICtx,
7542 WDI_EventInfoType* pEventData
7543)
7544{
7545 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7546 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007547 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007548 wpt_uint16 usDataOffset = 0;
7549 wpt_uint16 usSendSize = 0;
7550
Jeff Johnsone7245742012-09-05 17:12:55 -07007551 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007552 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7553
7554 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007555 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007556 -------------------------------------------------------------------------*/
7557 if (( NULL == pEventData ) ||
7558 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7559 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7560 {
7561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007562 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007563 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007564 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007565 }
7566
Jeff Johnsone7245742012-09-05 17:12:55 -07007567 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7568 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007569 * forwarded to HAL and result in hang*/
7570#if 0
7571 wpalMutexAcquire(&pWDICtx->wptMutex);
7572 /*-----------------------------------------------------------------------
7573 Check to see if SCAN is already in progress - end scan is only
7574 allowed when a scan is ongoing and the state of the scan procedure
7575 is started
7576 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007577 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007578 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7579 {
7580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7581 "End start not allowed in this state %d %d",
7582 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007583
Jeff Johnson295189b2012-06-20 16:38:30 -07007584 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007585 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007586 }
7587
Jeff Johnsone7245742012-09-05 17:12:55 -07007588 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007589
7590 wpalMutexRelease(&pWDICtx->wptMutex);
7591#endif
7592
7593 /*-----------------------------------------------------------------------
7594 Get message buffer
7595 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007596 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007597 sizeof(halEndScanReqMsg.endScanParams),
7598 &pSendBuffer, &usDataOffset, &usSendSize))||
7599 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7600 {
7601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007602 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007603 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007606 }
7607
7608 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7609
Jeff Johnsone7245742012-09-05 17:12:55 -07007610 wpalMemoryCopy( pSendBuffer+usDataOffset,
7611 &halEndScanReqMsg.endScanParams,
7612 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007613
7614 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007615 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007616
7617 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007618 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007619 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007620 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007621 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7622}/*WDI_ProcessEndScanReq*/
7623
7624
7625/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007626 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007627 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007628
7629 @param pWDICtx: pointer to the WLAN DAL context
7630 pEventData: pointer to the event information structure
7631
Jeff Johnson295189b2012-06-20 16:38:30 -07007632 @see
7633 @return Result of the function call
7634*/
7635WDI_Status
7636WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007637(
Jeff Johnson295189b2012-06-20 16:38:30 -07007638 WDI_ControlBlockType* pWDICtx,
7639 WDI_EventInfoType* pEventData
7640)
7641{
7642 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7643 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007644 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007645 wpt_uint16 usDataOffset = 0;
7646 wpt_uint16 usSendSize = 0;
7647 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08007648 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007649 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7651
7652 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007653 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007654 -------------------------------------------------------------------------*/
7655 if (( NULL == pEventData ) ||
7656 ( NULL == pEventData->pEventData) ||
7657 ( NULL == pEventData->pCBfnc))
7658 {
7659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007660 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007661 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007662 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007663 }
7664
7665 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7666 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007667 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7668 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007669 * forwarded to HAL and result in hang*/
7670#if 0
7671 wpalMutexAcquire(&pWDICtx->wptMutex);
7672 /*-----------------------------------------------------------------------
7673 Check to see if SCAN is already in progress
7674 Finish scan gets invoked any scan states. ie. abort scan
7675 It should be allowed in any states.
7676 -----------------------------------------------------------------------*/
7677 if ( !pWDICtx->bScanInProgress )
7678 {
7679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7680 "Finish start not allowed in this state %d",
7681 pWDICtx->bScanInProgress );
7682
7683 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08007684 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007685 }
7686
7687 /*-----------------------------------------------------------------------
7688 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007689 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007690 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007691 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7692 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007693 wpalMutexRelease(&pWDICtx->wptMutex);
7694#endif
7695
7696 if ( pWDICtx->bInBmps )
7697 {
7698 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08007699 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7700 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7701 {
7702 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007703 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08007704 WDI_ASSERT(0);
7705 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007706 }
7707
7708 /*-----------------------------------------------------------------------
7709 Get message buffer
7710 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007711 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007712 sizeof(halFinishScanReqMsg.finishScanParams),
7713 &pSendBuffer, &usDataOffset, &usSendSize))||
7714 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7715 {
7716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007717 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007718 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7719 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007720 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007721 }
7722
Jeff Johnsone7245742012-09-05 17:12:55 -07007723 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007724 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7725
Jeff Johnsone7245742012-09-05 17:12:55 -07007726 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007727 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7728
Jeff Johnsone7245742012-09-05 17:12:55 -07007729 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007730 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7731
7732 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7733 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7734
Jeff Johnsone7245742012-09-05 17:12:55 -07007735 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007736 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007737 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007738 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007739 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007740 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7741
Jeff Johnsone7245742012-09-05 17:12:55 -07007742 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007743 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7744
7745 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7746 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007747 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007748 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7749 }
7750
7751 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7752 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7753
Jeff Johnsone7245742012-09-05 17:12:55 -07007754 wpalMemoryCopy( pSendBuffer+usDataOffset,
7755 &halFinishScanReqMsg.finishScanParams,
7756 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007757
7758 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007759 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007760
7761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007762 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007763 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007764 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007765 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7766}/*WDI_ProcessFinishScanReq*/
7767
7768
7769/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007770 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007771==========================================================================*/
7772/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007773 @brief Process BSS Join for a given Session
7774
7775 @param pWDICtx: pointer to the WLAN DAL context
7776 pEventData: pointer to the event information structure
7777
Jeff Johnson295189b2012-06-20 16:38:30 -07007778 @see
7779 @return Result of the function call
7780*/
7781WDI_Status
7782WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007783(
Jeff Johnson295189b2012-06-20 16:38:30 -07007784 WDI_ControlBlockType* pWDICtx,
7785 WDI_JoinReqParamsType* pwdiJoinParams,
7786 WDI_JoinRspCb wdiJoinRspCb,
7787 void* pUserData
7788)
7789{
7790 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007791 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007792 wpt_uint16 usDataOffset = 0;
7793 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007794 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007795
Jeff Johnsone7245742012-09-05 17:12:55 -07007796 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7798
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007799 wpalMutexAcquire(&pWDICtx->wptMutex);
7800
Jeff Johnson295189b2012-06-20 16:38:30 -07007801 /*------------------------------------------------------------------------
7802 Check to see if we have any session with this BSSID already stored, we
7803 should not
7804 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007805 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7806 pwdiJoinParams->wdiReqInfo.macBSSID,
7807 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007808
7809 if ( NULL != pBSSSes )
7810 {
7811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007812 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7813 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007814
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007815 /*reset the bAssociationInProgress otherwise the next
7816 *join request will be queued*/
7817 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7818 wpalMutexRelease(&pWDICtx->wptMutex);
7819 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007820 }
7821
Jeff Johnson295189b2012-06-20 16:38:30 -07007822 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007823 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007824 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007825 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007826 if ( NULL == pBSSSes )
7827 {
7828
7829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7830 "DAL has no free sessions - cannot run another join");
7831
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007832 /*reset the bAssociationInProgress otherwise the next
7833 *join request will be queued*/
7834 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007835 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007836 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007837 }
7838
7839 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007840 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7841 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007842 WDI_MAC_ADDR_LEN);
7843
7844 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007845 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007846 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007847
Jeff Johnson295189b2012-06-20 16:38:30 -07007848 wpalMutexRelease(&pWDICtx->wptMutex);
7849
7850 /*-----------------------------------------------------------------------
7851 Get message buffer
7852 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007853 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007854 sizeof(halJoinReqMsg.joinReqParams),
7855 &pSendBuffer, &usDataOffset, &usSendSize))||
7856 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7857 {
7858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007859 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007860 pUserData, pwdiJoinParams, wdiJoinRspCb);
7861 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007863 }
7864
7865 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007866 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007867
7868 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007869 pwdiJoinParams->wdiReqInfo.macSTASelf,
7870 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007871
Jeff Johnsone7245742012-09-05 17:12:55 -07007872 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007873 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7874
7875 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7876
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007877#ifdef WLAN_FEATURE_VOWIFI
7878 halJoinReqMsg.joinReqParams.maxTxPower =
7879 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7880#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007881 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007882 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7883#endif
7884
Jeff Johnsone7245742012-09-05 17:12:55 -07007885 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007886 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7887 wdiSecondaryChannelOffset);
7888
Jeff Johnsone7245742012-09-05 17:12:55 -07007889 wpalMemoryCopy( pSendBuffer+usDataOffset,
7890 &halJoinReqMsg.joinReqParams,
7891 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007892
7893 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007894 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007895
7896 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007897 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007898 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007899 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7900 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007901
7902}/*WDI_ProcessBSSSessionJoinReq*/
7903
7904/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007905 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007906 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007907
7908 @param pWDICtx: pointer to the WLAN DAL context
7909 pEventData: pointer to the event information structure
7910
Jeff Johnson295189b2012-06-20 16:38:30 -07007911 @see
7912 @return Result of the function call
7913*/
7914WDI_Status
7915WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007916(
Jeff Johnson295189b2012-06-20 16:38:30 -07007917 WDI_ControlBlockType* pWDICtx,
7918 WDI_EventInfoType* pEventData
7919)
7920{
7921 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7922 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7923 WDI_JoinRspCb wdiJoinRspCb = NULL;
7924 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7925
7926 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007927 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007928 -------------------------------------------------------------------------*/
7929 if (( NULL == pEventData ) ||
7930 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7931 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7932 {
7933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007934 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007935 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007936 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007937 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007938
Jeff Johnson295189b2012-06-20 16:38:30 -07007939 /*-------------------------------------------------------------------------
7940 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007941 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007942 -------------------------------------------------------------------------*/
7943 wpalMutexAcquire(&pWDICtx->wptMutex);
7944
7945 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7946 {
7947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7948 "Association is currently in progress, queueing new join req");
7949
7950 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007951 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007952 pwdiJoinParams->wdiReqInfo.macBSSID);
7953
7954 wpalMutexRelease(&pWDICtx->wptMutex);
7955
Jeff Johnsone7245742012-09-05 17:12:55 -07007956 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007957 }
7958
7959 /*Starting a new association */
7960 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7961 wpalMutexRelease(&pWDICtx->wptMutex);
7962
7963 /*Process the Join Request*/
7964 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7965 wdiJoinRspCb,pEventData->pUserData);
7966
7967}/*WDI_ProcessJoinReq*/
7968
7969
7970/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007971 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007972 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007973
7974 @param pWDICtx: pointer to the WLAN DAL context
7975 pEventData: pointer to the event information structure
7976
Jeff Johnson295189b2012-06-20 16:38:30 -07007977 @see
7978 @return Result of the function call
7979*/
7980WDI_Status
7981WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007982(
Jeff Johnson295189b2012-06-20 16:38:30 -07007983 WDI_ControlBlockType* pWDICtx,
7984 WDI_EventInfoType* pEventData
7985)
7986{
7987 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7988 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007989 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007990 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007991 wpt_uint16 uMsgSize = 0;
7992 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007993 wpt_uint16 usDataOffset = 0;
7994 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007995 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007996
Jeff Johnsone7245742012-09-05 17:12:55 -07007997 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007998 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7999
8000 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008001 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008002 -------------------------------------------------------------------------*/
8003 if (( NULL == pEventData ) ||
8004 ( NULL == pEventData->pEventData ) ||
8005 ( NULL == pEventData->pCBfnc ))
8006 {
8007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008008 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008009 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008010 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008011 }
8012
8013 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8014 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8015 /*-------------------------------------------------------------------------
8016 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008017 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008018 -------------------------------------------------------------------------*/
8019 wpalMutexAcquire(&pWDICtx->wptMutex);
8020
8021 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008022 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008023 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008024 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8025 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8026 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008027
Jeff Johnsone7245742012-09-05 17:12:55 -07008028 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008029 {
8030#ifdef WLAN_FEATURE_VOWIFI_11R
8031 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008032 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008033 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008034 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008035 if ( NULL == pBSSSes )
8036 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008037
Jeff Johnson295189b2012-06-20 16:38:30 -07008038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8039 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008040
Jeff Johnson295189b2012-06-20 16:38:30 -07008041 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008042 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008043 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008044
Jeff Johnson295189b2012-06-20 16:38:30 -07008045 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008046 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8047 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008048 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008049
Jeff Johnson295189b2012-06-20 16:38:30 -07008050 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008051 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008052 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8053#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008054 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008055 * Request in case of IBSS*/
8056 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8057 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8058 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8059 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8060 {
8061 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008062 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008063 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008064 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008065 if ( NULL == pBSSSes )
8066 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008067
Jeff Johnson295189b2012-06-20 16:38:30 -07008068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8069 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008070
Jeff Johnson295189b2012-06-20 16:38:30 -07008071 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008072 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008073 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008074
Jeff Johnson295189b2012-06-20 16:38:30 -07008075 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008076 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8077 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008078 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008079
Jeff Johnson295189b2012-06-20 16:38:30 -07008080 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008081 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008082 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8083 }
8084 else
8085 {
8086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008087 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8088 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8089 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8090
Jeff Johnson295189b2012-06-20 16:38:30 -07008091 /* for IBSS testing */
8092 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008093 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008094 }
8095#endif
8096 }
8097
8098 /*------------------------------------------------------------------------
8099 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008100 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008101 ------------------------------------------------------------------------*/
8102 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8103 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8105 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8106 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8107 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008108
Jeff Johnsone7245742012-09-05 17:12:55 -07008109 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008110
8111 wpalMutexRelease(&pWDICtx->wptMutex);
8112
Jeff Johnsone7245742012-09-05 17:12:55 -07008113 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008114 }
8115
8116 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008117 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8118 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008119 sizeof(pWDICtx->wdiCachedConfigBssReq));
8120
8121 wpalMutexRelease(&pWDICtx->wptMutex);
8122
Jeff Johnsone7245742012-09-05 17:12:55 -07008123 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8124#ifdef WLAN_FEATURE_11AC
8125 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008126 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008127 else
8128#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008129 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008130
8131 /*-----------------------------------------------------------------------
8132 Get message buffer
8133 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008134 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008135 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8136 ( usSendSize < (usDataOffset + uMsgSize )))
8137 {
8138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008139 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008140 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8141 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008142 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008143 }
8144
8145 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008146#ifdef WLAN_FEATURE_11AC
8147 if (WDI_getFwWlanFeatCaps(DOT11AC))
8148 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8149 &pwdiConfigBSSParams->wdiReqInfo);
8150 else
8151#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008152 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008153 &pwdiConfigBSSParams->wdiReqInfo);
8154
8155 /* Need to fill in the STA Index to invalid, since at this point we have not
8156 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008157 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008158
8159 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008160 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8161
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008162#ifdef WLAN_FEATURE_11AC
8163 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8164 wpalMemoryCopy( pSendBuffer+usDataOffset,
8165 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8166 uMsgSize);
8167 }else
8168#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008169 {
8170 if ( uMsgSize <= sizeof(tConfigBssParams) )
8171 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008172 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008173 &halConfigBssReqMsg.uBssParams.configBssParams,
8174 uMsgSize);
8175 }
8176 else
8177 {
8178 return WDI_STATUS_E_FAILURE;
8179 }
8180 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008181
8182 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008183 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008184
8185 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008186 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008187 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008188 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8189 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008190 WDI_CONFIG_BSS_RESP);
8191
8192}/*WDI_ProcessConfigBSSReq*/
8193
8194
8195/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008196 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008197 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008198
8199 @param pWDICtx: pointer to the WLAN DAL context
8200 pEventData: pointer to the event information structure
8201
Jeff Johnson295189b2012-06-20 16:38:30 -07008202 @see
8203 @return Result of the function call
8204*/
8205WDI_Status
8206WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008207(
Jeff Johnson295189b2012-06-20 16:38:30 -07008208 WDI_ControlBlockType* pWDICtx,
8209 WDI_EventInfoType* pEventData
8210)
8211{
8212 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8213 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008214 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008215 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008216 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008217 wpt_uint16 usDataOffset = 0;
8218 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008219 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008220
Jeff Johnsone7245742012-09-05 17:12:55 -07008221 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008222 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8223
8224 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008225 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008226 -------------------------------------------------------------------------*/
8227 if (( NULL == pEventData ) ||
8228 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8229 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8230 {
8231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008232 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008233 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008234 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008235 }
8236
8237 /*-------------------------------------------------------------------------
8238 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008239 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008240 -------------------------------------------------------------------------*/
8241 wpalMutexAcquire(&pWDICtx->wptMutex);
8242
8243 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008244 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008245 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008246 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8247 pwdiDelBSSParams->ucBssIdx,
8248 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008249
Jeff Johnsone7245742012-09-05 17:12:55 -07008250 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008251 {
8252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008253 "%s: BSS does not yet exist. ucBssIdx %d",
8254 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008255
8256 wpalMutexRelease(&pWDICtx->wptMutex);
8257
8258 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008259 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008260
8261 /*------------------------------------------------------------------------
8262 Check if this BSS is being currently processed or queued,
8263 if queued - queue the new request as well
8264 ------------------------------------------------------------------------*/
8265 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008266 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8268 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8269 __func__, pwdiDelBSSParams->ucBssIdx);
8270
8271 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8272
8273 wpalMutexRelease(&pWDICtx->wptMutex);
8274
8275 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008276 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008277
Jeff Johnson295189b2012-06-20 16:38:30 -07008278 /*-----------------------------------------------------------------------
8279 If we receive a Del BSS request for an association that is already in
8280 progress, it indicates that the assoc has failed => we no longer have
8281 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008282 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008283 -----------------------------------------------------------------------*/
8284 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8285 {
8286 /*We can switch to false here because even if a subsequent Join comes in
8287 it will only be processed when DAL transitions out of BUSY state which
8288 happens when the Del BSS request comes */
8289 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8290
8291 /*Former association is complete - prepare next pending assoc for
8292 processing */
8293 WDI_DequeueAssocRequest(pWDICtx);
8294 }
8295
8296 wpalMutexRelease(&pWDICtx->wptMutex);
8297 /*-----------------------------------------------------------------------
8298 Get message buffer
8299 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008300 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008301 sizeof(halBssReqMsg.deleteBssParams),
8302 &pSendBuffer, &usDataOffset, &usSendSize))||
8303 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8304 {
8305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008306 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008307 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008310 }
8311
8312 /*Fill in the message request structure*/
8313
8314 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008315 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008316
Jeff Johnsone7245742012-09-05 17:12:55 -07008317 wpalMemoryCopy( pSendBuffer+usDataOffset,
8318 &halBssReqMsg.deleteBssParams,
8319 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008320
8321 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008322 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008323
Jeff Johnsone7245742012-09-05 17:12:55 -07008324
Jeff Johnson295189b2012-06-20 16:38:30 -07008325 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008326 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008327 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008328 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008329 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8330
Jeff Johnsone7245742012-09-05 17:12:55 -07008331
Jeff Johnson295189b2012-06-20 16:38:30 -07008332}/*WDI_ProcessDelBSSReq*/
8333
8334/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008335 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008336 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008337
8338 @param pWDICtx: pointer to the WLAN DAL context
8339 pEventData: pointer to the event information structure
8340
Jeff Johnson295189b2012-06-20 16:38:30 -07008341 @see
8342 @return Result of the function call
8343*/
8344WDI_Status
8345WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008346(
Jeff Johnson295189b2012-06-20 16:38:30 -07008347 WDI_ControlBlockType* pWDICtx,
8348 WDI_EventInfoType* pEventData
8349)
8350{
8351 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8352 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008353 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008354 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008355 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008356 wpt_uint16 usDataOffset = 0;
8357 wpt_uint16 usSendSize = 0;
8358 wpt_uint16 uMsgSize = 0;
8359 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008360 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008361
Jeff Johnsone7245742012-09-05 17:12:55 -07008362 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8364
8365 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008366 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008367 -------------------------------------------------------------------------*/
8368 if (( NULL == pEventData ) ||
8369 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8370 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8371 {
8372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008373 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008374 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008375 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008376 }
8377
8378 /*-------------------------------------------------------------------------
8379 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008380 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008381 -------------------------------------------------------------------------*/
8382 wpalMutexAcquire(&pWDICtx->wptMutex);
8383
8384 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008385 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008386 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008387 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8388 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8389 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008390
8391 if ( NULL == pBSSSes )
8392 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8394 "%s: Association sequence for this BSS does not yet exist - "
8395 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8396 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008397
8398 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008399 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008400 }
8401
8402 /*------------------------------------------------------------------------
8403 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008404 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008405 ------------------------------------------------------------------------*/
8406 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8407 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8409 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8410 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008411
Jeff Johnsone7245742012-09-05 17:12:55 -07008412 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008413
8414 wpalMutexRelease(&pWDICtx->wptMutex);
8415
Jeff Johnsone7245742012-09-05 17:12:55 -07008416 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008417 }
8418
8419 /*-----------------------------------------------------------------------
8420 If Post Assoc was not yet received - the current association must
8421 be in progress
8422 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008423 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008424 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8425 {
8426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8427 "Association sequence for this BSS association no longer in "
8428 "progress - not allowed");
8429
8430 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008431 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008432 }
8433
8434 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008435 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008436 -----------------------------------------------------------------------*/
8437 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8438 {
8439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8440 "Post Assoc not allowed before JOIN - failing request");
8441
8442 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008443 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008444 }
8445
8446 wpalMutexRelease(&pWDICtx->wptMutex);
8447
8448 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8449 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8450 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008451 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008452 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008453 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008454 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8455 ( usSendSize < (usDataOffset + uMsgSize )))
8456 {
8457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008458 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008459 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8460 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008461 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008462 }
8463
8464 /*Copy the STA parameters */
8465 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8466 &pwdiPostAssocParams->wdiSTAParams );
8467
8468 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008469 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008470 WDI_STATableFindStaidByAddr(pWDICtx,
8471 pwdiPostAssocParams->wdiSTAParams.macSTA,
8472 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8473 {
8474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008475 MAC_ADDRESS_STR
8476 ": This station does not exist in the WDI Station Table",
8477 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008478 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008479 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008480 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008481 }
8482
8483 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008484 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008485 pBSSSes->ucBSSIdx;
8486
8487 /*Copy the BSS parameters */
8488 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8489 &pwdiPostAssocParams->wdiBSSParams);
8490
8491 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008492 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008493 WDI_STATableFindStaidByAddr(pWDICtx,
8494 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008495 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008496 {
8497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008498 MAC_ADDRESS_STR
8499 ": This station does not exist in the WDI Station Table",
8500 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008501 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008502 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008503 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008504 }
8505
8506 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008507 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008508 pBSSSes->ucBSSIdx;
8509
Jeff Johnsone7245742012-09-05 17:12:55 -07008510
8511 wpalMemoryCopy( pSendBuffer+usDataOffset,
8512 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8513 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008514
8515 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8516
Jeff Johnsone7245742012-09-05 17:12:55 -07008517 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8518 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8519 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008520
Jeff Johnsone7245742012-09-05 17:12:55 -07008521
Jeff Johnson295189b2012-06-20 16:38:30 -07008522 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008523 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008524
Jeff Johnsone7245742012-09-05 17:12:55 -07008525
8526 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008527 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008528 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008529
8530 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008531 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008532 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008533 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008534 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8535
Jeff Johnsone7245742012-09-05 17:12:55 -07008536
Jeff Johnson295189b2012-06-20 16:38:30 -07008537}/*WDI_ProcessPostAssocReq*/
8538
8539/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008540 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008541 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008542
8543 @param pWDICtx: pointer to the WLAN DAL context
8544 pEventData: pointer to the event information structure
8545
Jeff Johnson295189b2012-06-20 16:38:30 -07008546 @see
8547 @return Result of the function call
8548*/
8549WDI_Status
8550WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008551(
Jeff Johnson295189b2012-06-20 16:38:30 -07008552 WDI_ControlBlockType* pWDICtx,
8553 WDI_EventInfoType* pEventData
8554)
8555{
8556 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8557 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008558 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008559 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008560 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008561 wpt_uint16 usDataOffset = 0;
8562 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008563 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008564 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8565
Jeff Johnsone7245742012-09-05 17:12:55 -07008566 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8568
8569 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008570 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008571 -------------------------------------------------------------------------*/
8572 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8573 ( NULL == pEventData->pCBfnc ))
8574 {
8575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008576 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008577 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008578 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008579 }
8580
8581 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8582 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8583 /*-------------------------------------------------------------------------
8584 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008585 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008586 -------------------------------------------------------------------------*/
8587 wpalMutexAcquire(&pWDICtx->wptMutex);
8588
8589 /*------------------------------------------------------------------------
8590 Find the BSS for which the request is made and identify WDI session
8591 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008592 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8593 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008594 &macBSSID))
8595 {
8596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008597 "This station does not exist in the WDI Station Table %d",
8598 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008599 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008600 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008601 }
8602
Jeff Johnsone7245742012-09-05 17:12:55 -07008603 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8604 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008605 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8607 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8608 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008609
8610 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008612 }
8613
8614 /*------------------------------------------------------------------------
8615 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008616 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008617 ------------------------------------------------------------------------*/
8618 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8619 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8621 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8622 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008623
Jeff Johnsone7245742012-09-05 17:12:55 -07008624 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008625 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008626 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008627 }
8628
8629 wpalMutexRelease(&pWDICtx->wptMutex);
8630 /*-----------------------------------------------------------------------
8631 Get message buffer
8632 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008633 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008634 sizeof(halDelStaReqMsg.delStaParams),
8635 &pSendBuffer, &usDataOffset, &usSendSize))||
8636 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8637 {
8638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008639 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008640 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8641 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 }
8644
Jeff Johnsone7245742012-09-05 17:12:55 -07008645 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8646 wpalMemoryCopy( pSendBuffer+usDataOffset,
8647 &halDelStaReqMsg.delStaParams,
8648 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008649
8650 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008651 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008652
8653 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008654 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008655 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008656 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008657 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8658
8659}/*WDI_ProcessDelSTAReq*/
8660
8661
8662/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008663 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008664==========================================================================*/
8665/**
8666 @brief Process Set BSS Key Request function (called when Main FSM
8667 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008668
8669 @param pWDICtx: pointer to the WLAN DAL context
8670 pEventData: pointer to the event information structure
8671
Jeff Johnson295189b2012-06-20 16:38:30 -07008672 @see
8673 @return Result of the function call
8674*/
8675WDI_Status
8676WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008677(
Jeff Johnson295189b2012-06-20 16:38:30 -07008678 WDI_ControlBlockType* pWDICtx,
8679 WDI_EventInfoType* pEventData
8680)
8681{
8682 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8683 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008684 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008685 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008686 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008687 wpt_uint16 usDataOffset = 0;
8688 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008689 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008690 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8691 wpt_uint8 keyIndex = 0;
8692
8693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8694
8695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008697 -------------------------------------------------------------------------*/
8698 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8699 ( NULL == pEventData->pCBfnc ))
8700 {
8701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008702 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008703 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008704 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008705 }
8706
8707 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8708 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8709 /*-------------------------------------------------------------------------
8710 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008711 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008712 -------------------------------------------------------------------------*/
8713 wpalMutexAcquire(&pWDICtx->wptMutex);
8714
8715 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008716 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008717 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008718 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8719 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8720 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008721
Jeff Johnsone7245742012-09-05 17:12:55 -07008722 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008723 {
8724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008725 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8726 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008727
8728 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008729 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008730 }
8731
8732 /*------------------------------------------------------------------------
8733 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008734 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008735 ------------------------------------------------------------------------*/
8736 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8737 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8739 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8740 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008741
Jeff Johnsone7245742012-09-05 17:12:55 -07008742 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008743 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008744 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008745 }
8746
8747
8748 wpalMutexRelease(&pWDICtx->wptMutex);
8749 /*-----------------------------------------------------------------------
8750 Get message buffer
8751 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008752 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008753 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8754 &pSendBuffer, &usDataOffset, &usSendSize))||
8755 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8756 {
8757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008758 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008759 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8760 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008761 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008762 }
8763
8764 /*-----------------------------------------------------------------------
8765 Copy the Key parameters into the HAL message
8766 -----------------------------------------------------------------------*/
8767
Jeff Johnsone7245742012-09-05 17:12:55 -07008768 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008769
Jeff Johnsone7245742012-09-05 17:12:55 -07008770 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008771 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8772
Jeff Johnsone7245742012-09-05 17:12:55 -07008773 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008774 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8775
8776 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8777 keyIndex++)
8778 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008779 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008780 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8781 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8782 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8783 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8784 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8785 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008786 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008787 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008788 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008789 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008790 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008791 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8792 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008793 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008794 WDI_MAX_KEY_LENGTH);
8795 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008796
8797 wpalMemoryCopy( pSendBuffer+usDataOffset,
8798 &halSetBssKeyReqMsg.setBssKeyParams,
8799 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008800
8801 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008802 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008803
8804 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008805 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008806 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008807 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8808 wdiSetBSSKeyRspCb, pEventData->pUserData,
8809 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008810
8811}/*WDI_ProcessSetBssKeyReq*/
8812
8813/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008814 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008815 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008816
8817 @param pWDICtx: pointer to the WLAN DAL context
8818 pEventData: pointer to the event information structure
8819
Jeff Johnson295189b2012-06-20 16:38:30 -07008820 @see
8821 @return Result of the function call
8822*/
8823WDI_Status
8824WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008825(
Jeff Johnson295189b2012-06-20 16:38:30 -07008826 WDI_ControlBlockType* pWDICtx,
8827 WDI_EventInfoType* pEventData
8828)
8829{
8830 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8831 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008832 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008833 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008834 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008835 wpt_uint16 usDataOffset = 0;
8836 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008837 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008838 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8840
8841 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008842 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008843 -------------------------------------------------------------------------*/
8844 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8845 ( NULL == pEventData->pCBfnc ))
8846 {
8847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008848 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008849 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008850 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008851 }
8852
8853 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8854 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8855 /*-------------------------------------------------------------------------
8856 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008857 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008858 -------------------------------------------------------------------------*/
8859 wpalMutexAcquire(&pWDICtx->wptMutex);
8860
8861 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008862 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008863 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008864 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8865 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8866 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008867
Jeff Johnsone7245742012-09-05 17:12:55 -07008868 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008869 {
8870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008871 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8872 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008873
8874 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008875 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008876 }
8877
8878 /*------------------------------------------------------------------------
8879 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008880 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008881 ------------------------------------------------------------------------*/
8882 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8883 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8885 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8886 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008887
Jeff Johnsone7245742012-09-05 17:12:55 -07008888 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008889 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008890 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008891 }
8892
8893
8894 wpalMutexRelease(&pWDICtx->wptMutex);
8895
8896 /*-----------------------------------------------------------------------
8897 Get message buffer
8898 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008899 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008900 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8901 &pSendBuffer, &usDataOffset, &usSendSize))||
8902 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8903 {
8904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008905 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008906 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8907 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008908 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008909 }
8910 /*-----------------------------------------------------------------------
8911 Copy the Key parameters into the HAL message
8912 -----------------------------------------------------------------------*/
8913 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8914
Jeff Johnsone7245742012-09-05 17:12:55 -07008915 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008916 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8917
8918 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8919
Jeff Johnsone7245742012-09-05 17:12:55 -07008920 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008921 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8922
Jeff Johnsone7245742012-09-05 17:12:55 -07008923 wpalMemoryCopy( pSendBuffer+usDataOffset,
8924 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8925 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008926
8927 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008928 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008929
8930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008931 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008932 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008933 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008934 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008935 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008936}/*WDI_ProcessRemoveBssKeyReq*/
8937
8938/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008939 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008940 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008941
8942 @param pWDICtx: pointer to the WLAN DAL context
8943 pEventData: pointer to the event information structure
8944
Jeff Johnson295189b2012-06-20 16:38:30 -07008945 @see
8946 @return Result of the function call
8947*/
8948WDI_Status
8949WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008950(
Jeff Johnson295189b2012-06-20 16:38:30 -07008951 WDI_ControlBlockType* pWDICtx,
8952 WDI_EventInfoType* pEventData
8953)
8954{
8955 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8956 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8957 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008958 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008959 wpt_uint16 usDataOffset = 0;
8960 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008961 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008962 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008963 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008964 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8965 wpt_uint8 keyIndex = 0;
8966
8967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8968
8969 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008970 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008971 -------------------------------------------------------------------------*/
8972 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8973 ( NULL == pEventData->pCBfnc ))
8974 {
8975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008976 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008977 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008978 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008979 }
8980
8981 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8982 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8983 /*-------------------------------------------------------------------------
8984 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008985 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008986 -------------------------------------------------------------------------*/
8987 wpalMutexAcquire(&pWDICtx->wptMutex);
8988
8989 /*------------------------------------------------------------------------
8990 Find the BSS for which the request is made and identify WDI session
8991 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008992 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8993 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008994 &macBSSID))
8995 {
8996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008997 "This station does not exist in the WDI Station Table %d",
8998 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008999 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009000 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009001 }
9002
Jeff Johnsone7245742012-09-05 17:12:55 -07009003 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9004 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009005 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9007 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9008 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009009
9010 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009011 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009012 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009013
Jeff Johnson295189b2012-06-20 16:38:30 -07009014 /*------------------------------------------------------------------------
9015 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009016 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009017 ------------------------------------------------------------------------*/
9018 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9019 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9021 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9022 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009023
Jeff Johnsone7245742012-09-05 17:12:55 -07009024 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009025 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009026 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009027 }
9028
9029
9030 wpalMutexRelease(&pWDICtx->wptMutex);
9031 /*-----------------------------------------------------------------------
9032 Get message buffer
9033 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009034 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009035 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9036 &pSendBuffer, &usDataOffset, &usSendSize))||
9037 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9038 {
9039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009040 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009041 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9042 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009043 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009044 }
9045 /*-----------------------------------------------------------------------
9046 Copy the STA Key parameters into the HAL message
9047 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009048 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009049 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9050
Jeff Johnsone7245742012-09-05 17:12:55 -07009051 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009052 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9053
9054 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9055
9056 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9057
9058 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9059
Jeff Johnson295189b2012-06-20 16:38:30 -07009060 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9061 keyIndex++)
9062 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009063 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009064 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9065 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9066 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9067 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9068 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9069 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009070 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009071 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009072 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009073 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009074 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009075 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9076 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009077 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009078 WDI_MAX_KEY_LENGTH);
9079 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009080
Jeff Johnsone7245742012-09-05 17:12:55 -07009081 wpalMemoryCopy( pSendBuffer+usDataOffset,
9082 &halSetStaKeyReqMsg.setStaKeyParams,
9083 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009084
9085 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009086 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009087
9088 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009089 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009090 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009091 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9092 wdiSetSTAKeyRspCb, pEventData->pUserData,
9093 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009094
9095}/*WDI_ProcessSetSTAKeyReq*/
9096
9097/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009099 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009100
9101 @param pWDICtx: pointer to the WLAN DAL context
9102 pEventData: pointer to the event information structure
9103
Jeff Johnson295189b2012-06-20 16:38:30 -07009104 @see
9105 @return Result of the function call
9106*/
9107WDI_Status
9108WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009109(
Jeff Johnson295189b2012-06-20 16:38:30 -07009110 WDI_ControlBlockType* pWDICtx,
9111 WDI_EventInfoType* pEventData
9112)
9113{
9114 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9115 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9116 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009117 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009118 wpt_uint16 usDataOffset = 0;
9119 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009120 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009121 wpt_macAddr macBSSID;
9122 wpt_uint8 ucCurrentBSSSesIdx;
9123 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9125
9126 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009127 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009128 -------------------------------------------------------------------------*/
9129 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9130 ( NULL == pEventData->pCBfnc ))
9131 {
9132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009133 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009134 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009135 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009136 }
9137
9138 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9139 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9140 /*-------------------------------------------------------------------------
9141 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009142 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009143 -------------------------------------------------------------------------*/
9144 wpalMutexAcquire(&pWDICtx->wptMutex);
9145
9146 /*------------------------------------------------------------------------
9147 Find the BSS for which the request is made and identify WDI session
9148 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009149 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9150 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009151 &macBSSID))
9152 {
9153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009154 "This station does not exist in the WDI Station Table %d",
9155 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009156 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009157 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009158 }
9159
Jeff Johnsone7245742012-09-05 17:12:55 -07009160 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9161 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009162 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9164 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9165 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009166
9167 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009168 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009169 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009170
Jeff Johnson295189b2012-06-20 16:38:30 -07009171 /*------------------------------------------------------------------------
9172 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009173 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009174 ------------------------------------------------------------------------*/
9175 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9176 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9178 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9179 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009180
Jeff Johnsone7245742012-09-05 17:12:55 -07009181 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009182 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009183 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009184 }
9185
9186
9187
9188 wpalMutexRelease(&pWDICtx->wptMutex);
9189 /*-----------------------------------------------------------------------
9190 Get message buffer
9191 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009192 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009193 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9194 &pSendBuffer, &usDataOffset, &usSendSize))||
9195 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9196 {
9197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009198 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009199 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9200 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009201 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009202 }
9203
9204 /*-----------------------------------------------------------------------
9205 Copy the Key parameters into the HAL message
9206 -----------------------------------------------------------------------*/
9207
Jeff Johnsone7245742012-09-05 17:12:55 -07009208 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009209 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9210
Jeff Johnsone7245742012-09-05 17:12:55 -07009211 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009212 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9213
Jeff Johnsone7245742012-09-05 17:12:55 -07009214 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009215 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9216
Jeff Johnsone7245742012-09-05 17:12:55 -07009217 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009218 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9219
Jeff Johnsone7245742012-09-05 17:12:55 -07009220 wpalMemoryCopy( pSendBuffer+usDataOffset,
9221 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9222 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009223
9224 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009225 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009226
9227 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009228 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009229 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009230 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009231 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009232 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009233
9234}/*WDI_ProcessRemoveSTAKeyReq*/
9235
9236/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009237 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009238 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009239
9240 @param pWDICtx: pointer to the WLAN DAL context
9241 pEventData: pointer to the event information structure
9242
Jeff Johnson295189b2012-06-20 16:38:30 -07009243 @see
9244 @return Result of the function call
9245*/
9246WDI_Status
9247WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009248(
Jeff Johnson295189b2012-06-20 16:38:30 -07009249 WDI_ControlBlockType* pWDICtx,
9250 WDI_EventInfoType* pEventData
9251)
9252{
9253 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9254 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9255 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009256 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009257 wpt_uint16 usDataOffset = 0;
9258 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009259 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009260 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009261 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009262 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9263 wpt_uint8 keyIndex = 0;
9264
9265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9266
9267 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009268 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009269 -------------------------------------------------------------------------*/
9270 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9271 ( NULL == pEventData->pCBfnc ))
9272 {
9273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009274 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009275 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009276 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009277 }
9278
9279 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9280 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9281 /*-------------------------------------------------------------------------
9282 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009283 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009284 -------------------------------------------------------------------------*/
9285 wpalMutexAcquire(&pWDICtx->wptMutex);
9286
9287 /*------------------------------------------------------------------------
9288 Find the BSS for which the request is made and identify WDI session
9289 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009290 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9291 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009292 &macBSSID))
9293 {
9294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009295 "This station does not exist in the WDI Station Table %d",
9296 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009297 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009298 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009299 }
9300
Jeff Johnsone7245742012-09-05 17:12:55 -07009301 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9302 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009303 {
9304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009305 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009306 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009307
9308 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009309 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009310 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009311
Jeff Johnson295189b2012-06-20 16:38:30 -07009312 /*------------------------------------------------------------------------
9313 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009314 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009315 ------------------------------------------------------------------------*/
9316 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9317 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9319 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9320 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009321
Jeff Johnsone7245742012-09-05 17:12:55 -07009322 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009323 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009324 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009325 }
9326
9327
9328 wpalMutexRelease(&pWDICtx->wptMutex);
9329 /*-----------------------------------------------------------------------
9330 Get message buffer
9331 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009332 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009333 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9334 &pSendBuffer, &usDataOffset, &usSendSize))||
9335 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9336 {
9337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009338 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009339 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9340 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009341 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009342 }
9343 /*-----------------------------------------------------------------------
9344 Copy the STA Key parameters into the HAL message
9345 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009346 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009347 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9348
Jeff Johnsone7245742012-09-05 17:12:55 -07009349 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009350 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9351
9352 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9353
9354 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9355
9356 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9357
Jeff Johnson295189b2012-06-20 16:38:30 -07009358 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9359 keyIndex++)
9360 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009361 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009362 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9363 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9364 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9365 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9366 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9367 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009368 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009369 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009370 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009371 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009373 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9374 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009375 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009376 WDI_MAX_KEY_LENGTH);
9377 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009378
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 wpalMemoryCopy( pSendBuffer+usDataOffset,
9380 &halSetStaKeyReqMsg.setStaKeyParams,
9381 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009382
9383 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009384 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009385
9386 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009387 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009388 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009389 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9390 wdiSetSTAKeyRspCb, pEventData->pUserData,
9391 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009392
9393}/*WDI_ProcessSetSTABcastKeyReq*/
9394
9395/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009396 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009397 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009398
9399 @param pWDICtx: pointer to the WLAN DAL context
9400 pEventData: pointer to the event information structure
9401
Jeff Johnson295189b2012-06-20 16:38:30 -07009402 @see
9403 @return Result of the function call
9404*/
9405WDI_Status
9406WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009407(
Jeff Johnson295189b2012-06-20 16:38:30 -07009408 WDI_ControlBlockType* pWDICtx,
9409 WDI_EventInfoType* pEventData
9410)
9411{
9412 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9413 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9414 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009415 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009416 wpt_uint16 usDataOffset = 0;
9417 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009418 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009419 wpt_macAddr macBSSID;
9420 wpt_uint8 ucCurrentBSSSesIdx;
9421 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9422 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9423
9424 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009425 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009426 -------------------------------------------------------------------------*/
9427 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9428 ( NULL == pEventData->pCBfnc ))
9429 {
9430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009431 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009432 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009433 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009434 }
9435
9436 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9437 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9438 /*-------------------------------------------------------------------------
9439 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009440 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009441 -------------------------------------------------------------------------*/
9442 wpalMutexAcquire(&pWDICtx->wptMutex);
9443
9444 /*------------------------------------------------------------------------
9445 Find the BSS for which the request is made and identify WDI session
9446 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009447 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9448 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009449 &macBSSID))
9450 {
9451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009452 "This station does not exist in the WDI Station Table %d",
9453 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009454 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009456 }
9457
Jeff Johnsone7245742012-09-05 17:12:55 -07009458 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9459 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009460 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9462 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9463 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009464
9465 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009467 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009468
Jeff Johnson295189b2012-06-20 16:38:30 -07009469 /*------------------------------------------------------------------------
9470 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009471 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009472 ------------------------------------------------------------------------*/
9473 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9474 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9476 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9477 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009478
Jeff Johnsone7245742012-09-05 17:12:55 -07009479 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009480 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009481 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009482 }
9483
9484
9485
9486 wpalMutexRelease(&pWDICtx->wptMutex);
9487 /*-----------------------------------------------------------------------
9488 Get message buffer
9489 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009490 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009491 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9492 &pSendBuffer, &usDataOffset, &usSendSize))||
9493 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9494 {
9495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009496 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009497 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9498 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009499 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009500 }
9501
9502 /*-----------------------------------------------------------------------
9503 Copy the Key parameters into the HAL message
9504 -----------------------------------------------------------------------*/
9505
Jeff Johnsone7245742012-09-05 17:12:55 -07009506 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009507 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9508
Jeff Johnsone7245742012-09-05 17:12:55 -07009509 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009510 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9511
Jeff Johnsone7245742012-09-05 17:12:55 -07009512 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009513 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9514
Jeff Johnsone7245742012-09-05 17:12:55 -07009515 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009516 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9517
Jeff Johnsone7245742012-09-05 17:12:55 -07009518 wpalMemoryCopy( pSendBuffer+usDataOffset,
9519 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9520 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009521
9522 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009523 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009524
9525 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009526 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009527 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009528 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009529 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009530 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009531
9532}/*WDI_ProcessRemoveSTABcastKeyReq*/
9533
9534/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009535 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009536==========================================================================*/
9537/**
9538 @brief Process Add TSpec Request function (called when Main FSM
9539 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009540
9541 @param pWDICtx: pointer to the WLAN DAL context
9542 pEventData: pointer to the event information structure
9543
Jeff Johnson295189b2012-06-20 16:38:30 -07009544 @see
9545 @return Result of the function call
9546*/
9547WDI_Status
9548WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009549(
Jeff Johnson295189b2012-06-20 16:38:30 -07009550 WDI_ControlBlockType* pWDICtx,
9551 WDI_EventInfoType* pEventData
9552)
9553{
9554 WDI_AddTSReqParamsType* pwdiAddTSParams;
9555 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009556 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009557 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009558 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 wpt_uint16 usDataOffset = 0;
9560 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009561 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009562 wpt_macAddr macBSSID;
9563 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009564
Jeff Johnson295189b2012-06-20 16:38:30 -07009565 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9566
9567 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009568 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009569 -------------------------------------------------------------------------*/
9570 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9571 ( NULL == pEventData->pCBfnc ))
9572 {
9573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009574 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009575 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009577 }
9578
9579 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9580 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9581 /*-------------------------------------------------------------------------
9582 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009583 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009584 -------------------------------------------------------------------------*/
9585 wpalMutexAcquire(&pWDICtx->wptMutex);
9586
9587 /*------------------------------------------------------------------------
9588 Find the BSS for which the request is made and identify WDI session
9589 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009590 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9591 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009592 &macBSSID))
9593 {
9594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009595 "This station does not exist in the WDI Station Table %d",
9596 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009597 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009598 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009599 }
9600
Jeff Johnsone7245742012-09-05 17:12:55 -07009601 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9602 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009603 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9605 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9606 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009607
9608 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009610 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009611
Jeff Johnson295189b2012-06-20 16:38:30 -07009612 /*------------------------------------------------------------------------
9613 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009614 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009615 ------------------------------------------------------------------------*/
9616 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9617 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9619 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9620 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009621
Jeff Johnsone7245742012-09-05 17:12:55 -07009622 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009623 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009624 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009625 }
9626
9627 wpalMutexRelease(&pWDICtx->wptMutex);
9628 /*-----------------------------------------------------------------------
9629 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009630 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009631 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009632 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9633 sizeof(halAddTsParams),
9634 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009635 &usSendSize))||
9636 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9637 {
9638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009639 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009640 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9641 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009642 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009643 }
9644
9645 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9646 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9647
9648 //TSPEC IE
9649 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9650 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009651 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009652 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009653 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009654 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009655 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009656 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009657 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009658 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009659 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009660 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009661 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009662 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009663 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009664 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009665 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009666 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009667 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009668 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009669 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009670 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009671 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009672 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009673 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009674 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009675 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009676 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009678 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009679 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009680 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9681
9682 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009683 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009684 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009685 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009686 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009687 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009688 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009689 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009690 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009691 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009692 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009693 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009694 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009695 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009696 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9697
9698 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009699 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009700 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009701 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009702 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9703
Jeff Johnsone7245742012-09-05 17:12:55 -07009704 wpalMemoryCopy( pSendBuffer+usDataOffset,
9705 &halAddTsParams,
9706 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009707
9708 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009709 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009710
9711 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009713 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009714 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009715 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009716 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009717}/*WDI_ProcessAddTSpecReq*/
9718
9719
9720/**
9721 @brief Process Del TSpec Request function (called when Main FSM
9722 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009723
9724 @param pWDICtx: pointer to the WLAN DAL context
9725 pEventData: pointer to the event information structure
9726
Jeff Johnson295189b2012-06-20 16:38:30 -07009727 @see
9728 @return Result of the function call
9729*/
9730WDI_Status
9731WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009732(
Jeff Johnson295189b2012-06-20 16:38:30 -07009733 WDI_ControlBlockType* pWDICtx,
9734 WDI_EventInfoType* pEventData
9735)
9736{
9737 WDI_DelTSReqParamsType* pwdiDelTSParams;
9738 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009739 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009740 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009741 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009742 wpt_uint16 usDataOffset = 0;
9743 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009744 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9746
9747 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009748 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009749 -------------------------------------------------------------------------*/
9750 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9751 ( NULL == pEventData->pCBfnc ))
9752 {
9753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009754 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009755 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009756 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009757 }
9758
9759 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9760 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9761
9762 /*-------------------------------------------------------------------------
9763 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009764 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009765 -------------------------------------------------------------------------*/
9766 wpalMutexAcquire(&pWDICtx->wptMutex);
9767
9768 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009769 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009770 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009771 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9772 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9773 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009774
Jeff Johnsone7245742012-09-05 17:12:55 -07009775 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009776 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9778 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9779 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9780
Jeff Johnson295189b2012-06-20 16:38:30 -07009781 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009782 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009783 }
9784
9785 /*------------------------------------------------------------------------
9786 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009787 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009788 ------------------------------------------------------------------------*/
9789 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9790 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9792 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9793 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009794
Jeff Johnsone7245742012-09-05 17:12:55 -07009795 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009796 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009797 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009798 }
9799
9800
9801 wpalMutexRelease(&pWDICtx->wptMutex);
9802 /*-----------------------------------------------------------------------
9803 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009804 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009805 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009806 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009807 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9808 &pSendBuffer, &usDataOffset, &usSendSize))||
9809 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9810 {
9811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009812 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009813 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9814 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009815 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009816 }
9817
Jeff Johnsone7245742012-09-05 17:12:55 -07009818 wpalMemoryCopy( pSendBuffer+usDataOffset,
9819 &pwdiDelTSParams->wdiDelTSInfo,
9820 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009821
9822 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009823 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009824
9825 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009826 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009827 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009828 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9829 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009830}/*WDI_ProcessDelTSpecReq*/
9831
9832/**
9833 @brief Process Update EDCA Params Request function (called when
9834 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009835
9836 @param pWDICtx: pointer to the WLAN DAL context
9837 pEventData: pointer to the event information structure
9838
Jeff Johnson295189b2012-06-20 16:38:30 -07009839 @see
9840 @return Result of the function call
9841*/
9842WDI_Status
9843WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009844(
Jeff Johnson295189b2012-06-20 16:38:30 -07009845 WDI_ControlBlockType* pWDICtx,
9846 WDI_EventInfoType* pEventData
9847)
9848{
9849 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9850 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009851 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009852 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009853 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009854 wpt_uint16 usDataOffset = 0;
9855 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009856 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9858
9859 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009860 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009861 -------------------------------------------------------------------------*/
9862 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9863 ( NULL == pEventData->pCBfnc ))
9864 {
9865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009866 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009867 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009868 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009869 }
9870
9871 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9872 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9873 /*-------------------------------------------------------------------------
9874 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009875 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009876 -------------------------------------------------------------------------*/
9877 wpalMutexAcquire(&pWDICtx->wptMutex);
9878
9879 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009880 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009881 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009882 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9883 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9884 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009885
Jeff Johnsone7245742012-09-05 17:12:55 -07009886 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009887 {
9888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009889 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9890 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009891
9892 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009893 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009894 }
9895
9896 /*------------------------------------------------------------------------
9897 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009898 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009899 ------------------------------------------------------------------------*/
9900 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9901 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9903 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9904 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009905
Jeff Johnsone7245742012-09-05 17:12:55 -07009906 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009907 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009908 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009909 }
9910
9911
9912 wpalMutexRelease(&pWDICtx->wptMutex);
9913 /*-----------------------------------------------------------------------
9914 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009915 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009916 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009917 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009918 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9919 &pSendBuffer, &usDataOffset, &usSendSize))||
9920 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9921 {
9922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009923 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009924 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9925 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009926 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009927 }
9928
Jeff Johnsone7245742012-09-05 17:12:55 -07009929 wpalMemoryCopy( pSendBuffer+usDataOffset,
9930 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9931 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009932
9933 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009934 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009935
9936 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009937 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009938 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009939 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9940 wdiUpdateEDCARspCb, pEventData->pUserData,
9941 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009942}/*WDI_ProcessUpdateEDCAParamsReq*/
9943
9944/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009945 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009946 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009947
9948 @param pWDICtx: pointer to the WLAN DAL context
9949 pEventData: pointer to the event information structure
9950
Jeff Johnson295189b2012-06-20 16:38:30 -07009951 @see
9952 @return Result of the function call
9953*/
9954WDI_Status
9955WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009956(
Jeff Johnson295189b2012-06-20 16:38:30 -07009957 WDI_ControlBlockType* pWDICtx,
9958 WDI_EventInfoType* pEventData
9959)
9960{
9961 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9962 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009963 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009964 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009965 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009966 wpt_uint16 usDataOffset = 0;
9967 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009968 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009969 wpt_macAddr macBSSID;
9970
9971 tAddBASessionReqMsg halAddBASessionReq;
9972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9973
9974 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009975 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009976 -------------------------------------------------------------------------*/
9977 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9978 ( NULL == pEventData->pCBfnc ))
9979 {
9980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009981 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009982 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009983 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009984 }
9985
Jeff Johnsone7245742012-09-05 17:12:55 -07009986 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009987 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009988 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009989 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9990 /*-------------------------------------------------------------------------
9991 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009992 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009993 -------------------------------------------------------------------------*/
9994 wpalMutexAcquire(&pWDICtx->wptMutex);
9995
9996 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009997 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009998 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009999 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10000 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010001 &macBSSID))
10002 {
10003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010004 "This station does not exist in the WDI Station Table %d",
10005 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010006 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010007 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010008 }
10009
10010
Jeff Johnsone7245742012-09-05 17:12:55 -070010011 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010012
Jeff Johnsone7245742012-09-05 17:12:55 -070010013 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010014 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10016 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10017 __func__, MAC_ADDR_ARRAY(macBSSID));
10018
Jeff Johnson295189b2012-06-20 16:38:30 -070010019 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010020 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010021 }
10022
10023 /*------------------------------------------------------------------------
10024 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010025 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010026 ------------------------------------------------------------------------*/
10027 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10028 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10030 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10031 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010032
Jeff Johnsone7245742012-09-05 17:12:55 -070010033 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010034 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010035 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010036 }
10037
10038
10039 wpalMutexRelease(&pWDICtx->wptMutex);
10040 /*-----------------------------------------------------------------------
10041 Get message buffer
10042 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010043 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10044 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010045 sizeof(halAddBASessionReq.addBASessionParams),
10046 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010047 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010048 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10049 {
10050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010051 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010052 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10053 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010054 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010055 }
10056
10057 halAddBASessionReq.addBASessionParams.staIdx =
10058 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10059 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10060 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10061 WDI_MAC_ADDR_LEN);
10062 halAddBASessionReq.addBASessionParams.baTID =
10063 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10064 halAddBASessionReq.addBASessionParams.baPolicy =
10065 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10066 halAddBASessionReq.addBASessionParams.baBufferSize =
10067 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10068 halAddBASessionReq.addBASessionParams.baTimeout =
10069 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10070 halAddBASessionReq.addBASessionParams.baSSN =
10071 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10072 halAddBASessionReq.addBASessionParams.baDirection =
10073 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10074
Jeff Johnsone7245742012-09-05 17:12:55 -070010075 wpalMemoryCopy( pSendBuffer+usDataOffset,
10076 &halAddBASessionReq.addBASessionParams,
10077 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010078
10079 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010080 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010081
10082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010083 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010084 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010085 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10086 wdiAddBASessionRspCb, pEventData->pUserData,
10087 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010088}/*WDI_ProcessAddBASessionReq*/
10089
10090/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010091 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010092 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010093
10094 @param pWDICtx: pointer to the WLAN DAL context
10095 pEventData: pointer to the event information structure
10096
Jeff Johnson295189b2012-06-20 16:38:30 -070010097 @see
10098 @return Result of the function call
10099*/
10100WDI_Status
10101WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010102(
Jeff Johnson295189b2012-06-20 16:38:30 -070010103 WDI_ControlBlockType* pWDICtx,
10104 WDI_EventInfoType* pEventData
10105)
10106{
10107 WDI_DelBAReqParamsType* pwdiDelBAParams;
10108 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010109 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010110 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010111 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010112 wpt_uint16 usDataOffset = 0;
10113 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010114 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010115 wpt_macAddr macBSSID;
10116 tDelBAParams halDelBAparam;
10117 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10118
10119 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010120 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010121 -------------------------------------------------------------------------*/
10122 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10123 ( NULL == pEventData->pCBfnc ))
10124 {
10125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010126 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010127 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010128 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010129 }
10130
10131 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10132 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10133 /*-------------------------------------------------------------------------
10134 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010135 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010136 -------------------------------------------------------------------------*/
10137 wpalMutexAcquire(&pWDICtx->wptMutex);
10138
10139 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010140 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010141 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010142 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10143 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010144 &macBSSID))
10145 {
10146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010147 "This station does not exist in the WDI Station Table %d",
10148 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010149 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010150 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010151 }
10152
Jeff Johnsone7245742012-09-05 17:12:55 -070010153 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010154
Jeff Johnsone7245742012-09-05 17:12:55 -070010155 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010156 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10158 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10159 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010160
10161 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010162 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010163 }
10164
10165 /*------------------------------------------------------------------------
10166 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010167 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010168 ------------------------------------------------------------------------*/
10169 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10170 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10172 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10173 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010174
Jeff Johnsone7245742012-09-05 17:12:55 -070010175 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010176 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010177 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010178 }
10179
10180 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010181 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010182 sizeof(halDelBAparam),
10183 &pSendBuffer, &usDataOffset, &usSendSize))||
10184 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10185 {
10186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010187 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010188 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10189 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010190 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010191 }
10192
10193 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10194 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10195 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10196
Jeff Johnsone7245742012-09-05 17:12:55 -070010197 wpalMemoryCopy( pSendBuffer+usDataOffset,
10198 &halDelBAparam,
10199 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010200
10201 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010202 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010203
10204 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010205 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010206 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010207 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10208 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010209}/*WDI_ProcessDelBAReq*/
10210
10211#ifdef FEATURE_WLAN_CCX
10212
10213WDI_Status
10214WDI_ProcessTSMStatsReq
10215(
10216 WDI_ControlBlockType* pWDICtx,
10217 WDI_EventInfoType* pEventData
10218)
10219{
10220 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10221 WDI_TsmRspCb wdiTSMRspCb;
10222 wpt_uint8 ucCurrentBSSSesIdx = 0;
10223 WDI_BSSSessionType* pBSSSes = NULL;
10224 wpt_uint8* pSendBuffer = NULL;
10225 wpt_uint16 usDataOffset = 0;
10226 wpt_uint16 usSendSize = 0;
10227 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10228 tTsmStatsParams halTsmStatsReqParams = {0};
10229
10230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10231
10232 /*-------------------------------------------------------------------------
10233 Sanity check
10234 -------------------------------------------------------------------------*/
10235 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10236 ( NULL == pEventData->pCBfnc ))
10237 {
10238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010239 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010240 WDI_ASSERT(0);
10241 return WDI_STATUS_E_FAILURE;
10242 }
10243
10244 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10245 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10246 /*-------------------------------------------------------------------------
10247 Check to see if we are in the middle of an association, if so queue, if
10248 not it means it is free to process request
10249 -------------------------------------------------------------------------*/
10250 wpalMutexAcquire(&pWDICtx->wptMutex);
10251
10252 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10253 if ( NULL == pBSSSes )
10254 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10256 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10257 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010258
10259 wpalMutexRelease(&pWDICtx->wptMutex);
10260 return WDI_STATUS_E_NOT_ALLOWED;
10261 }
10262
10263 /*------------------------------------------------------------------------
10264 Check if this BSS is being currently processed or queued,
10265 if queued - queue the new request as well
10266 ------------------------------------------------------------------------*/
10267 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10268 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010270 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010271 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010272
10273 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10274 wpalMutexRelease(&pWDICtx->wptMutex);
10275 return wdiStatus;
10276 }
10277
10278 wpalMutexRelease(&pWDICtx->wptMutex);
10279 /*-----------------------------------------------------------------------
10280 Get message buffer
10281 ! TO DO : proper conversion into the HAL Message Request Format
10282 -----------------------------------------------------------------------*/
10283 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10284 sizeof(halTsmStatsReqParams),
10285 &pSendBuffer, &usDataOffset, &usSendSize))||
10286 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10287 {
10288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010289 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010290 pEventData, pwdiTSMParams, wdiTSMRspCb);
10291 WDI_ASSERT(0);
10292 return WDI_STATUS_E_FAILURE;
10293 }
10294
10295 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10296 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10297 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10298 WDI_MAC_ADDR_LEN);
10299 wpalMemoryCopy( pSendBuffer+usDataOffset,
10300 &halTsmStatsReqParams,
10301 sizeof(halTsmStatsReqParams));
10302
10303 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10304 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10305
10306 /*-------------------------------------------------------------------------
10307 Send TSM Stats Request to HAL
10308 -------------------------------------------------------------------------*/
10309 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10310 wdiTSMRspCb, pEventData->pUserData,
10311 WDI_TSM_STATS_RESP);
10312}/*WDI_ProcessTSMStatsReq*/
10313
10314#endif
10315
10316
10317/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010318 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010319 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010320
10321 @param pWDICtx: pointer to the WLAN DAL context
10322 pEventData: pointer to the event information structure
10323
Jeff Johnson295189b2012-06-20 16:38:30 -070010324 @see
10325 @return Result of the function call
10326*/
10327WDI_Status
10328WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010329(
Jeff Johnson295189b2012-06-20 16:38:30 -070010330 WDI_ControlBlockType* pWDICtx,
10331 WDI_EventInfoType* pEventData
10332)
10333{
10334 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10335 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010336 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010337 wpt_uint16 usDataOffset = 0;
10338 wpt_uint16 usSendSize = 0;
10339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10340
10341 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010342 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010343 -------------------------------------------------------------------------*/
10344 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10345 ( NULL == pEventData->pCBfnc ))
10346 {
10347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010348 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010349 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010350 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010351 }
10352
10353 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10354 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10355 /*-----------------------------------------------------------------------
10356 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010357 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010358 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010359 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010360 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10361 &pSendBuffer, &usDataOffset, &usSendSize))||
10362 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10363 {
10364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010365 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010366 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10367 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010368 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010369 }
10370
Jeff Johnsone7245742012-09-05 17:12:55 -070010371 wpalMemoryCopy( pSendBuffer+usDataOffset,
10372 &pwdiFlushAcParams->wdiFlushAcInfo,
10373 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010374
10375 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010376 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010377
10378 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010379 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010380 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010381 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10382 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010383}/*WDI_ProcessFlushAcReq*/
10384
10385/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010386 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010387 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010388
10389 @param pWDICtx: pointer to the WLAN DAL context
10390 pEventData: pointer to the event information structure
10391
Jeff Johnson295189b2012-06-20 16:38:30 -070010392 @see
10393 @return Result of the function call
10394*/
10395WDI_Status
10396WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010397(
Jeff Johnson295189b2012-06-20 16:38:30 -070010398 WDI_ControlBlockType* pWDICtx,
10399 WDI_EventInfoType* pEventData
10400)
10401{
10402 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10403 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010404 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010405 wpt_uint16 usDataOffset = 0;
10406 wpt_uint16 usSendSize = 0;
10407
10408 tBtAmpEventMsg haltBtAmpEventMsg;
10409 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10410
10411 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010412 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010413 -------------------------------------------------------------------------*/
10414 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10415 ( NULL == pEventData->pCBfnc ))
10416 {
10417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010418 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010419 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010420 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010421 }
10422
10423 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10424 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10425 /*-----------------------------------------------------------------------
10426 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010427 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010428 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010429 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010430 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10431 &pSendBuffer, &usDataOffset, &usSendSize))||
10432 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10433 {
10434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010435 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010436 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10437 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010438 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010439 }
10440
Jeff Johnsone7245742012-09-05 17:12:55 -070010441 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010442 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010443 wpalMemoryCopy( pSendBuffer+usDataOffset,
10444 &haltBtAmpEventMsg.btAmpEventParams,
10445 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010446
10447 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010448 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010449
10450 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010451 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010452 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010453 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10454 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010455}/*WDI_ProcessBtAmpEventReq*/
10456
10457/**
10458 @brief Process Add STA self Request function (called when Main FSM
10459 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010460
10461 @param pWDICtx: pointer to the WLAN DAL context
10462 pEventData: pointer to the event information structure
10463
Jeff Johnson295189b2012-06-20 16:38:30 -070010464 @see
10465 @return Result of the function call
10466*/
10467WDI_Status
10468WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010469(
Jeff Johnson295189b2012-06-20 16:38:30 -070010470 WDI_ControlBlockType* pWDICtx,
10471 WDI_EventInfoType* pEventData
10472)
10473{
10474 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10475 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010476 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010477 wpt_uint16 usDataOffset = 0;
10478 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010479 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10481
10482 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010483 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010484 -------------------------------------------------------------------------*/
10485 if (( NULL == pEventData ) ||
10486 ( NULL == pEventData->pEventData) ||
10487 ( NULL == pEventData->pCBfnc))
10488 {
10489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010490 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010491 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010492 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010493 }
10494
Jeff Johnsone7245742012-09-05 17:12:55 -070010495 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010496 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010497 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010498 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10499 /*-----------------------------------------------------------------------
10500 Get message buffer
10501 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010502 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10503 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010504 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010505 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010506 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010507 {
10508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010509 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010510 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010513 }
10514
10515 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010516 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010517 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10518
Jeff Johnsone7245742012-09-05 17:12:55 -070010519 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010520 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10521 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10522 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10523 {
10524 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10525 }
10526 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10527 VOS_P2P_CLIENT_MODE) ||
10528 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10529 VOS_P2P_DEVICE))
10530 {
10531 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10532 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010533 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010534 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010535
10536 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010537 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010538
10539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010540 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010541 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010542 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10543 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10544 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010545}/*WDI_ProcessAddSTASelfReq*/
10546
10547
10548
10549/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010550 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010551 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010552
10553 @param pWDICtx: pointer to the WLAN DAL context
10554 pEventData: pointer to the event information structure
10555
Jeff Johnson295189b2012-06-20 16:38:30 -070010556 @see
10557 @return Result of the function call
10558*/
10559WDI_Status
10560WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010561(
Jeff Johnson295189b2012-06-20 16:38:30 -070010562 WDI_ControlBlockType* pWDICtx,
10563 WDI_EventInfoType* pEventData
10564)
10565{
10566 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10567 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010568 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010569 wpt_uint16 usDataOffset = 0;
10570 wpt_uint16 usSendSize = 0;
10571 tDelStaSelfParams halSetDelSelfSTAParams;
10572 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10573
10574 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010575 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010576 -------------------------------------------------------------------------*/
10577 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10578 ( NULL == pEventData->pCBfnc ))
10579 {
10580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010581 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010582 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010583 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010584 }
10585
Jeff Johnsone7245742012-09-05 17:12:55 -070010586 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010587 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10588 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10589
10590 /*-----------------------------------------------------------------------
10591 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010592 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010593 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010594 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010595 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10596 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010597 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010598 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10599 {
10600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010601 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010602 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10603 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010604 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010605 }
10606
Jeff Johnsone7245742012-09-05 17:12:55 -070010607 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010608 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10609
Jeff Johnsone7245742012-09-05 17:12:55 -070010610 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10611 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010612
10613 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010614 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010615
10616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010617 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010618 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010619 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10620 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010621 WDI_DEL_STA_SELF_RESP);
10622
10623}
10624
Jeff Johnsone7245742012-09-05 17:12:55 -070010625#ifdef FEATURE_OEM_DATA_SUPPORT
10626/**
10627 @brief Process Start Oem Data Request function (called when Main
10628 FSM allows it)
10629
10630 @param pWDICtx: pointer to the WLAN DAL context
10631 pEventData: pointer to the event information structure
10632
10633 @see
10634 @return Result of the function call
10635*/
10636WDI_Status
10637WDI_ProcessStartOemDataReq
10638(
10639 WDI_ControlBlockType* pWDICtx,
10640 WDI_EventInfoType* pEventData
10641)
10642{
10643 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10644 WDI_oemDataRspCb wdiOemDataRspCb;
10645 wpt_uint8* pSendBuffer = NULL;
10646 wpt_uint16 usDataOffset = 0;
10647 wpt_uint16 usSendSize = 0;
10648 wpt_uint16 reqLen;
10649 tStartOemDataReqParams* halStartOemDataReqParams;
10650
10651 /*-------------------------------------------------------------------------
10652 Sanity check
10653 -------------------------------------------------------------------------*/
10654 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10655 ( NULL == pEventData->pCBfnc ))
10656 {
10657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010658 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010659 WDI_ASSERT(0);
10660 return WDI_STATUS_E_FAILURE;
10661 }
10662
10663 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10664 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10665
10666 /*-----------------------------------------------------------------------
10667 Get message buffer
10668 -----------------------------------------------------------------------*/
10669
10670 reqLen = sizeof(tStartOemDataReqParams);
10671
10672 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10673 WDI_START_OEM_DATA_REQ, reqLen,
10674 &pSendBuffer, &usDataOffset, &usSendSize))||
10675 (usSendSize < (usDataOffset + reqLen)))
10676 {
10677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010678 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070010679 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10680 WDI_ASSERT(0);
10681 return WDI_STATUS_E_FAILURE;
10682 }
10683
10684 //copying WDI OEM DATA REQ PARAMS to shared memory
10685 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10686
10687 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10688 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10689
10690 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10691 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10692
10693 /*-------------------------------------------------------------------------
10694 Send Start Request to HAL
10695 -------------------------------------------------------------------------*/
10696 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10697 wdiOemDataRspCb, pEventData->pUserData,
10698 WDI_START_OEM_DATA_RESP);
10699}/*WDI_ProcessStartOemDataReq*/
10700#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010701
10702/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010703 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010704 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010705
10706 @param pWDICtx: pointer to the WLAN DAL context
10707 pEventData: pointer to the event information structure
10708
Jeff Johnson295189b2012-06-20 16:38:30 -070010709 @see
10710 @return Result of the function call
10711*/
10712WDI_Status
10713WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010714(
Jeff Johnson295189b2012-06-20 16:38:30 -070010715 WDI_ControlBlockType* pWDICtx,
10716 WDI_EventInfoType* pEventData
10717)
10718{
10719 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10720 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010721 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010722 wpt_uint16 usDataOffset = 0;
10723 wpt_uint16 usSendSize = 0;
10724 tHalWlanHostResumeReqParam halResumeReqParams;
10725
10726 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10727
10728 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010729 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010730 -------------------------------------------------------------------------*/
10731 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10732 ( NULL == pEventData->pCBfnc ))
10733 {
10734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010735 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010738 }
10739
10740 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10741 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10742
10743 /*-----------------------------------------------------------------------
10744 Get message buffer
10745 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010746 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010747 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10748 &pSendBuffer, &usDataOffset, &usSendSize))||
10749 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10750 {
10751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010752 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010753 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010756 }
10757
Jeff Johnsone7245742012-09-05 17:12:55 -070010758 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010759 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010760
10761 wpalMemoryCopy( pSendBuffer+usDataOffset,
10762 &halResumeReqParams,
10763 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010764
10765 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010766 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010767
10768 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010769 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010770 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010771 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10772 wdiHostResumeRspCb, pEventData->pUserData,
10773 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010774}/*WDI_ProcessHostResumeReq*/
10775
10776/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010777 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010778 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010779
10780 @param pWDICtx: pointer to the WLAN DAL context
10781 pEventData: pointer to the event information structure
10782
Jeff Johnson295189b2012-06-20 16:38:30 -070010783 @see
10784 @return Result of the function call
10785*/
10786WDI_Status
10787WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010788(
Jeff Johnson295189b2012-06-20 16:38:30 -070010789 WDI_ControlBlockType* pWDICtx,
10790 WDI_EventInfoType* pEventData
10791)
10792{
10793 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10794 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010795 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010796 wpt_uint16 usDataOffset = 0;
10797 wpt_uint16 usSendSize = 0;
10798 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10800
10801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010802 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010803 -------------------------------------------------------------------------*/
10804 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10805 ( NULL == pEventData->pCBfnc ))
10806 {
10807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010808 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010811 }
10812
10813 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10814 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010815
Jeff Johnson295189b2012-06-20 16:38:30 -070010816 /*-----------------------------------------------------------------------
10817 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010818 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010819 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010820 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010821 sizeof(halTxPerTrackingReqParam),
10822 &pSendBuffer, &usDataOffset, &usSendSize))||
10823 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10824 {
10825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010826 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010827 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10828 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010829 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010830 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010831
Jeff Johnson295189b2012-06-20 16:38:30 -070010832 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10833 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10834 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10835 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010836
10837 wpalMemoryCopy( pSendBuffer+usDataOffset,
10838 &halTxPerTrackingReqParam,
10839 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010840
10841 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010842 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010843
10844 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010845 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010846 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010847 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10848 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010849}/*WDI_ProcessSetTxPerTrackingReq*/
10850
10851/*=========================================================================
10852 Indications
10853=========================================================================*/
10854
10855/**
10856 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010857
10858 @param pWDICtx: pointer to the WLAN DAL context
10859 pEventData: pointer to the event information structure
10860
Jeff Johnson295189b2012-06-20 16:38:30 -070010861 @see
10862 @return Result of the function call
10863*/
10864WDI_Status
10865WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010866(
Jeff Johnson295189b2012-06-20 16:38:30 -070010867 WDI_ControlBlockType* pWDICtx,
10868 WDI_EventInfoType* pEventData
10869)
10870{
10871 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010872 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010873 wpt_uint16 usDataOffset = 0;
10874 wpt_uint16 usSendSize = 0;
10875 WDI_Status wdiStatus;
10876 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10878
10879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010880 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010881 -------------------------------------------------------------------------*/
10882 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10883 {
10884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010885 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010886 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010887 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010888 }
10889
10890 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10891
10892 /*-----------------------------------------------------------------------
10893 Get message buffer
10894 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010895 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10896 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010897 sizeof(halWlanSuspendIndparams),
10898 &pSendBuffer, &usDataOffset, &usSendSize))||
10899 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10900 {
10901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10902 "Unable to get send buffer in Suspend Ind ");
10903 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010904 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010905 }
10906
10907 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10908 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10909
Jeff Johnsone7245742012-09-05 17:12:55 -070010910 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070010911 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010912
Jeff Johnsone7245742012-09-05 17:12:55 -070010913 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10914 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010915
10916 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010917 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010918 -------------------------------------------------------------------------*/
10919 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010920 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010921
Jeff Johnsone7245742012-09-05 17:12:55 -070010922 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010923 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10924}/*WDI_ProcessHostSuspendInd*/
10925
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080010926
10927
10928/**
10929 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10930
10931 @param pWDICtx: pointer to the WLAN DAL context
10932 pEventData: pointer to the event information structure
10933
10934 @see
10935 @return Result of the function call
10936*/
10937WDI_Status
10938WDI_ProcessTrafficStatsInd
10939(
10940 WDI_ControlBlockType* pWDICtx,
10941 WDI_EventInfoType* pEventData
10942)
10943{
10944 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10945 wpt_uint8* pSendBuffer = NULL;
10946 wpt_uint16 usDataOffset = 0;
10947 wpt_uint16 usSendSize = 0;
10948 WDI_Status wdiStatus;
10949 tStatsClassBIndParams* pStatsClassBIndParams;
10950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10951
10952 /*-------------------------------------------------------------------------
10953 Sanity check
10954 -------------------------------------------------------------------------*/
10955 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10956 {
10957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10958 "%s: Invalid parameters in Traffic Stats ind",__func__);
10959 WDI_ASSERT(0);
10960 return WDI_STATUS_E_FAILURE;
10961 }
10962
10963 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10964
10965 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10966 {
10967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10968 "%s: Invalid parameters in Traffic Stats ind",__func__);
10969 WDI_ASSERT(0);
10970 return WDI_STATUS_E_FAILURE;
10971 }
10972
10973 /*-----------------------------------------------------------------------
10974 Get message buffer
10975 -----------------------------------------------------------------------*/
10976 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10977 WDI_TRAFFIC_STATS_IND,
10978 sizeof(tStatsClassBIndParams),
10979 &pSendBuffer, &usDataOffset, &usSendSize))||
10980 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10981 {
10982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10983 "Unable to get send buffer in Traffic Stats Ind ");
10984 WDI_ASSERT(0);
10985 return WDI_STATUS_E_FAILURE;
10986 }
10987
10988 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10989
10990 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10991
10992 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10993 pTrafficStatsIndParams->pTrafficStats,
10994 pTrafficStatsIndParams->length);
10995
10996 /*-------------------------------------------------------------------------
10997 Send Suspend Request to HAL
10998 -------------------------------------------------------------------------*/
10999 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11000 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11001
11002 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11003 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11004}/*WDI_ProcessTrafficStatsInd*/
11005
Chet Lanctot186b5732013-03-18 10:26:30 -070011006#ifdef WLAN_FEATURE_11W
11007/**
11008 @brief Process Exclude Unencrypted Indications function (called
11009 when Main FSM allows it)
11010
11011 @param pWDICtx: pointer to the WLAN DAL context
11012 pEventData: pointer to the event information structure
11013
11014 @see
11015 @return Result of the function call
11016*/
11017WDI_Status
11018WDI_ProcessExcludeUnencryptInd
11019(
11020 WDI_ControlBlockType* pWDICtx,
11021 WDI_EventInfoType* pEventData
11022)
11023{
11024 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11025 wpt_uint8* pSendBuffer = NULL;
11026 wpt_uint16 usDataOffset = 0;
11027 wpt_uint16 usSendSize = 0;
11028 WDI_Status wdiStatus;
11029 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11031
11032 /*-------------------------------------------------------------------------
11033 Sanity check
11034 -------------------------------------------------------------------------*/
11035 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11036 {
11037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11038 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11039 WDI_ASSERT(0);
11040 return WDI_STATUS_E_FAILURE;
11041 }
11042
11043 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11044
11045 /*-----------------------------------------------------------------------
11046 Get message buffer
11047 -----------------------------------------------------------------------*/
11048 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11049 WDI_EXCLUDE_UNENCRYPTED_IND,
11050 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11051 &pSendBuffer, &usDataOffset, &usSendSize))||
11052 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11053 {
11054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11055 "Unable to get send buffer in Exclude Unencrypted Ind ");
11056 WDI_ASSERT(0);
11057 return WDI_STATUS_E_FAILURE;
11058 }
11059
11060 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11061
11062 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11063
11064 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11065 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11066
11067 /*-------------------------------------------------------------------------
11068 Send Suspend Request to HAL
11069 -------------------------------------------------------------------------*/
11070 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11071 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11072
11073 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11074 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11075}/*WDI_ProcessExcludeUnencryptInd*/
11076#endif
11077
Yue Mab9c86f42013-08-14 15:59:08 -070011078/**
11079 @brief Process Add Periodic Tx Pattern Indication function (called when
11080 Main FSM allows it)
11081
11082 @param pWDICtx: pointer to the WLAN DAL context
11083 pEventData: pointer to the event information structure
11084
11085 @see
11086 @return Result of the function call
11087*/
11088WDI_Status
11089WDI_ProcessAddPeriodicTxPtrnInd
11090(
11091 WDI_ControlBlockType* pWDICtx,
11092 WDI_EventInfoType* pEventData
11093)
11094{
11095 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11096 wpt_uint8* pSendBuffer = NULL;
11097 wpt_uint16 usDataOffset = 0;
11098 wpt_uint16 usSendSize = 0;
11099 WDI_Status wdiStatus;
11100 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11101 wpt_uint8 selfStaIdx = 0;
11102
11103 /*-------------------------------------------------------------------------
11104 Sanity check
11105 -------------------------------------------------------------------------*/
11106 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11107 {
11108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11109 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11110 WDI_ASSERT(0);
11111 return WDI_STATUS_E_FAILURE;
11112 }
11113
11114 pAddPeriodicTxPtrnParams =
11115 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11116
11117 /*------------------------------------------------------------------------
11118 Get message buffer
11119 ------------------------------------------------------------------------*/
11120 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11121 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11122 &pSendBuffer, &usDataOffset, &usSendSize))||
11123 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11124 {
11125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11126 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11127 __func__);
11128 WDI_ASSERT(0);
11129 return WDI_STATUS_E_FAILURE;
11130 }
11131
11132 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11133
11134 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11135 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11136 &selfStaIdx))
11137 {
11138 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11139 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011140 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011141
11142 return WDI_STATUS_E_FAILURE;
11143 }
11144
11145 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11146 halAddPeriodicTxPtrn->ucPtrnId =
11147 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11148 halAddPeriodicTxPtrn->usPtrnSize =
11149 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11150 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11151 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11152
11153 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11154 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11155 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11156
11157 /*-------------------------------------------------------------------------
11158 Send Indication to HAL
11159 -------------------------------------------------------------------------*/
11160 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11161 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11162
11163 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11164
11165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11166 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11167
11168 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11169} /* WDI_ProcessAddPeriodicTxPtrnInd */
11170
11171/**
11172 @brief Process Delete Periodic Tx Pattern Indication function (called when
11173 Main FSM allows it)
11174
11175 @param pWDICtx: pointer to the WLAN DAL context
11176 pEventData: pointer to the event information structure
11177
11178 @see
11179 @return Result of the function call
11180*/
11181WDI_Status
11182WDI_ProcessDelPeriodicTxPtrnInd
11183(
11184 WDI_ControlBlockType* pWDICtx,
11185 WDI_EventInfoType* pEventData
11186)
11187{
11188 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11189 wpt_uint8* pSendBuffer = NULL;
11190 wpt_uint16 usDataOffset = 0;
11191 wpt_uint16 usSendSize = 0;
11192 WDI_Status wdiStatus;
11193 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11194 wpt_uint8 selfStaIdx = 0;
11195
11196 /*-------------------------------------------------------------------------
11197 Sanity check
11198 -------------------------------------------------------------------------*/
11199 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11200 {
11201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11202 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11203 WDI_ASSERT(0);
11204 return WDI_STATUS_E_FAILURE;
11205 }
11206
11207 pDelPeriodicTxPtrnParams =
11208 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11209
11210 /*------------------------------------------------------------------------
11211 Get message buffer
11212 ------------------------------------------------------------------------*/
11213 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11214 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11215 &pSendBuffer, &usDataOffset, &usSendSize))||
11216 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11217 {
11218 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11219 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11220 __func__);
11221 WDI_ASSERT(0);
11222 return WDI_STATUS_E_FAILURE;
11223 }
11224
11225 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11226
11227 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11228 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11229 &selfStaIdx))
11230 {
11231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11232 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011233 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011234
11235 return WDI_STATUS_E_FAILURE;
11236 }
11237
11238 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11239 halDelPeriodicTxPtrn->uPatternIdBitmap =
11240 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11241
11242 /*-------------------------------------------------------------------------
11243 Send Indication to HAL
11244 -------------------------------------------------------------------------*/
11245 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11246 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11247
11248 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11249
11250 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11251 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11252
11253 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11254} /* WDI_ProcessDelPeriodicTxPtrnInd */
11255
Jeff Johnson295189b2012-06-20 16:38:30 -070011256/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011257 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011258==========================================================================*/
11259/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011260 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011261 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011262
11263 @param pWDICtx: pointer to the WLAN DAL context
11264 pEventData: pointer to the event information structure
11265
Jeff Johnson295189b2012-06-20 16:38:30 -070011266 @see
11267 @return Result of the function call
11268*/
11269WDI_Status
11270WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011271(
Jeff Johnson295189b2012-06-20 16:38:30 -070011272 WDI_ControlBlockType* pWDICtx,
11273 WDI_EventInfoType* pEventData
11274)
11275{
11276 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11277 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011278 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011279 wpt_uint16 usDataOffset = 0;
11280 wpt_uint16 usSendSize = 0;
11281 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11283
11284 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011285 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011286 -------------------------------------------------------------------------*/
11287 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11288 ( NULL == pEventData->pCBfnc ))
11289 {
11290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011291 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011294 }
11295
11296 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11297 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11298 /*-----------------------------------------------------------------------
11299 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011300 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011301 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011302 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011303 sizeof(halSwitchChannelReq.switchChannelParams),
11304 &pSendBuffer, &usDataOffset, &usSendSize))||
11305 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11306 {
11307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011308 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011309 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11310 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011311 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011312 }
11313
Jeff Johnsone7245742012-09-05 17:12:55 -070011314 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011315 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011316#ifndef WLAN_FEATURE_VOWIFI
11317 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011318 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11319#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011320 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011321 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11322
11323#ifdef WLAN_FEATURE_VOWIFI
11324 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011325 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011326 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11327 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11328 WDI_MAC_ADDR_LEN);
11329 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11330 pwdiSwitchChParams->wdiChInfo.macBSSId,
11331 WDI_MAC_ADDR_LEN);
11332#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011333 wpalMemoryCopy( pSendBuffer+usDataOffset,
11334 &halSwitchChannelReq.switchChannelParams,
11335 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011336
11337 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011338 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011339
11340 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011341 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011342 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011343 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11344 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011345}/*WDI_ProcessChannelSwitchReq*/
11346
11347/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011348 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011349 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011350
11351 @param pWDICtx: pointer to the WLAN DAL context
11352 pEventData: pointer to the event information structure
11353
Jeff Johnson295189b2012-06-20 16:38:30 -070011354 @see
11355 @return Result of the function call
11356*/
11357WDI_Status
11358WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011359(
Jeff Johnson295189b2012-06-20 16:38:30 -070011360 WDI_ControlBlockType* pWDICtx,
11361 WDI_EventInfoType* pEventData
11362)
11363{
11364 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11365 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011366 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011367 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011368 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011369 wpt_uint16 usDataOffset = 0;
11370 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011371 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011372
Jeff Johnsone7245742012-09-05 17:12:55 -070011373 tConfigStaReqMsg halConfigStaReqMsg;
11374 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011375 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11376
11377 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011378 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011379 -------------------------------------------------------------------------*/
11380 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11381 ( NULL == pEventData->pCBfnc ))
11382 {
11383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011384 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011385 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011386 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011387 }
11388
11389 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11390 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11391 /*-------------------------------------------------------------------------
11392 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011393 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011394 -------------------------------------------------------------------------*/
11395 wpalMutexAcquire(&pWDICtx->wptMutex);
11396
11397 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011398 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011399 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011400 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11401 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11402 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011403
Jeff Johnsone7245742012-09-05 17:12:55 -070011404 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011405 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11407 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11408 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011409
11410 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011411 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011412 }
11413
11414 /*------------------------------------------------------------------------
11415 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011416 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011417 ------------------------------------------------------------------------*/
11418 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11419 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11421 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11422 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011423
Jeff Johnsone7245742012-09-05 17:12:55 -070011424 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011425 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011426 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011427 }
11428
11429 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011430
11431 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11432#ifdef WLAN_FEATURE_11AC
11433 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011434 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011435 else
11436#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011437 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011438
Jeff Johnson295189b2012-06-20 16:38:30 -070011439 /*-----------------------------------------------------------------------
11440 Get message buffer
11441 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011442 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11443 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011444 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011445 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011446 {
11447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011448 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011449 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011452 }
11453
11454 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011455 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011456 &pwdiConfigSTAParams->wdiReqInfo);
11457
11458 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11459 {
11460 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011461 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011462 WDI_STATableFindStaidByAddr(pWDICtx,
11463 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011464 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011465 {
11466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011467 MAC_ADDRESS_STR
11468 ": This station does not exist in the WDI Station Table",
11469 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070011470 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011471 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011472 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011473 }
11474 }
11475 else
11476 {
11477 /* Need to fill in the STA Index to invalid, since at this point we have not
11478 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070011479 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011480 }
11481
11482 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011483 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011484
Jeff Johnsone7245742012-09-05 17:12:55 -070011485 wpalMemoryCopy( pSendBuffer+usDataOffset,
11486 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011487 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011488
11489 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011490 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011491
Jeff Johnsone7245742012-09-05 17:12:55 -070011492 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11493 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011494 sizeof(pWDICtx->wdiCachedConfigStaReq));
11495
11496 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011497 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011498 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011499 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11500 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011501}/*WDI_ProcessConfigStaReq*/
11502
11503
11504/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011505 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011506 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011507
11508 @param pWDICtx: pointer to the WLAN DAL context
11509 pEventData: pointer to the event information structure
11510
Jeff Johnson295189b2012-06-20 16:38:30 -070011511 @see
11512 @return Result of the function call
11513*/
11514WDI_Status
11515WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011516(
Jeff Johnson295189b2012-06-20 16:38:30 -070011517 WDI_ControlBlockType* pWDICtx,
11518 WDI_EventInfoType* pEventData
11519)
11520{
11521 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11522 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011523 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011524 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011525 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011526 wpt_uint16 usDataOffset = 0;
11527 wpt_uint16 usSendSize = 0;
11528 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011529 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011530 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11531
11532 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011533 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011534 -------------------------------------------------------------------------*/
11535 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11536 ( NULL == pEventData->pCBfnc ))
11537 {
11538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011539 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011542 }
11543
11544 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11545 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11546 /*-------------------------------------------------------------------------
11547 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011548 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011549 -------------------------------------------------------------------------*/
11550 wpalMutexAcquire(&pWDICtx->wptMutex);
11551
11552 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011553 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011554 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011555 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11556 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11557 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011558
Jeff Johnsone7245742012-09-05 17:12:55 -070011559 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011560 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011562 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11563 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011564 }
11565 else
11566 {
11567 /*------------------------------------------------------------------------
11568 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011569 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011570 ------------------------------------------------------------------------*/
11571 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11572 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11574 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11575 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11576
11577 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011578 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011579 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011580 }
11581 }
11582 /* If the link is set to enter IDLE - the Session allocated for this BSS
11583 will be deleted on the Set Link State response coming from HAL
11584 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011585 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011586 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11587
11588 wpalMutexRelease(&pWDICtx->wptMutex);
11589 /*-----------------------------------------------------------------------
11590 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011591 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011592 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011593
11594 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011595 sizeof(halLinkStateReqMsg),
11596 &pSendBuffer, &usDataOffset, &usSendSize))||
11597 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11598 {
11599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011600 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011601 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11602 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011603 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011604 }
11605
11606 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11607 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11608
11609 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11610 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11611
Jeff Johnsone7245742012-09-05 17:12:55 -070011612 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011613 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11614
Jeff Johnsone7245742012-09-05 17:12:55 -070011615 wpalMemoryCopy( pSendBuffer+usDataOffset,
11616 &halLinkStateReqMsg,
11617 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011618
11619 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011620 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011621
11622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011623 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011624 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011625 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11626 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011627}/*WDI_ProcessSetLinkStateReq*/
11628
11629
11630/**
11631 @brief Process Get Stats Request function (called when Main FSM
11632 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011633
11634 @param pWDICtx: pointer to the WLAN DAL context
11635 pEventData: pointer to the event information structure
11636
Jeff Johnson295189b2012-06-20 16:38:30 -070011637 @see
11638 @return Result of the function call
11639*/
11640WDI_Status
11641WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011642(
Jeff Johnson295189b2012-06-20 16:38:30 -070011643 WDI_ControlBlockType* pWDICtx,
11644 WDI_EventInfoType* pEventData
11645)
11646{
11647 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11648 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011649 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011650 wpt_uint16 usDataOffset = 0;
11651 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011652 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011653 WDI_BSSSessionType* pBSSSes = NULL;
11654 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011655 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011656 tHalStatsReqMsg halStatsReqMsg;
11657 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11658
11659 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011660 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011661 -------------------------------------------------------------------------*/
11662 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11663 ( NULL == pEventData->pCBfnc ) )
11664 {
11665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011666 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011667 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011668 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011669 }
11670
11671 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11672 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11673
11674 /*-------------------------------------------------------------------------
11675 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011676 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011677 -------------------------------------------------------------------------*/
11678 wpalMutexAcquire(&pWDICtx->wptMutex);
11679
11680 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011681 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011682 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011683 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11684 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011685 &macBSSID))
11686 {
11687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011688 "This station does not exist in the WDI Station Table %d",
11689 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011690 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011691 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011692 }
11693
Jeff Johnsone7245742012-09-05 17:12:55 -070011694 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11695 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011696 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11698 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11699 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011700
11701 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011702 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011703 }
11704
11705 /*------------------------------------------------------------------------
11706 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011707 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011708 ------------------------------------------------------------------------*/
11709 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11710 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11712 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11713 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011714
Jeff Johnsone7245742012-09-05 17:12:55 -070011715 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011716 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011717 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011718 }
11719
11720
11721 wpalMutexRelease(&pWDICtx->wptMutex);
11722
11723 /*-----------------------------------------------------------------------
11724 Get message buffer
11725 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011726 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011727 sizeof(halStatsReqMsg.statsReqParams),
11728 &pSendBuffer, &usDataOffset, &usSendSize))||
11729 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11730 {
11731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011732 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011733 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011736 }
11737
Jeff Johnsone7245742012-09-05 17:12:55 -070011738 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011739 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011740 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011741 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011742 wpalMemoryCopy( pSendBuffer+usDataOffset,
11743 &halStatsReqMsg.statsReqParams,
11744 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011745
11746 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011747 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011748
11749 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011750 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011751 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011752 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11753 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011754}/*WDI_ProcessGetStatsReq*/
11755
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080011756#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11757/**
11758 @brief Process Get Roam Rssi Request function (called when Main FSM
11759 allows it)
11760
11761 @param pWDICtx: pointer to the WLAN DAL context
11762 pEventData: pointer to the event information structure
11763
11764 @see
11765 @return Result of the function call
11766*/
11767WDI_Status
11768WDI_ProcessGetRoamRssiReq
11769(
11770 WDI_ControlBlockType* pWDICtx,
11771 WDI_EventInfoType* pEventData
11772)
11773{
11774 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11775 WDI_GetStatsRspCb wdiGetStatsRspCb;
11776 wpt_uint8* pSendBuffer = NULL;
11777 wpt_uint16 usDataOffset = 0;
11778 wpt_uint16 usSendSize = 0;
11779 wpt_uint8 ucCurrentBSSSesIdx = 0;
11780 WDI_BSSSessionType* pBSSSes = NULL;
11781 wpt_macAddr macBSSID;
11782 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11783 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11785 /*-------------------------------------------------------------------------
11786 Sanity check
11787 -------------------------------------------------------------------------*/
11788 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11789 ( NULL == pEventData->pCBfnc ) )
11790 {
11791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11792 "%s: Invalid parameters", __func__);
11793 WDI_ASSERT(0);
11794 return WDI_STATUS_E_FAILURE;
11795 }
11796
11797 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11798 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11799
11800 /*-------------------------------------------------------------------------
11801 Check to see if we are in the middle of an association, if so queue, if
11802 not it means it is free to process request
11803 -------------------------------------------------------------------------*/
11804 wpalMutexAcquire(&pWDICtx->wptMutex);
11805
11806 /*------------------------------------------------------------------------
11807 Find the BSS for which the request is made
11808 ------------------------------------------------------------------------*/
11809 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11810 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11811 &macBSSID))
11812 {
11813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011814 "This station does not exist in the WDI Station Table %d",
11815 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080011816 wpalMutexRelease(&pWDICtx->wptMutex);
11817 return WDI_STATUS_E_FAILURE;
11818 }
11819
11820 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11821 if ( NULL == pBSSSes )
11822 {
11823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11824 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11825 __func__, MAC_ADDR_ARRAY(macBSSID));
11826
11827 wpalMutexRelease(&pWDICtx->wptMutex);
11828 return WDI_STATUS_E_NOT_ALLOWED;
11829 }
11830
11831 /*------------------------------------------------------------------------
11832 Check if this BSS is being currently processed or queued,
11833 if queued - queue the new request as well
11834 ------------------------------------------------------------------------*/
11835 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11836 {
11837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11838 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11839 __func__, MAC_ADDR_ARRAY(macBSSID));
11840
11841 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11842 wpalMutexRelease(&pWDICtx->wptMutex);
11843 return wdiStatus;
11844 }
11845
11846 wpalMutexRelease(&pWDICtx->wptMutex);
11847
11848 /*-----------------------------------------------------------------------
11849 Get message buffer
11850 -----------------------------------------------------------------------*/
11851 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11852 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11853 &pSendBuffer, &usDataOffset, &usSendSize))||
11854 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11855 {
11856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011857 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080011858 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11859 WDI_ASSERT(0);
11860 return WDI_STATUS_E_FAILURE;
11861 }
11862
11863 halRssiRoamReqMsg.roamRssiReqParams.staId =
11864 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11865 wpalMemoryCopy( pSendBuffer+usDataOffset,
11866 &halRssiRoamReqMsg.roamRssiReqParams,
11867 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11868
11869 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11870 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11871
11872 /*-------------------------------------------------------------------------
11873 Send Get STA Request to HAL
11874 -------------------------------------------------------------------------*/
11875 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11876 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11877}/*WDI_ProcessGetRoamRssiReq*/
11878#endif
11879
Jeff Johnson295189b2012-06-20 16:38:30 -070011880/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011881 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011882 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011883
11884 @param pWDICtx: pointer to the WLAN DAL context
11885 pEventData: pointer to the event information structure
11886
Jeff Johnson295189b2012-06-20 16:38:30 -070011887 @see
11888 @return Result of the function call
11889*/
11890WDI_Status
11891WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011892(
Jeff Johnson295189b2012-06-20 16:38:30 -070011893 WDI_ControlBlockType* pWDICtx,
11894 WDI_EventInfoType* pEventData
11895)
11896{
11897 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11898 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11899
Jeff Johnsone7245742012-09-05 17:12:55 -070011900 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011901 wpt_uint16 usDataOffset = 0;
11902 wpt_uint16 usSendSize = 0;
11903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11904
11905 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011906 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011907 -------------------------------------------------------------------------*/
11908 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11909 ( NULL == pEventData->pCBfnc))
11910 {
11911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011912 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011913 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011914 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011915 }
11916
11917 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11918 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11919
11920 /*-----------------------------------------------------------------------
11921 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011922 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011923 -----------------------------------------------------------------------*/
11924
Jeff Johnsone7245742012-09-05 17:12:55 -070011925 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011926 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11927 &pSendBuffer, &usDataOffset, &usSendSize))||
11928 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11929 {
11930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011931 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011932 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11933 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011934 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011935 }
11936
Jeff Johnsone7245742012-09-05 17:12:55 -070011937 wpalMemoryCopy( pSendBuffer+usDataOffset,
11938 &pwdiUpdateCfgParams->uConfigBufferLen,
11939 sizeof(wpt_uint32));
11940 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11941 pwdiUpdateCfgParams->pConfigBuffer,
11942 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011943
11944 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011945 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011946
11947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011948 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011949 -------------------------------------------------------------------------*/
11950
Jeff Johnsone7245742012-09-05 17:12:55 -070011951 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11952 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011953
11954}/*WDI_ProcessUpdateCfgReq*/
11955
11956
11957/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011958 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011959 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011960
11961 @param pWDICtx: pointer to the WLAN DAL context
11962 pEventData: pointer to the event information structure
11963
Jeff Johnson295189b2012-06-20 16:38:30 -070011964 @see
11965 @return Result of the function call
11966*/
11967WDI_Status
11968WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011969(
Jeff Johnson295189b2012-06-20 16:38:30 -070011970 WDI_ControlBlockType* pWDICtx,
11971 WDI_EventInfoType* pEventData
11972)
11973{
11974 WDI_AddBAReqParamsType* pwdiAddBAParams;
11975 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011976 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011977 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011978 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011979 wpt_uint16 usDataOffset = 0;
11980 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011981 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011982 wpt_macAddr macBSSID;
11983
11984 tAddBAReqMsg halAddBAReq;
11985 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11986
11987 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011988 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011989 -------------------------------------------------------------------------*/
11990 if (( NULL == pEventData ) ||
11991 ( NULL == pEventData->pEventData) ||
11992 ( NULL == pEventData->pCBfnc ))
11993 {
11994 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011995 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011996 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011997 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011998 }
11999
12000 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12001 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12002
12003 /*-------------------------------------------------------------------------
12004 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012005 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012006 -------------------------------------------------------------------------*/
12007 wpalMutexAcquire(&pWDICtx->wptMutex);
12008
12009 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012010 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012011 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012012 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12013 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012014 &macBSSID))
12015 {
12016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012017 "This station does not exist in the WDI Station Table %d",
12018 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012019 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012020 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012021 }
12022
Jeff Johnsone7245742012-09-05 17:12:55 -070012023 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12024 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012025 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12027 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12028 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012029
12030 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012031 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012032 }
12033
12034 /*------------------------------------------------------------------------
12035 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012036 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012037 ------------------------------------------------------------------------*/
12038 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12039 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12041 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12042 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012043
Jeff Johnsone7245742012-09-05 17:12:55 -070012044 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012045 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012046 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012047 }
12048
12049
12050 wpalMutexRelease(&pWDICtx->wptMutex);
12051 /*-----------------------------------------------------------------------
12052 Get message buffer
12053 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012054 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012055 sizeof(halAddBAReq.addBAParams),
12056 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012057 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012058 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12059 {
12060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012061 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012062 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12063 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012064 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012065 }
12066
Jeff Johnsone7245742012-09-05 17:12:55 -070012067 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012068 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12069 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12070#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012071 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012072 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12073#endif
12074
Jeff Johnsone7245742012-09-05 17:12:55 -070012075 wpalMemoryCopy( pSendBuffer+usDataOffset,
12076 &halAddBAReq.addBAParams,
12077 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012078
12079 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012080 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012081
12082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012083 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012084 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012085 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12086 wdiAddBARspCb, pEventData->pUserData,
12087 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012088}/*WDI_ProcessAddBAReq*/
12089
12090
12091
12092/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012093 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012094 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012095
12096 @param pWDICtx: pointer to the WLAN DAL context
12097 pEventData: pointer to the event information structure
12098
Jeff Johnson295189b2012-06-20 16:38:30 -070012099 @see
12100 @return Result of the function call
12101*/
12102WDI_Status
12103WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012104(
Jeff Johnson295189b2012-06-20 16:38:30 -070012105 WDI_ControlBlockType* pWDICtx,
12106 WDI_EventInfoType* pEventData
12107)
12108{
12109 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12110 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012111 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012112 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012113 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012114 wpt_uint16 usDataOffset = 0;
12115 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012116 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012117 wpt_uint16 index;
12118 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012119
Jeff Johnson295189b2012-06-20 16:38:30 -070012120 tTriggerBAReqMsg halTriggerBAReq;
12121 tTriggerBaReqCandidate* halTriggerBACandidate;
12122 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12124
12125 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012126 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012127 -------------------------------------------------------------------------*/
12128 if (( NULL == pEventData ) ||
12129 ( NULL == pEventData->pEventData ) ||
12130 ( NULL == pEventData->pCBfnc ))
12131 {
12132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012133 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012134 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012135 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012136 }
12137
12138 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12139 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12140 /*-------------------------------------------------------------------------
12141 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012142 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012143 -------------------------------------------------------------------------*/
12144 wpalMutexAcquire(&pWDICtx->wptMutex);
12145
12146 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012147 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012148 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012149 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12150 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012151 &macBSSID))
12152 {
12153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012154 "This station does not exist in the WDI Station Table %d",
12155 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012156 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012157 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012158 }
12159
Jeff Johnsone7245742012-09-05 17:12:55 -070012160 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12161 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012162 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12164 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12165 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012166
12167 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012168 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012169 }
12170
12171 /*------------------------------------------------------------------------
12172 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012173 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012174 ------------------------------------------------------------------------*/
12175 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12176 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12178 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12179 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012180
Jeff Johnsone7245742012-09-05 17:12:55 -070012181 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012182 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012183 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012184 }
12185
12186
12187 wpalMutexRelease(&pWDICtx->wptMutex);
12188 /*-----------------------------------------------------------------------
12189 Get message buffer
12190 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012191 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12192 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012193 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012194 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012195 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12196 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012197 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012198 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012199 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012200 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12201 {
12202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012203 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012204 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
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
Jeff Johnsone7245742012-09-05 17:12:55 -070012209 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012210 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012211 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012212 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12213
Jeff Johnsone7245742012-09-05 17:12:55 -070012214 wpalMemoryCopy( pSendBuffer+usDataOffset,
12215 &halTriggerBAReq.triggerBAParams,
12216 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012217
Jeff Johnsone7245742012-09-05 17:12:55 -070012218 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012219 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12220 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12221 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012222
12223 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012224 index++)
12225 {
12226 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12227 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12228 halTriggerBACandidate++;
12229 wdiTriggerBACandidate++;
12230 }
12231
12232 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012233 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012234
12235 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012236 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012237 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012238 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12239 wdiTriggerBARspCb, pEventData->pUserData,
12240 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012241}/*WDI_ProcessTriggerBAReq*/
12242
12243
12244
12245/**
12246 @brief Process Update Beacon Params Request function (called when Main FSM
12247 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012248
12249 @param pWDICtx: pointer to the WLAN DAL context
12250 pEventData: pointer to the event information structure
12251
Jeff Johnson295189b2012-06-20 16:38:30 -070012252 @see
12253 @return Result of the function call
12254*/
12255WDI_Status
12256WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012257(
Jeff Johnson295189b2012-06-20 16:38:30 -070012258 WDI_ControlBlockType* pWDICtx,
12259 WDI_EventInfoType* pEventData
12260)
12261{
12262 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12263 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012264 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012265 wpt_uint16 usDataOffset = 0;
12266 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012267 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12269
12270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012271 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012272 -------------------------------------------------------------------------*/
12273 if (( NULL == pEventData ) ||
12274 ( NULL == pEventData->pEventData) ||
12275 ( NULL == pEventData->pCBfnc))
12276 {
12277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012278 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012279 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
12283 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12284 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12285 /*-----------------------------------------------------------------------
12286 Get message buffer
12287 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012288 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012289 sizeof(halUpdateBeaconParams),
12290 &pSendBuffer, &usDataOffset, &usSendSize))||
12291 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12292 {
12293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012294 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012295 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12296 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012297 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012298 }
12299
12300 /*BSS Index of the BSS*/
12301 halUpdateBeaconParams.bssIdx =
12302 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12303 /*shortPreamble mode. HAL should update all the STA rates when it
12304 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012305 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012306 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12307 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012308 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012309 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12310 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012311 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012312 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12313
12314 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012315 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012316 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012317 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012318 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012319 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012320 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012321 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012322 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012323 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012324 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012325 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012326 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12327 halUpdateBeaconParams.fRIFSMode =
12328 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012329 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012330 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12331
Jeff Johnsone7245742012-09-05 17:12:55 -070012332 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12333 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012334
12335 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012336 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012337
12338 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012339 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012340 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012341 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12342 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012343}/*WDI_ProcessUpdateBeaconParamsReq*/
12344
12345
12346
12347/**
12348 @brief Process Send Beacon template Request function (called when Main FSM
12349 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012350
12351 @param pWDICtx: pointer to the WLAN DAL context
12352 pEventData: pointer to the event information structure
12353
Jeff Johnson295189b2012-06-20 16:38:30 -070012354 @see
12355 @return Result of the function call
12356*/
12357WDI_Status
12358WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012359(
Jeff Johnson295189b2012-06-20 16:38:30 -070012360 WDI_ControlBlockType* pWDICtx,
12361 WDI_EventInfoType* pEventData
12362)
12363{
12364 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12365 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012366 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012367 wpt_uint16 usDataOffset = 0;
12368 wpt_uint16 usSendSize = 0;
12369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12370
12371 tSendBeaconReqMsg halSendBeaconReq;
12372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012373 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012374 -------------------------------------------------------------------------*/
12375 if (( NULL == pEventData ) ||
12376 ( NULL == pEventData->pEventData ) ||
12377 ( NULL == pEventData->pCBfnc ))
12378 {
12379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012380 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012381 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012382 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012383 }
12384
12385 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12386 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12387 /*-----------------------------------------------------------------------
12388 Get message buffer
12389 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012390 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012391 sizeof(halSendBeaconReq.sendBeaconParam),
12392 &pSendBuffer, &usDataOffset, &usSendSize))||
12393 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12394 {
12395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012396 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012397 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12398 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012399 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012400 }
12401
12402 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12403 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12404 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012405 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012406 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12407 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12408 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12409 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012410 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012411 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053012412 /* usP2PIeOffset should be atleast greater than timIeOffset */
12413 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12414 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12415 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12416 {
12417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12418 "Invalid usP2PIeOffset %hu",
12419 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12420 WDI_ASSERT(0);
12421 return WDI_STATUS_E_FAILURE;
12422 }
12423
Jeff Johnsone7245742012-09-05 17:12:55 -070012424 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012425 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012426
Jeff Johnsone7245742012-09-05 17:12:55 -070012427 wpalMemoryCopy( pSendBuffer+usDataOffset,
12428 &halSendBeaconReq.sendBeaconParam,
12429 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012430
12431 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012432 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012433
12434 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012435 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012436 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012437 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12438 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012439}/*WDI_ProcessSendBeaconParamsReq*/
12440
12441/**
12442 @brief Process Update Beacon Params Request function (called when Main FSM
12443 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012444
12445 @param pWDICtx: pointer to the WLAN DAL context
12446 pEventData: pointer to the event information structure
12447
Jeff Johnson295189b2012-06-20 16:38:30 -070012448 @see
12449 @return Result of the function call
12450*/
12451WDI_Status
12452WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012453(
Jeff Johnson295189b2012-06-20 16:38:30 -070012454 WDI_ControlBlockType* pWDICtx,
12455 WDI_EventInfoType* pEventData
12456)
12457{
12458 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12459 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012460 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012461 wpt_uint16 usDataOffset = 0;
12462 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012463 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012464 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12465
12466 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012467 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012468 -------------------------------------------------------------------------*/
12469 if (( NULL == pEventData ) ||
12470 ( NULL == pEventData->pEventData) ||
12471 ( NULL == pEventData->pCBfnc))
12472 {
12473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012474 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012475 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012476 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012477 }
12478
Jeff Johnsone7245742012-09-05 17:12:55 -070012479 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012480 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012481 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012482 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12483 /*-----------------------------------------------------------------------
12484 Get message buffer
12485 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012486 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012487 sizeof(halUpdateProbeRspTmplParams),
12488 &pSendBuffer, &usDataOffset, &usSendSize))||
12489 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12490 {
12491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012492 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012493 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012496 }
12497
12498 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012499 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012500 WDI_MAC_ADDR_LEN);
12501
Jeff Johnsone7245742012-09-05 17:12:55 -070012502 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012503 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12504
12505 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12506 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012507 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012508
12509
12510 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12511 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12512 WDI_PROBE_REQ_BITMAP_IE_LEN);
12513
Jeff Johnsone7245742012-09-05 17:12:55 -070012514 wpalMemoryCopy( pSendBuffer+usDataOffset,
12515 &halUpdateProbeRspTmplParams,
12516 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012517
12518 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012519 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012520
12521 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012522 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012523 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012524 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12525 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12526 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012527}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12528
12529/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012530 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012531 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012532
12533 @param pWDICtx: pointer to the WLAN DAL context
12534 pEventData: pointer to the event information structure
12535
Jeff Johnson295189b2012-06-20 16:38:30 -070012536 @see
12537 @return Result of the function call
12538*/
12539WDI_Status
12540WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012541(
Jeff Johnson295189b2012-06-20 16:38:30 -070012542 WDI_ControlBlockType* pWDICtx,
12543 WDI_EventInfoType* pEventData
12544)
12545{
12546
12547 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12548 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12549
12550 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012551 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012552 -------------------------------------------------------------------------*/
12553 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012554 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012555 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012556 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012557 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12558 {
12559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012560 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012561 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012562 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012563 }
12564
12565 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012566 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012567 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12568
12569 /*cache the wdi nv request message here if the the first fragment
12570 * To issue the request to HAL for the next fragment */
12571 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12572 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012573 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12574 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012575 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12576
12577 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12578 pWDICtx->pRspCBUserData = pEventData->pUserData;
12579 }
12580
12581 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12582}
12583
12584/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012585 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012586 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012587
12588 @param pWDICtx: pointer to the WLAN DAL context
12589 pEventData: pointer to the event information structure
12590
Jeff Johnson295189b2012-06-20 16:38:30 -070012591 @see
12592 @return Result of the function call
12593*/
12594WDI_Status WDI_ProcessSetMaxTxPowerReq
12595(
12596 WDI_ControlBlockType* pWDICtx,
12597 WDI_EventInfoType* pEventData
12598)
12599{
12600 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12601 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012602 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012603 wpt_uint16 usDataOffset = 0;
12604 wpt_uint16 usSendSize = 0;
12605 tSetMaxTxPwrReq halSetMaxTxPower;
12606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12607
12608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012609 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012610 -------------------------------------------------------------------------*/
12611 if (( NULL == pEventData ) ||
12612 ( NULL == pEventData->pEventData ) ||
12613 ( NULL == pEventData->pCBfnc ))
12614 {
12615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012616 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012617 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012619 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012620 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012621 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012622 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012623 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12624
12625 /*-----------------------------------------------------------------------
12626 Get message buffer
12627 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012628if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012629 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12630 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012631 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012632)))
12633 {
12634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012635 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012636 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12637 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012638 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012639 }
12640
12641 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12642 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12643 WDI_MAC_ADDR_LEN);
12644
12645 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12646 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12647 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012648 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012649 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012650
12651 wpalMemoryCopy( pSendBuffer+usDataOffset,
12652 &halSetMaxTxPower.setMaxTxPwrParams,
12653 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012654
12655 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012656 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012657
12658 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012659 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012660 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012661 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12662 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12663 WDI_SET_MAX_TX_POWER_RESP);
12664
Jeff Johnson295189b2012-06-20 16:38:30 -070012665}
12666
Arif Hussaina5ebce02013-08-09 15:09:58 -070012667/*
12668 @brief Process Set Max Tx Power Per Band Request function (called when Main
12669 FSM allows it)
12670
12671 @param pWDICtx: pointer to the WLAN DAL context
12672 pEventData: pointer to the event information structure
12673
12674 @see
12675 @return Result of the function call
12676*/
12677WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
12678(
12679 WDI_ControlBlockType* pWDICtx,
12680 WDI_EventInfoType* pEventData
12681)
12682{
12683 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
12684 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
12685 wpt_uint8* pSendBuffer = NULL;
12686 wpt_uint16 usDataOffset = 0;
12687 wpt_uint16 usSendSize = 0;
12688 tpSetMaxTxPwrPerBandReq phalSetMxTxPwrPerBand = NULL;
12689 WDI_Status rValue = WDI_STATUS_SUCCESS;
12690 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12691
12692 /*-------------------------------------------------------------------------
12693 Sanity check
12694 -------------------------------------------------------------------------*/
12695 if (( NULL == pEventData ) ||
12696 ( NULL == pEventData->pEventData ) ||
12697 ( NULL == pEventData->pCBfnc ))
12698 {
12699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12700 "%s: Invalid parameters", __func__);
12701 WDI_ASSERT(0);
12702 return WDI_STATUS_E_FAILURE;
12703 }
12704 pwdiSetMaxTxPowerPerBandParams = \
12705 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
12706
12707 wdiSetMaxTxPowerPerBandRspCb = \
12708 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
12709
12710 /*-----------------------------------------------------------------------
12711 Get message buffer
12712 -----------------------------------------------------------------------*/
12713
12714 rValue = WDI_GetMessageBuffer(pWDICtx,
12715 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
12716 sizeof(tSetMaxTxPwrPerBandParams),
12717 &pSendBuffer, &usDataOffset, &usSendSize);
12718
12719 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
12720 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
12721 {
12722 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12723 "Unable to get Set Max Tx Power Per Band req %p %p %p",
12724 pEventData, pwdiSetMaxTxPowerPerBandParams,
12725 wdiSetMaxTxPowerPerBandRspCb);
12726 WDI_ASSERT(0);
12727 return WDI_STATUS_E_FAILURE;
12728 }
12729
12730
12731 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandReq)(pSendBuffer + usDataOffset);
12732 phalSetMxTxPwrPerBand->setMaxTxPwrPerBandParams.bandInfo = \
12733 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
12734
12735 phalSetMxTxPwrPerBand->setMaxTxPwrPerBandParams.power = \
12736 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
12737
12738 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
12739 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
12740
12741 /*-------------------------------------------------------------------------
12742 Send Set Max Tx Power Per Band Request to HAL
12743 -------------------------------------------------------------------------*/
12744 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
12745 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
12746 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
12747}
12748
schang86c22c42013-03-13 18:41:24 -070012749/**
12750 @brief Process Set Tx Power Request function (called when Main
12751 FSM allows it)
12752
12753 @param pWDICtx: pointer to the WLAN DAL context
12754 pEventData: pointer to the event information structure
12755
12756 @see
12757 @return Result of the function call
12758*/
12759WDI_Status WDI_ProcessSetTxPowerReq
12760(
12761 WDI_ControlBlockType* pWDICtx,
12762 WDI_EventInfoType* pEventData
12763)
12764{
12765 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12766 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12767 wpt_uint8* pSendBuffer = NULL;
12768 wpt_uint16 usDataOffset = 0;
12769 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070012770 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070012771 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12772
12773 /*-------------------------------------------------------------------------
12774 Sanity check
12775 -------------------------------------------------------------------------*/
12776 if (( NULL == pEventData ) ||
12777 ( NULL == pEventData->pEventData ) ||
12778 ( NULL == pEventData->pCBfnc ))
12779 {
12780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12781 "%s: Invalid parameters", __func__);
12782 WDI_ASSERT(0);
12783 return WDI_STATUS_E_FAILURE;
12784 }
12785
12786 pwdiSetTxPowerParams =
12787 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12788 wdiSetTxPowerRspCb =
12789 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12790
12791 /*-----------------------------------------------------------------------
12792 Get message buffer
12793 -----------------------------------------------------------------------*/
12794 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12795 sizeof(tSetTxPwrReqParams),
12796 &pSendBuffer, &usDataOffset, &usSendSize))||
12797 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12798 )))
12799 {
12800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012801 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070012802 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12803 WDI_ASSERT(0);
12804 return WDI_STATUS_E_FAILURE;
12805 }
12806
Leo Chang9a43db92013-03-25 17:39:58 -070012807 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12808 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12809 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070012810
12811 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12812 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12813
12814 /*-------------------------------------------------------------------------
12815 Send Set Tx Power Request to HAL
12816 -------------------------------------------------------------------------*/
12817 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12818 wdiSetTxPowerRspCb, pEventData->pUserData,
12819 WDI_SET_TX_POWER_RESP);
12820}
Jeff Johnson295189b2012-06-20 16:38:30 -070012821
12822/**
12823 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12824 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012825
12826 @param pWDICtx: pointer to the WLAN DAL context
12827 pEventData: pointer to the event information structure
12828
Jeff Johnson295189b2012-06-20 16:38:30 -070012829 @see
12830 @return Result of the function call
12831*/
12832WDI_Status
12833WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012834(
Jeff Johnson295189b2012-06-20 16:38:30 -070012835 WDI_ControlBlockType* pWDICtx,
12836 WDI_EventInfoType* pEventData
12837)
12838{
12839 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12840 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012841 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012842 wpt_uint16 usDataOffset = 0;
12843 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012844 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12846
12847 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012848 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012849 -------------------------------------------------------------------------*/
12850 if (( NULL == pEventData ) ||
12851 ( NULL == pEventData->pEventData) ||
12852 ( NULL == pEventData->pCBfnc))
12853 {
12854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012855 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012856 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012857 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012858 }
12859
Jeff Johnsone7245742012-09-05 17:12:55 -070012860 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012861 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012862 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012863 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12864 /*-----------------------------------------------------------------------
12865 Get message buffer
12866 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012867 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12868 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012869 sizeof(halSetP2PGONOAParams),
12870 &pSendBuffer, &usDataOffset, &usSendSize))||
12871 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12872 {
12873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012874 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012875 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12876 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012877 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012878 }
12879
Jeff Johnsone7245742012-09-05 17:12:55 -070012880 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012881 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012882 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012883 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12884 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012885 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012886 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012887 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012888 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012889 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012890 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012891 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012892 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12893
Jeff Johnsone7245742012-09-05 17:12:55 -070012894 wpalMemoryCopy( pSendBuffer+usDataOffset,
12895 &halSetP2PGONOAParams,
12896 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012897
12898 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012899 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012900
12901 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012902 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012903 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012904 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12905 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12906 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012907}/*WDI_ProcessP2PGONOAReq*/
12908
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053012909#ifdef FEATURE_WLAN_TDLS
12910
12911/**
12912 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12913 allows it)
12914
12915 @param pWDICtx: pointer to the WLAN DAL context
12916 pEventData: pointer to the event information structure
12917
12918 @see
12919 @return Result of the function call
12920*/
12921WDI_Status
12922WDI_ProcessTdlsLinkEstablishReq
12923(
12924 WDI_ControlBlockType* pWDICtx,
12925 WDI_EventInfoType* pEventData
12926)
12927{
12928 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12929 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12930 wpt_uint8* pSendBuffer = NULL;
12931 wpt_uint16 usDataOffset = 0;
12932 wpt_uint16 usSendSize = 0;
12933
12934 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12936
12937 /*-------------------------------------------------------------------------
12938 Sanity check
12939 -------------------------------------------------------------------------*/
12940 if (( NULL == pEventData ) ||
12941 ( NULL == pEventData->pEventData) ||
12942 ( NULL == pEventData->pCBfnc))
12943 {
12944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12945 "%s: Invalid parameters", __func__);
12946 WDI_ASSERT(0);
12947 return WDI_STATUS_E_FAILURE;
12948 }
12949 pwdiTDLSLinkEstablishReqParams =
12950 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12951 wdiTDLSLinkEstablishReqRspCb =
12952 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12953
12954
12955 /*-----------------------------------------------------------------------
12956 Get message buffer
12957 -----------------------------------------------------------------------*/
12958 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12959 WDI_TDLS_LINK_ESTABLISH_REQ,
12960 sizeof(halSetTDLSLinkEstablishParams),
12961 &pSendBuffer, &usDataOffset, &usSendSize))||
12962 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12963 {
12964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012965 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053012966 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12967 WDI_ASSERT(0);
12968 return WDI_STATUS_E_FAILURE;
12969 }
12970
12971 halSetTDLSLinkEstablishParams.staIdx =
12972 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12973 halSetTDLSLinkEstablishParams.bIsResponder =
12974 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12975 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12976 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
12977 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
12978 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
12979 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
12980 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
12981 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
12982 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
12983 halSetTDLSLinkEstablishParams.aAck = 0;
12984 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
12985 halSetTDLSLinkEstablishParams.moreDataAck = 0;
12986 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053012987 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
12988 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
12989
12990 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
12991 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
12992 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
12993 halSetTDLSLinkEstablishParams.validChannelsLen =
12994 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
12995
12996 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
12997 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
12998 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
12999 halSetTDLSLinkEstablishParams.validOperClassesLen =
13000 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013001
13002 wpalMemoryCopy( pSendBuffer+usDataOffset,
13003 &halSetTDLSLinkEstablishParams,
13004 sizeof(halSetTDLSLinkEstablishParams));
13005
13006 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13007 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13008
13009 /*-------------------------------------------------------------------------
13010 Send Update Probe Resp Template Request to HAL
13011 -------------------------------------------------------------------------*/
13012 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13013 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13014 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13015 return 0;
13016}/*WDI_ProcessTdlsLinkEstablishReq*/
13017
13018
13019#endif
13020
Jeff Johnson295189b2012-06-20 16:38:30 -070013021
13022
13023/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013024 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013025 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013026 @param None
13027
13028 @see
13029 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013030*/
13031void
13032WDI_SetPowerStateCb
13033(
13034 wpt_status status,
13035 unsigned int dxePhyAddr,
13036 void *pContext
13037)
13038{
13039 wpt_status wptStatus;
13040 WDI_ControlBlockType *pCB = NULL;
13041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
13042 if(eWLAN_PAL_STATUS_E_FAILURE == status )
13043 {
13044 //it shouldn't happen, put an error msg
13045 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013046 /*
13047 * Trigger the event to bring the Enter BMPS req function to come
13048 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013049*/
13050 if( NULL != pContext )
13051 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013052 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013053 }
13054 else
13055 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013056 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013057 pCB = &gWDICb;
13058 }
13059 pCB->dxePhyAddr = dxePhyAddr;
13060 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13061 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13062 {
13063 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13064 "Failed to set an event");
13065
Jeff Johnsone7245742012-09-05 17:12:55 -070013066 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013067 }
13068 return;
13069}
13070
13071
13072/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013073 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013074 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013075
13076 @param pWDICtx: pointer to the WLAN DAL context
13077 pEventData: pointer to the event information structure
13078
Jeff Johnson295189b2012-06-20 16:38:30 -070013079 @see
13080 @return Result of the function call
13081*/
13082WDI_Status
13083WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013084(
Jeff Johnson295189b2012-06-20 16:38:30 -070013085 WDI_ControlBlockType* pWDICtx,
13086 WDI_EventInfoType* pEventData
13087)
13088{
Jeff Johnson43971f52012-07-17 12:26:56 -070013089 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013090 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013091 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013092 wpt_uint16 usDataOffset = 0;
13093 wpt_uint16 usSendSize = 0;
13094 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13095
13096 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013097 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013098 -------------------------------------------------------------------------*/
13099 if (( NULL == pEventData ) ||
13100 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
13101 {
13102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013103 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013104 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013105 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013106 }
13107
13108 /*-----------------------------------------------------------------------
13109 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013110 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013111 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013112 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013113 0,
13114 &pSendBuffer, &usDataOffset, &usSendSize))||
13115 ( usSendSize < (usDataOffset )))
13116 {
13117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013118 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013119 pEventData, wdiEnterImpsRspCb);
13120 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013121 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013122 }
13123
13124 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013125 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13126 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013127 {
13128 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13129 "WDI Init failed to reset an event");
13130
Jeff Johnsone7245742012-09-05 17:12:55 -070013131 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013132 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013133 }
13134
13135 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080013136 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13137 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13138 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013139 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013140 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013141 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013142 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013143
13144 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013145 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013146 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013147 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13148 WDI_SET_POWER_STATE_TIMEOUT);
13149 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013150 {
13151 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13152 "WDI Init failed to wait on an event");
13153
Jeff Johnsone7245742012-09-05 17:12:55 -070013154 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013155 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013156 }
13157
13158 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013159 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013160 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013161 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13162 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013163
13164fail:
13165 // Release the message buffer so we don't leak
13166 wpalMemoryFree(pSendBuffer);
13167
13168failRequest:
13169 //WDA should have failure check to avoid the memory leak
13170 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013171}/*WDI_ProcessEnterImpsReq*/
13172
13173/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013174 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013175 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013176
13177 @param pWDICtx: pointer to the WLAN DAL context
13178 pEventData: pointer to the event information structure
13179
Jeff Johnson295189b2012-06-20 16:38:30 -070013180 @see
13181 @return Result of the function call
13182*/
13183WDI_Status
13184WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013185(
Jeff Johnson295189b2012-06-20 16:38:30 -070013186 WDI_ControlBlockType* pWDICtx,
13187 WDI_EventInfoType* pEventData
13188)
13189{
13190 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013191 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013192 wpt_uint16 usDataOffset = 0;
13193 wpt_uint16 usSendSize = 0;
13194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13195
13196 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013197 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013198 -------------------------------------------------------------------------*/
13199 if (( NULL == pEventData ) ||
13200 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13201 {
13202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013203 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013204 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013205 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013206 }
13207
13208 /*-----------------------------------------------------------------------
13209 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013210 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013211 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013212 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013213 0,
13214 &pSendBuffer, &usDataOffset, &usSendSize))||
13215 ( usSendSize < (usDataOffset )))
13216 {
13217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013218 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013219 pEventData, wdiExitImpsRspCb);
13220 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013221 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013222 }
13223
13224 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013225 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013226 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013227 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13228 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013229}/*WDI_ProcessExitImpsReq*/
13230
13231/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013232 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013233 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013234
13235 @param pWDICtx: pointer to the WLAN DAL context
13236 pEventData: pointer to the event information structure
13237
Jeff Johnson295189b2012-06-20 16:38:30 -070013238 @see
13239 @return Result of the function call
13240*/
13241WDI_Status
13242WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013243(
Jeff Johnson295189b2012-06-20 16:38:30 -070013244 WDI_ControlBlockType* pWDICtx,
13245 WDI_EventInfoType* pEventData
13246)
13247{
13248 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13249 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013250 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013251 wpt_uint16 usDataOffset = 0;
13252 wpt_uint16 usSendSize = 0;
13253 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013254 wpt_status wptStatus;
13255
Jeff Johnson295189b2012-06-20 16:38:30 -070013256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13257
13258 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013259 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013260 -------------------------------------------------------------------------*/
13261 if (( NULL == pEventData ) ||
13262 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13263 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13264 {
13265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013266 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013267 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013268 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013269 }
13270
13271 /*-----------------------------------------------------------------------
13272 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013273 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013274 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013275 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013276 sizeof(enterBmpsReq),
13277 &pSendBuffer, &usDataOffset, &usSendSize))||
13278 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13279 {
13280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013281 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013282 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13283 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013284 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013285 }
13286
13287 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013288 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13289 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013290 {
13291 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13292 "WDI Init failed to reset an event");
13293
Jeff Johnsone7245742012-09-05 17:12:55 -070013294 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013295 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013296 }
13297
13298 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080013299 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13300 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13301 {
13302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013303 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013304 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013305 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013306 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013307
13308/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013309 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013310 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013311 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13312 WDI_SET_POWER_STATE_TIMEOUT);
13313 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013314 {
13315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13316 "WDI Init failed to wait on an event");
13317
Jeff Johnsone7245742012-09-05 17:12:55 -070013318 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013319 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013320 }
13321
13322 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13323
13324 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13325 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13326 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13327 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13328
13329 // For CCX and 11R Roaming
13330 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13331 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13332 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13333
13334 wpalMemoryCopy( pSendBuffer+usDataOffset,
13335 &enterBmpsReq,
13336 sizeof(enterBmpsReq));
13337
13338 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013339 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013340
13341 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013342 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013343 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013344 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13345 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013346
13347fail:
13348 // Release the message buffer so we don't leak
13349 wpalMemoryFree(pSendBuffer);
13350
13351failRequest:
13352 //WDA should have failure check to avoid the memory leak
13353 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013354}/*WDI_ProcessEnterBmpsReq*/
13355
13356/**
13357 @brief Process Exit BMPS Request function (called when Main FSM
13358 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013359
13360 @param pWDICtx: pointer to the WLAN DAL context
13361 pEventData: pointer to the event information structure
13362
Jeff Johnson295189b2012-06-20 16:38:30 -070013363 @see
13364 @return Result of the function call
13365*/
13366WDI_Status
13367WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013368(
Jeff Johnson295189b2012-06-20 16:38:30 -070013369 WDI_ControlBlockType* pWDICtx,
13370 WDI_EventInfoType* pEventData
13371)
13372{
13373 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13374 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013375 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013376 wpt_uint16 usDataOffset = 0;
13377 wpt_uint16 usSendSize = 0;
13378 tHalExitBmpsReqParams exitBmpsReq;
13379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13380
13381 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013382 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013383 -------------------------------------------------------------------------*/
13384 if (( NULL == pEventData ) ||
13385 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13386 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13387 {
13388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013389 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013390 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013391 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013392 }
13393
13394 /*-----------------------------------------------------------------------
13395 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013396 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013397 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013398 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013399 sizeof(exitBmpsReq),
13400 &pSendBuffer, &usDataOffset, &usSendSize))||
13401 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13402 {
13403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013404 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013405 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13406 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013408 }
13409 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13410
Jeff Johnsone7245742012-09-05 17:12:55 -070013411 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13412
Jeff Johnson295189b2012-06-20 16:38:30 -070013413 wpalMemoryCopy( pSendBuffer+usDataOffset,
13414 &exitBmpsReq,
13415 sizeof(exitBmpsReq));
13416
13417 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013418 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013419
13420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013421 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013422 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013423 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13424 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013425}/*WDI_ProcessExitBmpsReq*/
13426
13427/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013428 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013429 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013430
13431 @param pWDICtx: pointer to the WLAN DAL context
13432 pEventData: pointer to the event information structure
13433
Jeff Johnson295189b2012-06-20 16:38:30 -070013434 @see
13435 @return Result of the function call
13436*/
13437WDI_Status
13438WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013439(
Jeff Johnson295189b2012-06-20 16:38:30 -070013440 WDI_ControlBlockType* pWDICtx,
13441 WDI_EventInfoType* pEventData
13442)
13443{
13444 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13445 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013446 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013447 wpt_uint16 usDataOffset = 0;
13448 wpt_uint16 usSendSize = 0;
13449 tUapsdReqParams enterUapsdReq;
13450 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13451
13452 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013453 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013454 -------------------------------------------------------------------------*/
13455 if (( NULL == pEventData ) ||
13456 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13457 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13458 {
13459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013460 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013461 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013462 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013463 }
13464
13465 /*-----------------------------------------------------------------------
13466 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013467 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013468 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013469 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013470 sizeof(enterUapsdReq),
13471 &pSendBuffer, &usDataOffset, &usSendSize))||
13472 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13473 {
13474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013475 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013476 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13477 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013478 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013479 }
13480
13481 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13482 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13483 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13484 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13485 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13486 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13487 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13488 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013489 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013490
Jeff Johnsone7245742012-09-05 17:12:55 -070013491 wpalMemoryCopy( pSendBuffer+usDataOffset,
13492 &enterUapsdReq,
13493 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013494
13495 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013496 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013497
13498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013499 Send Get STA 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,
13502 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013503}/*WDI_ProcessEnterUapsdReq*/
13504
13505/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013506 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013507 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013508
13509 @param pWDICtx: pointer to the WLAN DAL context
13510 pEventData: pointer to the event information structure
13511
Jeff Johnson295189b2012-06-20 16:38:30 -070013512 @see
13513 @return Result of the function call
13514*/
13515WDI_Status
13516WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013517(
Jeff Johnson295189b2012-06-20 16:38:30 -070013518 WDI_ControlBlockType* pWDICtx,
13519 WDI_EventInfoType* pEventData
13520)
13521{
13522 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013523 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013524 wpt_uint16 usDataOffset = 0;
13525 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013526 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13527 wpt_uint8 bssIdx = 0;
13528
Jeff Johnson295189b2012-06-20 16:38:30 -070013529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13530
13531 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013532 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013533 -------------------------------------------------------------------------*/
13534 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013535 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013536 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13537 {
13538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013539 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013542 }
13543
13544 /*-----------------------------------------------------------------------
13545 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013546 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013547 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013548 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013549 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013550 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013551 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013552 {
13553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013554 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013555 pEventData, wdiExitUapsdRspCb);
13556 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013557 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013558 }
13559
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013560 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13561
13562 wpalMemoryCopy( pSendBuffer+usDataOffset,
13563 &bssIdx,
13564 sizeof(wpt_uint8));
13565
13566 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13567 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13568
Jeff Johnson295189b2012-06-20 16:38:30 -070013569 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013570 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013571 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013572 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13573 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013574}/*WDI_ProcessExitUapsdReq*/
13575
13576/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013577 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013578 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013579
13580 @param pWDICtx: pointer to the WLAN DAL context
13581 pEventData: pointer to the event information structure
13582
Jeff Johnson295189b2012-06-20 16:38:30 -070013583 @see
13584 @return Result of the function call
13585*/
13586WDI_Status
13587WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013588(
Jeff Johnson295189b2012-06-20 16:38:30 -070013589 WDI_ControlBlockType* pWDICtx,
13590 WDI_EventInfoType* pEventData
13591)
13592{
13593 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13594 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013595 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013596 wpt_uint16 usDataOffset = 0;
13597 wpt_uint16 usSendSize = 0;
13598 tUapsdInfo uapsdAcParamsReq;
13599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13600
13601 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013602 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013603 -------------------------------------------------------------------------*/
13604 if (( NULL == pEventData ) ||
13605 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13606 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13607 {
13608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013609 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013612 }
13613
13614 /*-----------------------------------------------------------------------
13615 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013616 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013617 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013618 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013619 sizeof(uapsdAcParamsReq),
13620 &pSendBuffer, &usDataOffset, &usSendSize))||
13621 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13622 {
13623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013624 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013625 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13626 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013627 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013628 }
13629
13630 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13631 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13632 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13633 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13634 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13635 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13636
Jeff Johnsone7245742012-09-05 17:12:55 -070013637 wpalMemoryCopy( pSendBuffer+usDataOffset,
13638 &uapsdAcParamsReq,
13639 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013640
13641 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013642 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013643
13644 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013645 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013646 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013647 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13648 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013649}/*WDI_ProcessSetUapsdAcParamsReq*/
13650
13651/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013652 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013653 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013654
13655 @param pWDICtx: pointer to the WLAN DAL context
13656 pEventData: pointer to the event information structure
13657
Jeff Johnson295189b2012-06-20 16:38:30 -070013658 @see
13659 @return Result of the function call
13660*/
13661WDI_Status
13662WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013663(
Jeff Johnson295189b2012-06-20 16:38:30 -070013664 WDI_ControlBlockType* pWDICtx,
13665 WDI_EventInfoType* pEventData
13666)
13667{
13668 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13669 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013670 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013671 wpt_uint16 usDataOffset = 0;
13672 wpt_uint16 usSendSize = 0;
13673 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13674
13675 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013676 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013677 -------------------------------------------------------------------------*/
13678 if (( NULL == pEventData ) ||
13679 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13680 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13681 {
13682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013683 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013684 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013685 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013686 }
13687
13688 /*-----------------------------------------------------------------------
13689 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013690 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013691 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013692 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013693 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13694 &pSendBuffer, &usDataOffset, &usSendSize))||
13695 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13696 {
13697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013698 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013699 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13700 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013701 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013702 }
13703
Jeff Johnsone7245742012-09-05 17:12:55 -070013704 wpalMemoryCopy( pSendBuffer+usDataOffset,
13705 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13706 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013707
13708 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013709 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013710
13711 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013712 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013713 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013714 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13715 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013716}/*WDI_ProcessUpdateUapsdParamsReq*/
13717
13718/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013719 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013720 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013721
13722 @param pWDICtx: pointer to the WLAN DAL context
13723 pEventData: pointer to the event information structure
13724
Jeff Johnson295189b2012-06-20 16:38:30 -070013725 @see
13726 @return Result of the function call
13727*/
13728WDI_Status
13729WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013730(
Jeff Johnson295189b2012-06-20 16:38:30 -070013731 WDI_ControlBlockType* pWDICtx,
13732 WDI_EventInfoType* pEventData
13733)
13734{
13735 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13736 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013737 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013738 wpt_uint16 usDataOffset = 0;
13739 wpt_uint16 usSendSize = 0;
13740 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13741
13742 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13743
13744 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013745 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013746 -------------------------------------------------------------------------*/
13747 if (( NULL == pEventData ) ||
13748 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13749 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13750 {
13751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013752 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013753 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013754 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013755 }
13756
13757 /*-----------------------------------------------------------------------
13758 Get message buffer
13759 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013760 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013761 sizeof(halRxpFilterParams),
13762 &pSendBuffer, &usDataOffset, &usSendSize))||
13763 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13764 {
13765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013766 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013767 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13768 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013769 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013770 }
13771
Jeff Johnsone7245742012-09-05 17:12:55 -070013772 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013773 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013774 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013775 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13776
Jeff Johnsone7245742012-09-05 17:12:55 -070013777 wpalMemoryCopy( pSendBuffer+usDataOffset,
13778 &halRxpFilterParams,
13779 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013780
13781 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013782 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013783
13784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013785 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013786 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013787 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13788 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013789}/*WDI_ProcessConfigureRxpFilterReq*/
13790
13791/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013792 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013793 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013794
13795 @param pWDICtx: pointer to the WLAN DAL context
13796 pEventData: pointer to the event information structure
13797
Jeff Johnson295189b2012-06-20 16:38:30 -070013798 @see
13799 @return Result of the function call
13800*/
13801WDI_Status
13802WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013803(
Jeff Johnson295189b2012-06-20 16:38:30 -070013804 WDI_ControlBlockType* pWDICtx,
13805 WDI_EventInfoType* pEventData
13806)
13807{
13808 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13809 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013810 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013811 wpt_uint16 usDataOffset = 0;
13812 wpt_uint16 usSendSize = 0;
13813 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13814
13815 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013816 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013817 -------------------------------------------------------------------------*/
13818 if (( NULL == pEventData ) ||
13819 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13820 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13821 {
13822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013823 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013824 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013825 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013826 }
13827
13828 /*-----------------------------------------------------------------------
13829 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013830 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013831 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013832 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013833 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13834 &pSendBuffer, &usDataOffset, &usSendSize))||
13835 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13836 {
13837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013838 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013839 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13840 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013841 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013842 }
13843
Jeff Johnsone7245742012-09-05 17:12:55 -070013844 wpalMemoryCopy( pSendBuffer+usDataOffset,
13845 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13846 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13847 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13848 &pwdiBeaconFilterParams->aFilters[0],
13849 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013850
13851 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013852 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013853
13854 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013855 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013856 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013857 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13858 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013859}/*WDI_ProcessSetBeaconFilterReq*/
13860
13861/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013862 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013863 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013864
13865 @param pWDICtx: pointer to the WLAN DAL context
13866 pEventData: pointer to the event information structure
13867
Jeff Johnson295189b2012-06-20 16:38:30 -070013868 @see
13869 @return Result of the function call
13870*/
13871WDI_Status
13872WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013873(
Jeff Johnson295189b2012-06-20 16:38:30 -070013874 WDI_ControlBlockType* pWDICtx,
13875 WDI_EventInfoType* pEventData
13876)
13877{
13878 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13879 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013880 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013881 wpt_uint16 usDataOffset = 0;
13882 wpt_uint16 usSendSize = 0;
13883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13884
13885 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013886 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013887 -------------------------------------------------------------------------*/
13888 if (( NULL == pEventData ) ||
13889 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13890 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13891 {
13892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013893 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013896 }
13897
13898 /*-----------------------------------------------------------------------
13899 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013900 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013901 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013902 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013903 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13904 &pSendBuffer, &usDataOffset, &usSendSize))||
13905 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13906 {
13907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013908 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013909 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13910 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013911 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013912 }
13913
Jeff Johnsone7245742012-09-05 17:12:55 -070013914 wpalMemoryCopy( pSendBuffer+usDataOffset,
13915 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13916 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013917
13918 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013919 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013920
13921 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013922 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013923 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013924 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13925 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013926}
13927
13928/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013929 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013930 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013931
13932 @param pWDICtx: pointer to the WLAN DAL context
13933 pEventData: pointer to the event information structure
13934
Jeff Johnson295189b2012-06-20 16:38:30 -070013935 @see
13936 @return Result of the function call
13937*/
13938WDI_Status
13939WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013940(
Jeff Johnson295189b2012-06-20 16:38:30 -070013941 WDI_ControlBlockType* pWDICtx,
13942 WDI_EventInfoType* pEventData
13943)
13944{
13945 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13946 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013947 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013948 wpt_uint16 usDataOffset = 0;
13949 wpt_uint16 usSendSize = 0;
13950 tHalRSSIThresholds rssiThresholdsReq;
13951 WDI_Status ret_status = 0;
13952 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13953
13954 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013955 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013956 -------------------------------------------------------------------------*/
13957 if (( NULL == pEventData ) ||
13958 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13959 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13960 {
13961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013962 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013963 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013964 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013965 }
13966
13967 /*-----------------------------------------------------------------------
13968 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013969 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013970 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013971 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013972 sizeof(rssiThresholdsReq),
13973 &pSendBuffer, &usDataOffset, &usSendSize))||
13974 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13975 {
13976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013977 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013978 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13979 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013980 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013981 }
13982
Jeff Johnsone7245742012-09-05 17:12:55 -070013983 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013984 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013985 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013986 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013987 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013988 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013989 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013990 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013991 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013992 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013993 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013994 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013995 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013996 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013997 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013998 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013999 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014000 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014001 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014002 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14003
Jeff Johnsone7245742012-09-05 17:12:55 -070014004 wpalMemoryCopy( pSendBuffer+usDataOffset,
14005 &rssiThresholdsReq,
14006 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014007
14008 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014009 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014010
14011 /*-------------------------------------------------------------------------
14012 Send Set threshold req to HAL
14013 -------------------------------------------------------------------------*/
14014 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14015 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14016 {
14017 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14018 // req. Then as a result of processing the threshold cross ind, we trigger
14019 // a Set threshold req, then we need to indicate to WDI that it needs to
14020 // go to busy state as a result of the indication as we sent a req in the
14021 // same WDI context.
14022 // Hence expected state transition is to busy.
14023 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14024 }
14025
14026 return ret_status;
14027}
14028
14029/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014030 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014031 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014032
14033 @param pWDICtx: pointer to the WLAN DAL context
14034 pEventData: pointer to the event information structure
14035
Jeff Johnson295189b2012-06-20 16:38:30 -070014036 @see
14037 @return Result of the function call
14038*/
14039WDI_Status
14040WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014041(
Jeff Johnson295189b2012-06-20 16:38:30 -070014042 WDI_ControlBlockType* pWDICtx,
14043 WDI_EventInfoType* pEventData
14044)
14045{
14046 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14047 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014048 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014049 wpt_uint16 usDataOffset = 0;
14050 wpt_uint16 usSendSize = 0;
14051 tHalHostOffloadReq hostOffloadParams;
14052 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014053 wpt_uint8 ucCurrentBSSSesIdx = 0;
14054 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014055
14056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14057
14058 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014059 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014060 -------------------------------------------------------------------------*/
14061 if (( NULL == pEventData ) ||
14062 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14063 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14064 {
14065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014066 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014067 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014068 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014069 }
14070
14071 /*-----------------------------------------------------------------------
14072 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014073 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014074 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014075 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014076 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14077 &pSendBuffer, &usDataOffset, &usSendSize))||
14078 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14079 {
14080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014081 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014082 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14083 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014084 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014085 }
14086
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014087 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14088 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14089 &pBSSSes);
14090 if ( NULL == pBSSSes )
14091 {
14092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053014093 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14094 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014095 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014096 }
14097
Jeff Johnson295189b2012-06-20 16:38:30 -070014098 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14099 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014100
Jeff Johnson295189b2012-06-20 16:38:30 -070014101 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14102 {
14103 // ARP Offload
14104 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14105 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14106 4);
14107 }
14108 else
14109 {
14110 // NS Offload
14111 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14112 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14113 16);
14114
14115#ifdef WLAN_NS_OFFLOAD
14116 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14117 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14118 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14119 16);
14120 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14121 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14122 16);
14123 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14124 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14125 16);
14126 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14127 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14128 16);
14129 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14130 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14131 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053014132 nsOffloadParams.srcIPv6AddrValid =
14133 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14134
14135 nsOffloadParams.targetIPv6Addr1Valid =
14136 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14137
14138 nsOffloadParams.targetIPv6Addr2Valid =
14139 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14140
14141 nsOffloadParams.slotIndex =
14142 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014143
Jeff Johnson295189b2012-06-20 16:38:30 -070014144#endif // WLAN_NS_OFFLOAD
14145 }
14146
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014147 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14148
Jeff Johnson295189b2012-06-20 16:38:30 -070014149 // copy hostOffloadParams into pSendBuffer
14150 wpalMemoryCopy( pSendBuffer+usDataOffset,
14151 &hostOffloadParams,
14152 sizeof(hostOffloadParams));
14153
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014154 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014155 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014156 // copy nsOffloadParams into pSendBuffer
14157 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014158 &nsOffloadParams,
14159 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014160 }
14161 else
14162 {
14163#ifdef WLAN_NS_OFFLOAD
14164 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14165 {
14166 // copy nsOffloadParams into pSendBuffer
14167 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14168 &nsOffloadParams,
14169 sizeof(nsOffloadParams));
14170 }
14171#endif
14172 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014173
14174 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014175 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014176
14177 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014178 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014179 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014180 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14181 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014182
14183fail:
14184 // Release the message buffer so we don't leak
14185 wpalMemoryFree(pSendBuffer);
14186
14187failRequest:
14188 //WDA should have failure check to avoid the memory leak
14189 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014190}/*WDI_ProcessHostOffloadReq*/
14191
14192/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014193 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014194 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014195
14196 @param pWDICtx: pointer to the WLAN DAL context
14197 pEventData: pointer to the event information structure
14198
Jeff Johnson295189b2012-06-20 16:38:30 -070014199 @see
14200 @return Result of the function call
14201*/
14202WDI_Status
14203WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014204(
Jeff Johnson295189b2012-06-20 16:38:30 -070014205 WDI_ControlBlockType* pWDICtx,
14206 WDI_EventInfoType* pEventData
14207)
14208{
14209 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14210 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014211 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014212 wpt_uint16 usDataOffset = 0;
14213 wpt_uint16 usSendSize = 0;
14214 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014215 wpt_uint8 ucCurrentBSSSesIdx = 0;
14216 WDI_BSSSessionType* pBSSSes = NULL;
14217
Jeff Johnson295189b2012-06-20 16:38:30 -070014218 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14219
14220 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014221 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014222 -------------------------------------------------------------------------*/
14223 if (( NULL == pEventData ) ||
14224 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14225 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14226 {
14227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14228 "Invalid parameters in Keep Alive req");
14229 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014230 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014231 }
14232
14233 /*-----------------------------------------------------------------------
14234 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014235 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014236 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014237 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014238 sizeof(keepAliveReq),
14239 &pSendBuffer, &usDataOffset, &usSendSize))||
14240 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14241 {
14242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014243 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014244 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14245 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014246 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014247 }
14248
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014249 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14250 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14251 &pBSSSes);
14252 if ( NULL == pBSSSes )
14253 {
14254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014255 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014256 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014257 }
14258
Jeff Johnson295189b2012-06-20 16:38:30 -070014259 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14260 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14261
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014262 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014263
Jeff Johnson295189b2012-06-20 16:38:30 -070014264 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14265 {
14266 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14267 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14268 HAL_IPV4_ADDR_LEN);
14269 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14270 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014271 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014272 wpalMemoryCopy(keepAliveReq.destMacAddr,
14273 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14274 HAL_MAC_ADDR_LEN);
14275 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014276
14277 wpalMemoryCopy( pSendBuffer+usDataOffset,
14278 &keepAliveReq,
14279 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014280
14281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014282 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014283
14284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014285 "Process keep alive req time period %d",
14286 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070014287
14288 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014289 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014290
14291 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14292 "Sending keep alive req to HAL");
14293
14294 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014295 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014296 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014297 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14298 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014299
14300fail:
14301 // Release the message buffer so we don't leak
14302 wpalMemoryFree(pSendBuffer);
14303
14304failRequest:
14305 //WDA should have failure check to avoid the memory leak
14306 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014307}/*WDI_ProcessKeepAliveReq*/
14308
14309
14310/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014311 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014312 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014313
14314 @param pWDICtx: pointer to the WLAN DAL context
14315 pEventData: pointer to the event information structure
14316
Jeff Johnson295189b2012-06-20 16:38:30 -070014317 @see
14318 @return Result of the function call
14319*/
14320WDI_Status
14321WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014322(
Jeff Johnson295189b2012-06-20 16:38:30 -070014323 WDI_ControlBlockType* pWDICtx,
14324 WDI_EventInfoType* pEventData
14325)
14326{
14327 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14328 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014329 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014330 wpt_uint16 usDataOffset = 0;
14331 wpt_uint16 usSendSize = 0;
14332 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014333 wpt_uint8 ucCurrentBSSSesIdx = 0;
14334 WDI_BSSSessionType* pBSSSes = NULL;
14335
Jeff Johnson295189b2012-06-20 16:38:30 -070014336 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14337
14338 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014339 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014340 -------------------------------------------------------------------------*/
14341 if (( NULL == pEventData ) ||
14342 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14343 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14344 {
14345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014346 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014347 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014348 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014349 }
14350
14351 /*-----------------------------------------------------------------------
14352 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014353 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014354 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014355 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014356 sizeof(wowlAddBcPtrnReq),
14357 &pSendBuffer, &usDataOffset, &usSendSize))||
14358 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14359 {
14360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014361 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014362 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14363 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014364 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014365 }
14366
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014367 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14368 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14369 &pBSSSes);
14370 if ( NULL == pBSSSes )
14371 {
14372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014373 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014374 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014375 }
14376
Jeff Johnsone7245742012-09-05 17:12:55 -070014377 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014378 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014379 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014380 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014381 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014382 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014383 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014384 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14385
14386 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14387 {
14388 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14389 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14390 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14391 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14392 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14393 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14394 }
14395 else
14396 {
14397 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14398 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14399 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14400 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14401 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14402 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14403
14404 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14405 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14406 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14407 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14408 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14409 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14410 }
14411
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014412 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14413
Jeff Johnson295189b2012-06-20 16:38:30 -070014414 wpalMemoryCopy( pSendBuffer+usDataOffset,
14415 &wowlAddBcPtrnReq,
14416 sizeof(wowlAddBcPtrnReq));
14417
14418 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014419 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014420
14421 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014422 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014423 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014424 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14425 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014426fail:
14427 // Release the message buffer so we don't leak
14428 wpalMemoryFree(pSendBuffer);
14429
14430failRequest:
14431 //WDA should have failure check to avoid the memory leak
14432 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014433}/*WDI_ProcessWowlAddBcPtrnReq*/
14434
14435/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014436 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014437 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014438
14439 @param pWDICtx: pointer to the WLAN DAL context
14440 pEventData: pointer to the event information structure
14441
Jeff Johnson295189b2012-06-20 16:38:30 -070014442 @see
14443 @return Result of the function call
14444*/
14445WDI_Status
14446WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014447(
Jeff Johnson295189b2012-06-20 16:38:30 -070014448 WDI_ControlBlockType* pWDICtx,
14449 WDI_EventInfoType* pEventData
14450)
14451{
14452 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14453 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014454 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014455 wpt_uint16 usDataOffset = 0;
14456 wpt_uint16 usSendSize = 0;
14457 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014458 wpt_uint8 ucCurrentBSSSesIdx = 0;
14459 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14461
14462 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014463 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014464 -------------------------------------------------------------------------*/
14465 if (( NULL == pEventData ) ||
14466 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14467 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14468 {
14469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014470 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014471 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014472 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014473 }
14474
14475 /*-----------------------------------------------------------------------
14476 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014477 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014478 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014479 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014480 sizeof(wowlDelBcPtrnReq),
14481 &pSendBuffer, &usDataOffset, &usSendSize))||
14482 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14483 {
14484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014485 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014486 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14487 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014488 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014489 }
14490
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014491 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14492 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14493 &pBSSSes);
14494 if ( NULL == pBSSSes )
14495 {
14496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014497 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014498 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014499 }
14500
Jeff Johnsone7245742012-09-05 17:12:55 -070014501 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014502 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014503
14504 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14505
Jeff Johnsone7245742012-09-05 17:12:55 -070014506 wpalMemoryCopy( pSendBuffer+usDataOffset,
14507 &wowlDelBcPtrnReq,
14508 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014509
14510 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014511 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014512
14513 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014514 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014515 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014516 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14517 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014518
14519fail:
14520 // Release the message buffer so we don't leak
14521 wpalMemoryFree(pSendBuffer);
14522
14523failRequest:
14524 //WDA should have failure check to avoid the memory leak
14525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014526}/*WDI_ProcessWowlDelBcPtrnReq*/
14527
14528/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014529 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014530 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014531
14532 @param pWDICtx: pointer to the WLAN DAL context
14533 pEventData: pointer to the event information structure
14534
Jeff Johnson295189b2012-06-20 16:38:30 -070014535 @see
14536 @return Result of the function call
14537*/
14538WDI_Status
14539WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014540(
Jeff Johnson295189b2012-06-20 16:38:30 -070014541 WDI_ControlBlockType* pWDICtx,
14542 WDI_EventInfoType* pEventData
14543)
14544{
14545 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14546 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014547 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014548 wpt_uint16 usDataOffset = 0;
14549 wpt_uint16 usSendSize = 0;
14550 tHalWowlEnterParams wowlEnterReq;
14551 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14552
14553 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014554 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014555 -------------------------------------------------------------------------*/
14556 if (( NULL == pEventData ) ||
14557 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14558 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14559 {
14560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014561 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014562 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014563 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014564 }
14565
14566 /*-----------------------------------------------------------------------
14567 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014568 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014569 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014570 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014571 sizeof(wowlEnterReq),
14572 &pSendBuffer, &usDataOffset, &usSendSize))||
14573 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14574 {
14575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014576 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014577 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14578 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014579 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014580 }
14581
Kumar Anandaca924e2013-07-22 14:35:34 -070014582 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14583
Jeff Johnsone7245742012-09-05 17:12:55 -070014584 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014585 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014586 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014587 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014588 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014589 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014590 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014591 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014592 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014593 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014594 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014595 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014596 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014597 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014598 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014599 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14600
14601#ifdef WLAN_WAKEUP_EVENTS
14602 wowlEnterReq.ucWoWEAPIDRequestEnable =
14603 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14604
14605 wowlEnterReq.ucWoWEAPOL4WayEnable =
14606 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14607
14608 wowlEnterReq.ucWowNetScanOffloadMatch =
14609 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14610
14611 wowlEnterReq.ucWowGTKRekeyError =
14612 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14613
14614 wowlEnterReq.ucWoWBSSConnLoss =
14615 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14616#endif // WLAN_WAKEUP_EVENTS
14617
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014618 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14619
Jeff Johnson295189b2012-06-20 16:38:30 -070014620 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14621 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14622 sizeof(tSirMacAddr));
14623
Jeff Johnsone7245742012-09-05 17:12:55 -070014624 wpalMemoryCopy( pSendBuffer+usDataOffset,
14625 &wowlEnterReq,
14626 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014627
14628 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014629 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014630
14631 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014632 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014633 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014634 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14635 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014636}/*WDI_ProcessWowlEnterReq*/
14637
14638/**
14639 @brief Process Wowl exit Request function (called when Main FSM
14640 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014641
14642 @param pWDICtx: pointer to the WLAN DAL context
14643 pEventData: pointer to the event information structure
14644
Jeff Johnson295189b2012-06-20 16:38:30 -070014645 @see
14646 @return Result of the function call
14647*/
14648WDI_Status
14649WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014650(
Jeff Johnson295189b2012-06-20 16:38:30 -070014651 WDI_ControlBlockType* pWDICtx,
14652 WDI_EventInfoType* pEventData
14653)
14654{
14655 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014656 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014657 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014658 wpt_uint16 usDataOffset = 0;
14659 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014660 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14662
14663 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014664 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014665 -------------------------------------------------------------------------*/
14666 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014667 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014668 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14669 {
14670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014671 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014672 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014673 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014674 }
14675
14676 /*-----------------------------------------------------------------------
14677 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014678 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014679 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014680 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014681 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014682 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014683 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014684 {
14685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014686 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014687 pEventData, wdiWowlExitCb);
14688 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014689 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014690 }
14691
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014692 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14693
14694 wpalMemoryCopy( pSendBuffer+usDataOffset,
14695 &wowlExitparams,
14696 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014697 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014698 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014699 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014700 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14701 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014702}/*WDI_ProcessWowlExitReq*/
14703
14704/**
14705 @brief Process Configure Apps Cpu Wakeup State Request function
14706 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014707
14708 @param pWDICtx: pointer to the WLAN DAL context
14709 pEventData: pointer to the event information structure
14710
Jeff Johnson295189b2012-06-20 16:38:30 -070014711 @see
14712 @return Result of the function call
14713*/
14714WDI_Status
14715WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014716(
Jeff Johnson295189b2012-06-20 16:38:30 -070014717 WDI_ControlBlockType* pWDICtx,
14718 WDI_EventInfoType* pEventData
14719)
14720{
14721 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14722 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014723 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014724 wpt_uint16 usDataOffset = 0;
14725 wpt_uint16 usSendSize = 0;
14726 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14727 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14728
14729 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014730 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014731 -------------------------------------------------------------------------*/
14732 if (( NULL == pEventData ) ||
14733 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14734 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14735 {
14736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014737 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014738 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014739 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 }
14741
14742 /*-----------------------------------------------------------------------
14743 Get message buffer
14744 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014745 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014746 sizeof(halCfgAppsCpuWakeupStateReqParams),
14747 &pSendBuffer, &usDataOffset, &usSendSize))||
14748 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14749 {
14750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014751 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014752 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14753 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014754 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014755 }
14756
Jeff Johnsone7245742012-09-05 17:12:55 -070014757 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014758 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14759
Jeff Johnsone7245742012-09-05 17:12:55 -070014760 wpalMemoryCopy( pSendBuffer+usDataOffset,
14761 &halCfgAppsCpuWakeupStateReqParams,
14762 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014763
14764 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014765 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014766
14767 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014768 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014769 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014770 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14771 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14772 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014773}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14774
14775#ifdef WLAN_FEATURE_VOWIFI_11R
14776/**
14777 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14778 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014779
14780 @param pWDICtx: pointer to the WLAN DAL context
14781 pEventData: pointer to the event information structure
14782
Jeff Johnson295189b2012-06-20 16:38:30 -070014783 @see
14784 @return Result of the function call
14785*/
14786WDI_Status
14787WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014788(
Jeff Johnson295189b2012-06-20 16:38:30 -070014789 WDI_ControlBlockType* pWDICtx,
14790 WDI_EventInfoType* pEventData
14791)
14792{
14793 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14794 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014795 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014796 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014797 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014798 wpt_uint16 usDataOffset = 0;
14799 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014800 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014801 wpt_macAddr macBSSID;
14802 tAggrAddTsReq halAggrAddTsReq;
14803 int i;
14804 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14805
14806 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014807 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014808 -------------------------------------------------------------------------*/
14809 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14810 ( NULL == pEventData->pCBfnc ))
14811 {
14812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014813 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014814 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014815 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014816 }
14817 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14818 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14819 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14820 /*-------------------------------------------------------------------------
14821 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014822 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014823 -------------------------------------------------------------------------*/
14824 wpalMutexAcquire(&pWDICtx->wptMutex);
14825
14826 /*------------------------------------------------------------------------
14827 Find the BSS for which the request is made and identify WDI session
14828 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014829 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14830 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014831 &macBSSID))
14832 {
14833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014834 "This station does not exist in the WDI Station Table %d",
14835 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070014836 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014837 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014838 }
14839
Jeff Johnsone7245742012-09-05 17:12:55 -070014840 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14841 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014842 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14844 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14845 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014846
14847 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014848 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014849 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014850
Jeff Johnson295189b2012-06-20 16:38:30 -070014851 /*------------------------------------------------------------------------
14852 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014853 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014854 ------------------------------------------------------------------------*/
14855 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14856 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14858 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14859 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014860
Jeff Johnsone7245742012-09-05 17:12:55 -070014861 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014862 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014863 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014864 }
14865
14866 wpalMutexRelease(&pWDICtx->wptMutex);
14867 /*-----------------------------------------------------------------------
14868 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014869 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014870 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014871 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014872 sizeof(tAggrAddTsParams),
14873 &pSendBuffer, &usDataOffset, &usSendSize))||
14874 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14875 {
14876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014877 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014878 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014881 }
14882
Jeff Johnsone7245742012-09-05 17:12:55 -070014883 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014884 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014885 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014886 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14887
14888 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14889 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014890 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014891 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014892 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014893 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014894 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014895 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14896 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014897 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014898 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14899 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014900 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14902 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014903 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014904 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14905 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014906 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014907 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14908 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014909 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014910 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14911 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014912 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014913 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14914 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014915 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014916 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14917 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014918 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014919 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014920 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014921 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014922
14923
14924 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014925 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014926 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014927 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014928 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014929 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014930 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014931 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014932 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014933 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014934 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014935 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014936 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014937 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014938 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014939 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014940 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014941 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014942 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014943 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014944 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014945 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014946 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014947 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014948 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014949 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014950 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014951 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014952 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014953 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14954 }
14955
Jeff Johnsone7245742012-09-05 17:12:55 -070014956 wpalMemoryCopy( pSendBuffer+usDataOffset,
14957 &halAggrAddTsReq,
14958 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014959
14960 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014961 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014962
14963 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014964 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014965 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014966 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014967 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014968 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014969}/*WDI_ProcessAggrAddTSpecReq*/
14970#endif /* WLAN_FEATURE_VOWIFI_11R */
14971
14972/**
14973 @brief Process Shutdown Request function (called when Main FSM
14974 allows it)
14975
14976 @param pWDICtx: pointer to the WLAN DAL context
14977 pEventData: pointer to the event information structure
14978
14979 @see
14980 @return Result of the function call
14981*/
14982WDI_Status
14983WDI_ProcessShutdownReq
14984(
14985 WDI_ControlBlockType* pWDICtx,
14986 WDI_EventInfoType* pEventData
14987 )
14988{
14989 wpt_status wptStatus;
14990
14991
14992 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14993
14994 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014995 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014996 -------------------------------------------------------------------------*/
14997 if ( NULL == pEventData )
14998 {
14999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015000 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015001 WDI_ASSERT(0);
15002 return WDI_STATUS_E_FAILURE;
15003 }
15004
15005 wpalMutexAcquire(&pWDICtx->wptMutex);
15006
15007
15008 gWDIInitialized = eWLAN_PAL_FALSE;
15009 /*! TO DO: stop the data services */
15010 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15011 {
15012 /*Stop the STA Table !UT- check this logic again
15013 It is safer to do it here than on the response - because a stop is imminent*/
15014 WDI_STATableStop(pWDICtx);
15015
15016 /* Stop Transport Driver, DXE */
15017 WDTS_Stop(pWDICtx);
15018 }
15019
15020 /*Clear all pending request*/
15021 WDI_ClearPendingRequests(pWDICtx);
15022 /* Close Data transport*/
15023 /* FTM mode does not open Data Path */
15024 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15025 {
15026 WDTS_Close(pWDICtx);
15027 }
15028 /*Close the STA Table !UT- check this logic again*/
15029 WDI_STATableClose(pWDICtx);
15030 /*close the PAL */
15031 wptStatus = wpalClose(pWDICtx->pPALContext);
15032 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15033 {
15034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15035 "Failed to wpal Close %d", wptStatus);
15036 WDI_ASSERT(0);
15037 }
15038
15039 /*Transition back to init state*/
15040 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15041
15042 wpalMutexRelease(&pWDICtx->wptMutex);
15043
15044 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015045 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015046
15047
Jeff Johnsone7245742012-09-05 17:12:55 -070015048 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015049}/*WDI_ProcessShutdownReq*/
15050
15051/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015052 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015053========================================================================*/
15054
15055/**
15056 @brief Process Start Response function (called when a response
15057 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015058
15059 @param pWDICtx: pointer to the WLAN DAL context
15060 pEventData: pointer to the event information structure
15061
Jeff Johnson295189b2012-06-20 16:38:30 -070015062 @see
15063 @return Result of the function call
15064*/
15065WDI_Status
15066WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015067(
Jeff Johnson295189b2012-06-20 16:38:30 -070015068 WDI_ControlBlockType* pWDICtx,
15069 WDI_EventInfoType* pEventData
15070)
15071{
15072 WDI_StartRspParamsType wdiRspParams;
15073 WDI_StartRspCb wdiStartRspCb = NULL;
15074
15075 tHalMacStartRspParams* startRspParams;
15076
15077#ifndef HAL_SELF_STA_PER_BSS
15078 WDI_AddStaParams wdiAddSTAParam = {0};
15079#endif
15080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15081
Jeff Johnsone7245742012-09-05 17:12:55 -070015082 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015083 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015084 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015085 -------------------------------------------------------------------------*/
15086 if (( NULL == pEventData ) ||
15087 ( NULL == pEventData->pEventData) ||
15088 ( NULL == wdiStartRspCb ))
15089 {
15090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015091 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015092 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015093 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015094 }
15095
15096 /*-------------------------------------------------------------------------
15097 Extract response and send it to UMAC
15098 -------------------------------------------------------------------------*/
15099 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15100 {
15101 // not enough data was received
15102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080015103 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015104 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15105 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015106 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015107 }
15108
15109 /*-------------------------------------------------------------------------
15110 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015111 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015112 -------------------------------------------------------------------------*/
15113 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15114
15115 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15116 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15117 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15118 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15119 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15120 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15121 wdiRspParams.wlanReportedVersion.major =
15122 startRspParams->wcnssWlanVersion.major;
15123 wdiRspParams.wlanReportedVersion.minor =
15124 startRspParams->wcnssWlanVersion.minor;
15125 wdiRspParams.wlanReportedVersion.version =
15126 startRspParams->wcnssWlanVersion.version;
15127 wdiRspParams.wlanReportedVersion.revision =
15128 startRspParams->wcnssWlanVersion.revision;
15129 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15130 startRspParams->wcnssCrmVersionString,
15131 sizeof(wdiRspParams.wcnssSoftwareVersion));
15132 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15133 startRspParams->wcnssWlanVersionString,
15134 sizeof(wdiRspParams.wcnssHardwareVersion));
15135 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15136
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015137 /*Save the HAL Version*/
15138 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15139
Jeff Johnson295189b2012-06-20 16:38:30 -070015140 wpalMutexAcquire(&pWDICtx->wptMutex);
15141 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15142 {
15143 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15144
15145 /*Cache the start response for further use*/
15146 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015147 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015148 sizeof(pWDICtx->wdiCachedStartRspParams));
15149
15150 }
15151 else
15152 {
15153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15154 "Failed to start device with status %s(%d)",
15155 WDI_getHALStatusMsgString(startRspParams->status),
15156 startRspParams->status);
15157
15158 /*Set the expected state transition to stopped - because the start has
15159 failed*/
15160 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15161
15162 wpalMutexRelease(&pWDICtx->wptMutex);
15163
15164 /*Notify UMAC*/
15165 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015166
Jeff Johnson295189b2012-06-20 16:38:30 -070015167 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
15168
15169 /*Although the response is an error - it was processed by our function
15170 so as far as the caller is concerned this is a succesful reponse processing*/
15171 return WDI_STATUS_SUCCESS;
15172 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015173
Jeff Johnson295189b2012-06-20 16:38:30 -070015174 wpalMutexRelease(&pWDICtx->wptMutex);
15175
15176 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15177 {
15178 /* FTM mode does not need to execute below */
15179 /* Notify UMAC */
15180 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15181 return WDI_STATUS_SUCCESS;
15182 }
15183
15184 /* START the Data transport */
15185 WDTS_startTransport(pWDICtx);
15186
15187 /*Start the STA Table !- check this logic again*/
15188 WDI_STATableStart(pWDICtx);
15189
15190#ifndef HAL_SELF_STA_PER_BSS
15191 /* Store the Self STA Index */
15192 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15193
15194 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15195 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15196 WDI_MAC_ADDR_LEN);
15197
15198 /* At this point add the self-STA */
15199
15200 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15201 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15202 /*! TO DO: wdiAddSTAParam.dpuSig */
15203 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15204 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15205 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15206
15207 //all DPU indices are the same for self STA
15208 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15209 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015210 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015211 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15212 WDI_MAC_ADDR_LEN);
15213 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15214 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15215
15216 /* Note: Since we don't get an explicit config STA request for self STA, we
15217 add the self STA upon receiving the Start response message. But the
15218 self STA entry in the table is deleted when WDI gets an explicit delete STA
15219 request */
15220 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15221#endif
15222
15223 /*Notify UMAC*/
15224 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15225
Jeff Johnsone7245742012-09-05 17:12:55 -070015226 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015227}/*WDI_ProcessStartRsp*/
15228
15229
15230/**
15231 @brief Process Stop Response function (called when a response
15232 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015233
15234 @param pWDICtx: pointer to the WLAN DAL context
15235 pEventData: pointer to the event information structure
15236
Jeff Johnson295189b2012-06-20 16:38:30 -070015237 @see
15238 @return Result of the function call
15239*/
15240WDI_Status
15241WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015242(
Jeff Johnson295189b2012-06-20 16:38:30 -070015243 WDI_ControlBlockType* pWDICtx,
15244 WDI_EventInfoType* pEventData
15245)
15246{
15247 WDI_Status wdiStatus;
15248 WDI_StopRspCb wdiStopRspCb = NULL;
15249
Jeff Johnsone7245742012-09-05 17:12:55 -070015250 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15252
Jeff Johnsone7245742012-09-05 17:12:55 -070015253 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015254 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015255 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015256 -------------------------------------------------------------------------*/
15257 if (( NULL == pEventData ) ||
15258 ( NULL == pEventData->pEventData) ||
15259 ( NULL == wdiStopRspCb ))
15260 {
15261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015262 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015263 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015264 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015265 }
15266
15267 /*-------------------------------------------------------------------------
15268 Extract response and send it to UMAC
15269 -------------------------------------------------------------------------*/
15270 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15271 {
15272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015273 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015274 pEventData->uEventDataSize);
15275 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015276 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015277 }
15278
15279 /*-------------------------------------------------------------------------
15280 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015281 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015282 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015283 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15284 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015285 sizeof(halMacStopRspMsg.stopRspParams));
15286
Jeff Johnsone7245742012-09-05 17:12:55 -070015287 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015288
15289 wpalMutexAcquire(&pWDICtx->wptMutex);
15290
15291 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015292 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015293 --------------------------------------------------------------------------*/
15294 if ( WDI_STATUS_SUCCESS != wdiStatus )
15295 {
15296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15297 "Failed to stop the device with status %s (%d)",
15298 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15299 halMacStopRspMsg.stopRspParams.status);
15300
Jeff Johnsone7245742012-09-05 17:12:55 -070015301 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15302
Jeff Johnson295189b2012-06-20 16:38:30 -070015303 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015304 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015305 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015306
Jeff Johnson295189b2012-06-20 16:38:30 -070015307 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15308
15309 /*Transition now as WDI may get preempted imediately after it sends
15310 up the Stop Response and it will not get to process the state transition
15311 from Main Rsp function*/
15312 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15313 wpalMutexRelease(&pWDICtx->wptMutex);
15314
15315 /*! TO DO: - STOP the Data transport */
15316
15317 /*Notify UMAC*/
15318 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15319
Jeff Johnsone7245742012-09-05 17:12:55 -070015320 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015321}/*WDI_ProcessStopRsp*/
15322
15323/**
15324 @brief Process Close Rsp function (called when a response
15325 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015326
15327 @param pWDICtx: pointer to the WLAN DAL context
15328 pEventData: pointer to the event information structure
15329
Jeff Johnson295189b2012-06-20 16:38:30 -070015330 @see
15331 @return Result of the function call
15332*/
15333WDI_Status
15334WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015335(
Jeff Johnson295189b2012-06-20 16:38:30 -070015336 WDI_ControlBlockType* pWDICtx,
15337 WDI_EventInfoType* pEventData
15338)
15339{
15340 /*There is no close response comming from HAL - function just kept for
15341 simmetry */
15342 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015343 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015344}/*WDI_ProcessCloseRsp*/
15345
15346
15347/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015348 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015349============================================================================*/
15350
15351/**
15352 @brief Process Init Scan Rsp function (called when a response
15353 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015354
15355 @param pWDICtx: pointer to the WLAN DAL context
15356 pEventData: pointer to the event information structure
15357
Jeff Johnson295189b2012-06-20 16:38:30 -070015358 @see
15359 @return Result of the function call
15360*/
15361WDI_Status
15362WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015363(
Jeff Johnson295189b2012-06-20 16:38:30 -070015364 WDI_ControlBlockType* pWDICtx,
15365 WDI_EventInfoType* pEventData
15366)
15367{
15368 WDI_Status wdiStatus;
15369 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015370 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080015371 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15373
15374 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015375 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015376 -------------------------------------------------------------------------*/
15377 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15378 ( NULL == pEventData->pEventData))
15379 {
15380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015381 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015382 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015383 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015384 }
15385
15386 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15387 if( NULL == wdiInitScanRspCb)
15388 {
15389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015390 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015391 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015392 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015393 }
15394
15395 /*-------------------------------------------------------------------------
15396 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015397 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015398 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015399 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15400 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015401 sizeof(halInitScanRspMsg.initScanRspParams));
15402
Jeff Johnsone7245742012-09-05 17:12:55 -070015403 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015404
15405 if ( pWDICtx->bInBmps )
15406 {
15407 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080015408 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15409 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15410 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080015411 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080015412 WDI_ASSERT(0);
15413 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015414 }
15415
15416 /*Notify UMAC*/
15417 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15418
Jeff Johnsone7245742012-09-05 17:12:55 -070015419 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015420}/*WDI_ProcessInitScanRsp*/
15421
15422
15423/**
15424 @brief Process Start Scan Rsp function (called when a response
15425 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015426
15427 @param pWDICtx: pointer to the WLAN DAL context
15428 pEventData: pointer to the event information structure
15429
Jeff Johnson295189b2012-06-20 16:38:30 -070015430 @see
15431 @return Result of the function call
15432*/
15433WDI_Status
15434WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015435(
Jeff Johnson295189b2012-06-20 16:38:30 -070015436 WDI_ControlBlockType* pWDICtx,
15437 WDI_EventInfoType* pEventData
15438)
15439{
15440 WDI_StartScanRspParamsType wdiStartScanParams;
15441 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015442
15443 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15445
15446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015447 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015448 -------------------------------------------------------------------------*/
15449 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15450 ( NULL == pEventData->pEventData))
15451 {
15452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015453 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015456 }
15457
15458 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15459 if( NULL == wdiStartScanRspCb)
15460 {
15461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015462 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015463 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015464 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015465 }
15466
15467 /*-------------------------------------------------------------------------
15468 Extract response and send it to UMAC
15469 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015470 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15471 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015472 sizeof(halStartScanRspMsg.startScanRspParams));
15473
15474 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15475 halStartScanRspMsg.startScanRspParams.status);
15476#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015477 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015478 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015479 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015480 halStartScanRspMsg.startScanRspParams.startTSF,
15481 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015482#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015483
15484 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15485 {
15486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15487 "Start scan failed with status %s (%d)",
15488 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15489 halStartScanRspMsg.startScanRspParams.status);
15490 /* send the status to UMAC, don't return from here*/
15491 }
15492
15493 /*Notify UMAC*/
15494 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15495
Jeff Johnsone7245742012-09-05 17:12:55 -070015496 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015497
15498}/*WDI_ProcessStartScanRsp*/
15499
15500
15501/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015502 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015503 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015504
15505 @param pWDICtx: pointer to the WLAN DAL context
15506 pEventData: pointer to the event information structure
15507
Jeff Johnson295189b2012-06-20 16:38:30 -070015508 @see
15509 @return Result of the function call
15510*/
15511WDI_Status
15512WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015513(
Jeff Johnson295189b2012-06-20 16:38:30 -070015514 WDI_ControlBlockType* pWDICtx,
15515 WDI_EventInfoType* pEventData
15516)
15517{
15518 WDI_Status wdiStatus;
15519 tHalEndScanRspMsg halEndScanRspMsg;
15520 WDI_EndScanRspCb wdiEndScanRspCb;
15521 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15522
15523 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015524 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015525 -------------------------------------------------------------------------*/
15526 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15527 ( NULL == pEventData->pEventData))
15528 {
15529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015530 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015531 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015532 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015533 }
15534
15535 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15536
15537 /*-------------------------------------------------------------------------
15538 Extract response and send it to UMAC
15539 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015540 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15541 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015542 sizeof(halEndScanRspMsg.endScanRspParams));
15543
Jeff Johnsone7245742012-09-05 17:12:55 -070015544 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015545
15546 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15547 {
15548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15549 "End Scan failed with status %s (%d )",
15550 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15551 halEndScanRspMsg.endScanRspParams.status);
15552 /* send the status to UMAC, don't return from here*/
15553 }
15554
15555 /*Notify UMAC*/
15556 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15557
Jeff Johnsone7245742012-09-05 17:12:55 -070015558 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015559}/*WDI_ProcessEndScanRsp*/
15560
15561
15562/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015563 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015564 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015565
15566 @param pWDICtx: pointer to the WLAN DAL context
15567 pEventData: pointer to the event information structure
15568
Jeff Johnson295189b2012-06-20 16:38:30 -070015569 @see
15570 @return Result of the function call
15571*/
15572WDI_Status
15573WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015574(
Jeff Johnson295189b2012-06-20 16:38:30 -070015575 WDI_ControlBlockType* pWDICtx,
15576 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015577)
Jeff Johnson295189b2012-06-20 16:38:30 -070015578{
15579 WDI_Status wdiStatus;
15580 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015581
15582 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15584
15585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015587 -------------------------------------------------------------------------*/
15588 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15589 ( NULL == pEventData->pEventData))
15590 {
15591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015592 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015595 }
15596
15597 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15598
15599 /*-------------------------------------------------------------------------
15600 Extract response and send it to UMAC
15601 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015602 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15603 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015604 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15605
Jeff Johnsone7245742012-09-05 17:12:55 -070015606 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015607
15608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015609 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015610 halFinishScanRspMsg.finishScanRspParams.status);
15611
15612 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15613 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15614 {
15615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15616 "Finish Scan failed with status %s (%d)",
15617 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15618 halFinishScanRspMsg.finishScanRspParams.status);
15619 /* send the status to UMAC, don't return from here*/
15620 }
15621
15622 /*Notify UMAC*/
15623 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15624
Jeff Johnsone7245742012-09-05 17:12:55 -070015625 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015626}/*WDI_ProcessFinishScanRsp*/
15627
15628/**
15629 @brief Process Join Response function (called when a response
15630 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015631
15632 @param pWDICtx: pointer to the WLAN DAL context
15633 pEventData: pointer to the event information structure
15634
Jeff Johnson295189b2012-06-20 16:38:30 -070015635 @see
15636 @return Result of the function call
15637*/
15638WDI_Status
15639WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015640(
Jeff Johnson295189b2012-06-20 16:38:30 -070015641 WDI_ControlBlockType* pWDICtx,
15642 WDI_EventInfoType* pEventData
15643)
15644{
15645 WDI_Status wdiStatus;
15646 WDI_JoinRspCb wdiJoinRspCb;
15647 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015648
15649 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15651
15652 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015653 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015654 -------------------------------------------------------------------------*/
15655 if (( NULL == pWDICtx ) ||
15656 ( NULL == pWDICtx->pfncRspCB ) ||
15657 ( NULL == pEventData ) ||
15658 ( NULL == pEventData->pEventData))
15659 {
15660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015661 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015662 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015663 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015664 }
15665
15666 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15667
15668 /*-------------------------------------------------------------------------
15669 Extract response and send it to UMAC
15670 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015671 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15672 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015673 sizeof(halJoinRspMsg.joinRspParams));
15674
Jeff Johnsone7245742012-09-05 17:12:55 -070015675 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015676
15677 wpalMutexAcquire(&pWDICtx->wptMutex);
15678
15679 /*-----------------------------------------------------------------------
15680 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015681 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015682 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015683 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015684 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15685 {
15686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015687 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15688 "association no longer in progress %d - mysterious HAL response",
15689 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015690
Jeff Johnsone7245742012-09-05 17:12:55 -070015691 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015692 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015693 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015694 }
15695
15696 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15697
15698 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015699 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015700 -----------------------------------------------------------------------*/
15701 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15702 {
15703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15704 "Join only allowed in Joining state - failure state is %d "
15705 "strange HAL response", pBSSSes->wdiAssocState);
15706
Jeff Johnsone7245742012-09-05 17:12:55 -070015707 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15708
Jeff Johnson295189b2012-06-20 16:38:30 -070015709 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015710 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015711 }
15712
15713
15714 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015715 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015716 -----------------------------------------------------------------------*/
15717 if ( WDI_STATUS_SUCCESS != wdiStatus )
15718 {
15719 /*Association was failed by HAL - remove session*/
15720 WDI_DeleteSession(pWDICtx, pBSSSes);
15721
15722 /*Association no longer in progress */
15723 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15724
15725 /*Association no longer in progress - prepare pending assoc for processing*/
15726 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015727
Jeff Johnson295189b2012-06-20 16:38:30 -070015728 }
15729 else
15730 {
15731 /*Transition to state Joining - this may be redundant as we are supposed
15732 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015733 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015734 }
15735
15736 wpalMutexRelease(&pWDICtx->wptMutex);
15737
15738 /*Notify UMAC*/
15739 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15740
Jeff Johnsone7245742012-09-05 17:12:55 -070015741 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015742}/*WDI_ProcessJoinRsp*/
15743
15744
15745/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015746 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015747 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015748
15749 @param pWDICtx: pointer to the WLAN DAL context
15750 pEventData: pointer to the event information structure
15751
Jeff Johnson295189b2012-06-20 16:38:30 -070015752 @see
15753 @return Result of the function call
15754*/
15755WDI_Status
15756WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015757(
Jeff Johnson295189b2012-06-20 16:38:30 -070015758 WDI_ControlBlockType* pWDICtx,
15759 WDI_EventInfoType* pEventData
15760)
15761{
15762 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15763 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015764 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015765 WDI_BSSSessionType* pBSSSes = NULL;
15766
Jeff Johnsone7245742012-09-05 17:12:55 -070015767 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015768 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15769 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015770
Jeff Johnson295189b2012-06-20 16:38:30 -070015771 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15772
15773 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015774 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015775 -------------------------------------------------------------------------*/
15776 if (( NULL == pEventData ) ||
15777 ( NULL == pEventData->pEventData))
15778 {
15779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015780 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015781 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015782 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015783 }
15784
15785 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15786
15787 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015788 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015789 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015790 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15791 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015792 sizeof(halConfigBssRspMsg.configBssRspParams));
15793
15794 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15795 halConfigBssRspMsg.configBssRspParams.status);
15796 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15797 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015798 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015799 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15800 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015801
Jeff Johnson295189b2012-06-20 16:38:30 -070015802 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015803
15804 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015805 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015806
15807 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015808 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015809
Jeff Johnson295189b2012-06-20 16:38:30 -070015810 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015811
Jeff Johnson295189b2012-06-20 16:38:30 -070015812 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015813 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015814 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15815 #endif
15816 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15817 halConfigBssRspMsg.configBssRspParams.staMac,
15818 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015819
Jeff Johnson295189b2012-06-20 16:38:30 -070015820 wpalMutexAcquire(&pWDICtx->wptMutex);
15821 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015822 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015823 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015824 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15825 wdiConfigBSSParams.macBSSID,
15826 &pBSSSes);
15827
Jeff Johnson295189b2012-06-20 16:38:30 -070015828 /*-----------------------------------------------------------------------
15829 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015830 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015831 -----------------------------------------------------------------------*/
15832 if ( NULL == pBSSSes )
15833 {
15834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15835 "Association sequence for this BSS does not yet exist "
15836 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015837
15838 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15839
Jeff Johnson295189b2012-06-20 16:38:30 -070015840 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015841 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015842 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015843
Jeff Johnson295189b2012-06-20 16:38:30 -070015844 /*Save data for this BSS*/
15845 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15846 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015847 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015848 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015849 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015850 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015851 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015852 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015853 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015854 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015855 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015856 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15857 pBSSSes->bcastStaIdx =
15858 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015859
Jeff Johnson295189b2012-06-20 16:38:30 -070015860 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015861
Jeff Johnson295189b2012-06-20 16:38:30 -070015862 /*-------------------------------------------------------------------------
15863 Add Peer STA
15864 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015865 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015866 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15867 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015868
Jeff Johnson295189b2012-06-20 16:38:30 -070015869 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015870 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015871 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015872 wdiAddSTAParam.ucHTCapable =
15873 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15874 wdiAddSTAParam.ucStaType =
15875 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15876
Jeff Johnson295189b2012-06-20 16:38:30 -070015877 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015878 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15879 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015880 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015881
15882 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15883 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15884 WDI_MAC_ADDR_LEN);
15885
Jeff Johnson295189b2012-06-20 16:38:30 -070015886 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015887 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015888 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015889 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015890 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015891 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015892 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015893 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015894 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015895 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015896 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015897 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015898 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015899
Jeff Johnson295189b2012-06-20 16:38:30 -070015900 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15901 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015902
Jeff Johnson295189b2012-06-20 16:38:30 -070015903 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15904 /*-------------------------------------------------------------------------
15905 Add Broadcast STA only in AP mode
15906 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015907 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070015908 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015909 {
15910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15911 "Add BCAST STA to table for index: %d",
15912 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015913
15914 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015915 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015916
Jeff Johnson295189b2012-06-20 16:38:30 -070015917 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15918 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15919 }
15920 wpalMutexRelease(&pWDICtx->wptMutex);
15921 }
15922 else
15923 {
15924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15925 "Config BSS RSP failed with status : %s(%d)",
15926 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015927 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015928 halConfigBssRspMsg.configBssRspParams.status);
15929
Jeff Johnsone7245742012-09-05 17:12:55 -070015930
Jeff Johnson295189b2012-06-20 16:38:30 -070015931 /*Association was failed by HAL - remove session*/
15932 WDI_DeleteSession(pWDICtx, pBSSSes);
15933
15934 /*Association no longer in progress */
15935 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15936
15937 /*Association no longer in progress - prepare pending assoc for processing*/
15938 WDI_DequeueAssocRequest(pWDICtx);
15939
15940 }
15941
15942 /*Notify UMAC*/
15943 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15944
Jeff Johnsone7245742012-09-05 17:12:55 -070015945 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015946}/*WDI_ProcessConfigBSSRsp*/
15947
15948
15949/**
15950 @brief Process Del BSS Response function (called when a response
15951 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015952
15953 @param pWDICtx: pointer to the WLAN DAL context
15954 pEventData: pointer to the event information structure
15955
Jeff Johnson295189b2012-06-20 16:38:30 -070015956 @see
15957 @return Result of the function call
15958*/
15959WDI_Status
15960WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015961(
Jeff Johnson295189b2012-06-20 16:38:30 -070015962 WDI_ControlBlockType* pWDICtx,
15963 WDI_EventInfoType* pEventData
15964)
15965{
15966 WDI_DelBSSRspParamsType wdiDelBSSParams;
15967 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015968 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015969 WDI_BSSSessionType* pBSSSes = NULL;
15970
Jeff Johnsone7245742012-09-05 17:12:55 -070015971 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15973
15974 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015975 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015976 -------------------------------------------------------------------------*/
15977 if (( NULL == pEventData ) ||
15978 ( NULL == pEventData->pEventData))
15979 {
15980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015981 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015982 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015983 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015984 }
15985
15986 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15987
15988 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015989 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015990 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015991 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15992 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015993 sizeof(halDelBssRspMsg.deleteBssRspParams));
15994
15995
15996 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015997 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015998
15999 wpalMutexAcquire(&pWDICtx->wptMutex);
16000
16001 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016002 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016003 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016004 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16005 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16006 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016007
16008 /*-----------------------------------------------------------------------
16009 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016010 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016011 -----------------------------------------------------------------------*/
16012 if ( NULL == pBSSSes )
16013 {
16014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16015 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016016 "association no longer in progress - mysterious HAL response");
16017
16018 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16019
16020 wpalMutexRelease(&pWDICtx->wptMutex);
16021 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016022 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016023
16024 /*Extract BSSID for the response to UMAC*/
16025 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16026 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16027
16028 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16029
16030 /*-----------------------------------------------------------------------
16031 The current session will be deleted
16032 -----------------------------------------------------------------------*/
16033 WDI_DeleteSession(pWDICtx, pBSSSes);
16034
16035
16036 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016037 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16038 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016039 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016040 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016041 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016042
16043 /* Delete the STA's in this BSS */
16044 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16045
Jeff Johnson295189b2012-06-20 16:38:30 -070016046 wpalMutexRelease(&pWDICtx->wptMutex);
16047
16048 /*Notify UMAC*/
16049 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16050
Jeff Johnsone7245742012-09-05 17:12:55 -070016051 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016052}/*WDI_ProcessDelBSSRsp*/
16053
16054/**
16055 @brief Process Post Assoc Rsp function (called when a response
16056 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016057
16058 @param pWDICtx: pointer to the WLAN DAL context
16059 pEventData: pointer to the event information structure
16060
Jeff Johnson295189b2012-06-20 16:38:30 -070016061 @see
16062 @return Result of the function call
16063*/
16064WDI_Status
16065WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016066(
Jeff Johnson295189b2012-06-20 16:38:30 -070016067 WDI_ControlBlockType* pWDICtx,
16068 WDI_EventInfoType* pEventData
16069)
16070{
16071 WDI_PostAssocRspParamsType wdiPostAssocParams;
16072 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016073 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016074 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016075 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16077
16078 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016079 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016080 -------------------------------------------------------------------------*/
16081 if (( NULL == pEventData ) ||
16082 ( NULL == pEventData->pEventData))
16083 {
16084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016085 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016086 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016088 }
16089
16090 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16091
16092 /*-------------------------------------------------------------------------
16093 Extract response and send it to UMAC
16094 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016095 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16096 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016097 sizeof(halPostAssocRspMsg.postAssocRspParams));
16098
16099 /*Extract the Post Assoc STA Params */
16100
Jeff Johnsone7245742012-09-05 17:12:55 -070016101 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016102 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016103 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016104 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016105 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016106 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16107
Jeff Johnsone7245742012-09-05 17:12:55 -070016108 wdiPostAssocParams.wdiStatus =
16109 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016110
16111 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16112 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016113 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16114 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016115 WDI_MAC_ADDR_LEN);
16116
16117 /* Extract Post Assoc BSS Params */
16118
Jeff Johnsone7245742012-09-05 17:12:55 -070016119 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16120 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16121 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016122
16123 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16124 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016125 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016126 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16127 .macSTA, WDI_MAC_ADDR_LEN);
16128
Jeff Johnsone7245742012-09-05 17:12:55 -070016129 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016130 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16131
Jeff Johnsone7245742012-09-05 17:12:55 -070016132 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016133 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16134
16135 wdiPostAssocParams.bssParams.ucBSSIdx =
16136 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16137
Jeff Johnsone7245742012-09-05 17:12:55 -070016138 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016139 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16140
16141 wpalMutexAcquire(&pWDICtx->wptMutex);
16142
16143 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016144 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016145 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016146 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016147 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016148 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016149
16150 /*-----------------------------------------------------------------------
16151 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016152 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016153 -----------------------------------------------------------------------*/
16154 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016155 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016156 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16157 {
16158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16159 "Association sequence for this BSS does not yet exist or "
16160 "association no longer in progress - mysterious HAL response");
16161
Jeff Johnsone7245742012-09-05 17:12:55 -070016162 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16163
Jeff Johnson295189b2012-06-20 16:38:30 -070016164 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016165 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016166 }
16167
16168 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016169 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016170 -----------------------------------------------------------------------*/
16171 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16172 {
16173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16174 "Post Assoc not allowed before JOIN - failing request "
16175 "strange HAL response");
16176
Jeff Johnsone7245742012-09-05 17:12:55 -070016177 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16178
Jeff Johnson295189b2012-06-20 16:38:30 -070016179 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016180 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016181 }
16182
16183 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016184 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016185 -----------------------------------------------------------------------*/
16186 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16187 {
16188 /*Association was failed by HAL - remove session*/
16189 WDI_DeleteSession(pWDICtx, pBSSSes);
16190 }
16191 else
16192 {
16193 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016194 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016195
16196 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016197 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016198 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016199 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016200 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016201 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016202 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016203 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016204 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16205
Jeff Johnsone7245742012-09-05 17:12:55 -070016206 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016207 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16208 }
16209
16210 /*Association no longer in progress */
16211 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16212
16213 /*Association no longer in progress - prepare pending assoc for processing*/
16214 WDI_DequeueAssocRequest(pWDICtx);
16215
16216 wpalMutexRelease(&pWDICtx->wptMutex);
16217
16218 /*Notify UMAC*/
16219 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16220
Jeff Johnsone7245742012-09-05 17:12:55 -070016221 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016222}/*WDI_ProcessPostAssocRsp*/
16223
16224/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016225 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016226 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016227
16228 @param pWDICtx: pointer to the WLAN DAL context
16229 pEventData: pointer to the event information structure
16230
Jeff Johnson295189b2012-06-20 16:38:30 -070016231 @see
16232 @return Result of the function call
16233*/
16234WDI_Status
16235WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016236(
Jeff Johnson295189b2012-06-20 16:38:30 -070016237 WDI_ControlBlockType* pWDICtx,
16238 WDI_EventInfoType* pEventData
16239)
16240{
16241 WDI_DelSTARspParamsType wdiDelSTARsp;
16242 WDI_DelSTARspCb wdiDelSTARspCb;
16243 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016244 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016245 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16246
16247 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016248 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016249 -------------------------------------------------------------------------*/
16250 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16251 ( NULL == pEventData->pEventData))
16252 {
16253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016254 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016255 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 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16260
16261 /*-------------------------------------------------------------------------
16262 Extract response and send it to UMAC
16263 -------------------------------------------------------------------------*/
16264 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016265 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016266 sizeof(halDelStaRspMsg.delStaRspParams));
16267
16268 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016269 wdiDelSTARsp.wdiStatus =
16270 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016271
16272 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16273
16274 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16275 if(staType == WDI_STA_ENTRY_SELF)
16276 {
16277 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16278
16279 /* At this point add the self-STA */
16280
16281 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16282 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16283 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16284
16285#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16286#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16287
16288 //all DPU indices are the same for self STA
16289 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16290 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16291 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16292 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16293 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16294 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016295
16296 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016297 }
16298 else
16299 {
16300 //Delete the station in the table
16301 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16302 }
16303
16304 /*Notify UMAC*/
16305 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16306
Jeff Johnsone7245742012-09-05 17:12:55 -070016307 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016308}/*WDI_ProcessDelSTARsp*/
16309
16310
16311/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016312 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016313==========================================================================*/
16314
16315/**
16316 @brief Process Set BSS Key Rsp function (called when a response
16317 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016318
16319 @param pWDICtx: pointer to the WLAN DAL context
16320 pEventData: pointer to the event information structure
16321
Jeff Johnson295189b2012-06-20 16:38:30 -070016322 @see
16323 @return Result of the function call
16324*/
16325WDI_Status
16326WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016327(
Jeff Johnson295189b2012-06-20 16:38:30 -070016328 WDI_ControlBlockType* pWDICtx,
16329 WDI_EventInfoType* pEventData
16330)
16331{
16332 WDI_Status wdiStatus;
16333 eHalStatus halStatus;
16334 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16335 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16336
16337 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016338 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016339 -------------------------------------------------------------------------*/
16340 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16341 ( NULL == pEventData->pEventData))
16342 {
16343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016344 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016345 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016346 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016347 }
16348
16349 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16350
16351 /*-------------------------------------------------------------------------
16352 Extract response and send it to UMAC
16353 -------------------------------------------------------------------------*/
16354 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016355 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016356
16357 if ( eHAL_STATUS_SUCCESS != halStatus )
16358 {
16359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16360 "Set BSS Key failed with status %s (%d)",
16361 WDI_getHALStatusMsgString(halStatus),
16362 halStatus);
16363 /* send the status to UMAC, don't return from here*/
16364 }
16365
16366 /*Notify UMAC*/
16367 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16368
Jeff Johnsone7245742012-09-05 17:12:55 -070016369 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016370}/*WDI_ProcessSetBssKeyRsp*/
16371
16372/**
16373 @brief Process Remove BSS Key Rsp function (called when a response
16374 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016375
16376 @param pWDICtx: pointer to the WLAN DAL context
16377 pEventData: pointer to the event information structure
16378
Jeff Johnson295189b2012-06-20 16:38:30 -070016379 @see
16380 @return Result of the function call
16381*/
16382WDI_Status
16383WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016384(
Jeff Johnson295189b2012-06-20 16:38:30 -070016385 WDI_ControlBlockType* pWDICtx,
16386 WDI_EventInfoType* pEventData
16387)
16388{
16389 WDI_Status wdiStatus;
16390 eHalStatus halStatus;
16391 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16393
16394 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016395 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016396 -------------------------------------------------------------------------*/
16397 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16398 ( NULL == pEventData->pEventData))
16399 {
16400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016401 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016402 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016403 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016404 }
16405
16406 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16407
16408 /*-------------------------------------------------------------------------
16409 Extract response and send it to UMAC
16410 -------------------------------------------------------------------------*/
16411 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016412 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016413
16414 if ( eHAL_STATUS_SUCCESS != halStatus )
16415 {
16416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16417 "Remove BSS Key failed with status %s (%d )",
16418 WDI_getHALStatusMsgString(halStatus),
16419 halStatus);
16420 /* send the status to UMAC, don't return from here*/
16421 }
16422
16423 /*Notify UMAC*/
16424 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16425
Jeff Johnsone7245742012-09-05 17:12:55 -070016426 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016427}/*WDI_ProcessSetBssKeyRsp*/
16428
16429
16430/**
16431 @brief Process Set STA Key Rsp function (called when a response
16432 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016433
16434 @param pWDICtx: pointer to the WLAN DAL context
16435 pEventData: pointer to the event information structure
16436
Jeff Johnson295189b2012-06-20 16:38:30 -070016437 @see
16438 @return Result of the function call
16439*/
16440WDI_Status
16441WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016442(
Jeff Johnson295189b2012-06-20 16:38:30 -070016443 WDI_ControlBlockType* pWDICtx,
16444 WDI_EventInfoType* pEventData
16445)
16446{
16447 WDI_Status wdiStatus;
16448 eHalStatus halStatus;
16449 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16450 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16451
16452 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016453 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016454 -------------------------------------------------------------------------*/
16455 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16456 ( NULL == pEventData->pEventData))
16457 {
16458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016459 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016460 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016461 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016462 }
16463
16464 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16465
16466 /*-------------------------------------------------------------------------
16467 Extract response and send it to UMAC
16468 -------------------------------------------------------------------------*/
16469 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016470 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016471
16472 if ( eHAL_STATUS_SUCCESS != halStatus )
16473 {
16474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16475 "Set STA Key failed with status %s (%d)",
16476 WDI_getHALStatusMsgString(halStatus),
16477 halStatus);
16478 /* send the status to UMAC, don't return from here*/
16479 }
16480
16481 /*Notify UMAC*/
16482 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16483
Jeff Johnsone7245742012-09-05 17:12:55 -070016484 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016485}/*WDI_ProcessSetSTAKeyRsp*/
16486
16487/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016488 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016489 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016490
16491 @param pWDICtx: pointer to the WLAN DAL context
16492 pEventData: pointer to the event information structure
16493
Jeff Johnson295189b2012-06-20 16:38:30 -070016494 @see
16495 @return Result of the function call
16496*/
16497WDI_Status
16498WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016499(
Jeff Johnson295189b2012-06-20 16:38:30 -070016500 WDI_ControlBlockType* pWDICtx,
16501 WDI_EventInfoType* pEventData
16502)
16503{
16504 WDI_Status wdiStatus;
16505 eHalStatus halStatus;
16506 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16507 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16508
16509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016510 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016511 -------------------------------------------------------------------------*/
16512 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16513 ( NULL == pEventData->pEventData))
16514 {
16515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016516 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016517 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016518 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016519 }
16520
16521 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16522
16523 /*-------------------------------------------------------------------------
16524 Extract response and send it to UMAC
16525 -------------------------------------------------------------------------*/
16526 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016527 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016528
16529 if ( eHAL_STATUS_SUCCESS != halStatus )
16530 {
16531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16532 "Remove STA Key failed with status %s (%d)",
16533 WDI_getHALStatusMsgString(halStatus),
16534 halStatus);
16535 /* send the status to UMAC, don't return from here*/
16536 }
16537
16538 /*Notify UMAC*/
16539 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16540
Jeff Johnsone7245742012-09-05 17:12:55 -070016541 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016542}/*WDI_ProcessRemoveStaKeyRsp*/
16543
16544/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016545 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016546 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016547
16548 @param pWDICtx: pointer to the WLAN DAL context
16549 pEventData: pointer to the event information structure
16550
Jeff Johnson295189b2012-06-20 16:38:30 -070016551 @see
16552 @return Result of the function call
16553*/
16554WDI_Status
16555WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016556(
Jeff Johnson295189b2012-06-20 16:38:30 -070016557 WDI_ControlBlockType* pWDICtx,
16558 WDI_EventInfoType* pEventData
16559)
16560{
16561 WDI_Status wdiStatus;
16562 eHalStatus halStatus;
16563 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16565
16566 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016567 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016568 -------------------------------------------------------------------------*/
16569 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16570 ( NULL == pEventData->pEventData))
16571 {
16572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016573 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016574 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016576 }
16577
16578 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16579
16580 /*-------------------------------------------------------------------------
16581 Extract response and send it to UMAC
16582 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016583 wpalMemoryCopy( &halStatus,
16584 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016585 sizeof(halStatus));
16586
Jeff Johnsone7245742012-09-05 17:12:55 -070016587 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016588
16589 if ( eHAL_STATUS_SUCCESS != halStatus )
16590 {
16591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16592 "Set STA Key failed with status %s (%d)",
16593 WDI_getHALStatusMsgString(halStatus),
16594 halStatus);
16595 /* send the status to UMAC, don't return from here*/
16596 }
16597
16598 /*Notify UMAC*/
16599 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16600
Jeff Johnsone7245742012-09-05 17:12:55 -070016601 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016602}/*WDI_ProcessSetSTABcastKeyRsp*/
16603
16604/**
16605 @brief Process Remove STA Bcast Key Rsp function (called when a
16606 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016607
16608 @param pWDICtx: pointer to the WLAN DAL context
16609 pEventData: pointer to the event information structure
16610
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 @see
16612 @return Result of the function call
16613*/
16614WDI_Status
16615WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016616(
Jeff Johnson295189b2012-06-20 16:38:30 -070016617 WDI_ControlBlockType* pWDICtx,
16618 WDI_EventInfoType* pEventData
16619)
16620{
16621 WDI_Status wdiStatus;
16622 eHalStatus halStatus;
16623 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16624 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16625
16626 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016627 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016628 -------------------------------------------------------------------------*/
16629 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16630 ( NULL == pEventData->pEventData))
16631 {
16632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016633 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016634 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016635 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016636 }
16637
16638 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16639
16640 /*-------------------------------------------------------------------------
16641 Extract response and send it to UMAC
16642 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016643 wpalMemoryCopy( &halStatus,
16644 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016645 sizeof(halStatus));
16646
Jeff Johnsone7245742012-09-05 17:12:55 -070016647 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016648
16649 if ( eHAL_STATUS_SUCCESS != halStatus )
16650 {
16651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16652 "Remove STA Key failed with status %s (%d)",
16653 WDI_getHALStatusMsgString(halStatus),
16654 halStatus);
16655 /* send the status to UMAC, don't return from here*/
16656 }
16657
16658 /*Notify UMAC*/
16659 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16660
Jeff Johnsone7245742012-09-05 17:12:55 -070016661 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016662}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16663
16664
16665/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016666 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016667==========================================================================*/
16668
16669/**
16670 @brief Process Add TSpec Rsp function (called when a response
16671 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016672
16673 @param pWDICtx: pointer to the WLAN DAL context
16674 pEventData: pointer to the event information structure
16675
Jeff Johnson295189b2012-06-20 16:38:30 -070016676 @see
16677 @return Result of the function call
16678*/
16679WDI_Status
16680WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016681(
Jeff Johnson295189b2012-06-20 16:38:30 -070016682 WDI_ControlBlockType* pWDICtx,
16683 WDI_EventInfoType* pEventData
16684)
16685{
16686 WDI_Status wdiStatus;
16687 eHalStatus halStatus;
16688 WDI_AddTsRspCb wdiAddTsRspCb;
16689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16690
16691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016692 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016693 -------------------------------------------------------------------------*/
16694 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16695 ( NULL == pEventData->pEventData))
16696 {
16697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016698 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016701 }
16702
16703 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16704
16705 /*-------------------------------------------------------------------------
16706 Extract response and send it to UMAC
16707 -------------------------------------------------------------------------*/
16708 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016709 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016710
16711 /*Notify UMAC*/
16712 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16713
Jeff Johnsone7245742012-09-05 17:12:55 -070016714 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016715}/*WDI_ProcessAddTSpecRsp*/
16716
16717
16718/**
16719 @brief Process Del TSpec Rsp function (called when a response
16720 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016721
16722 @param pWDICtx: pointer to the WLAN DAL context
16723 pEventData: pointer to the event information structure
16724
Jeff Johnson295189b2012-06-20 16:38:30 -070016725 @see
16726 @return Result of the function call
16727*/
16728WDI_Status
16729WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016730(
Jeff Johnson295189b2012-06-20 16:38:30 -070016731 WDI_ControlBlockType* pWDICtx,
16732 WDI_EventInfoType* pEventData
16733)
16734{
16735 WDI_Status wdiStatus;
16736 eHalStatus halStatus;
16737 WDI_DelTsRspCb wdiDelTsRspCb;
16738 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16739
16740 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016741 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016742 -------------------------------------------------------------------------*/
16743 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16744 ( NULL == pEventData->pEventData))
16745 {
16746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016747 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016748 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016749 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016750 }
16751
16752 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16753
16754 /*-------------------------------------------------------------------------
16755 Extract response and send it to UMAC
16756 -------------------------------------------------------------------------*/
16757 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016758 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016759
16760 /*Notify UMAC*/
16761 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16762
Jeff Johnsone7245742012-09-05 17:12:55 -070016763 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016764}/*WDI_ProcessDelTSpecRsp*/
16765
16766/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016767 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016768 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016769
16770 @param pWDICtx: pointer to the WLAN DAL context
16771 pEventData: pointer to the event information structure
16772
Jeff Johnson295189b2012-06-20 16:38:30 -070016773 @see
16774 @return Result of the function call
16775*/
16776WDI_Status
16777WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016778(
Jeff Johnson295189b2012-06-20 16:38:30 -070016779 WDI_ControlBlockType* pWDICtx,
16780 WDI_EventInfoType* pEventData
16781)
16782{
16783 WDI_Status wdiStatus;
16784 eHalStatus halStatus;
16785 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16787
16788 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016789 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016790 -------------------------------------------------------------------------*/
16791 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16792 ( NULL == pEventData->pEventData))
16793 {
16794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016795 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016796 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016797 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016798 }
16799
16800 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16801
16802 /*-------------------------------------------------------------------------
16803 Extract response and send it to UMAC
16804 -------------------------------------------------------------------------*/
16805 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016806 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016807
16808 /*Notify UMAC*/
16809 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16810
Jeff Johnsone7245742012-09-05 17:12:55 -070016811 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016812}/*WDI_ProcessUpdateEDCAParamsRsp*/
16813
16814
16815/**
16816 @brief Process Add BA Rsp function (called when a response
16817 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_ProcessAddBASessionRsp
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_AddBASessionRspCb wdiAddBASessionRspCb;
16833
16834 tAddBASessionRspParams halBASessionRsp;
16835 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16836
Jeff Johnsone7245742012-09-05 17:12:55 -070016837
Jeff Johnson295189b2012-06-20 16:38:30 -070016838 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16839
16840 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016841 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016842 -------------------------------------------------------------------------*/
16843 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16844 ( NULL == pEventData->pEventData))
16845 {
16846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016847 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016848 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016849 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016850 }
16851
16852 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16853
16854 /*-------------------------------------------------------------------------
16855 Extract response and send it to UMAC
16856 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016857 wpalMemoryCopy( &halBASessionRsp,
16858 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016859 sizeof(halBASessionRsp));
16860
16861 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16862
Jeff Johnson43971f52012-07-17 12:26:56 -070016863 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016864 {
16865 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16866 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16867 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16868 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16869 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16870 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16871 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16872 }
16873
16874 /*Notify UMAC*/
16875 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16876
Jeff Johnsone7245742012-09-05 17:12:55 -070016877 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016878}/*WDI_ProcessAddSessionBARsp*/
16879
16880
16881/**
16882 @brief Process Del BA Rsp function (called when a response
16883 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016884
16885 @param pWDICtx: pointer to the WLAN DAL context
16886 pEventData: pointer to the event information structure
16887
Jeff Johnson295189b2012-06-20 16:38:30 -070016888 @see
16889 @return Result of the function call
16890*/
16891WDI_Status
16892WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016893(
Jeff Johnson295189b2012-06-20 16:38:30 -070016894 WDI_ControlBlockType* pWDICtx,
16895 WDI_EventInfoType* pEventData
16896)
16897{
16898 WDI_Status wdiStatus;
16899 eHalStatus halStatus;
16900 WDI_DelBARspCb wdiDelBARspCb;
16901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16902
16903 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016904 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016905 -------------------------------------------------------------------------*/
16906 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16907 ( NULL == pEventData->pEventData))
16908 {
16909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016910 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016911 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016912 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016913 }
16914
16915 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16916
16917 /*-------------------------------------------------------------------------
16918 Extract response and send it to UMAC
16919 -------------------------------------------------------------------------*/
16920 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016921 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016922
16923 if ( eHAL_STATUS_SUCCESS == halStatus )
16924 {
16925 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16926 }
16927
16928 /*Notify UMAC*/
16929 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16930
Jeff Johnsone7245742012-09-05 17:12:55 -070016931 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016932}/*WDI_ProcessDelBARsp*/
16933
16934#ifdef FEATURE_WLAN_CCX
16935/**
16936 @brief Process TSM Stats Rsp function (called when a response
16937 is being received over the bus from HAL)
16938
16939 @param pWDICtx: pointer to the WLAN DAL context
16940 pEventData: pointer to the event information structure
16941
16942 @see
16943 @return Result of the function call
16944*/
16945WDI_Status
16946WDI_ProcessTsmStatsRsp
16947(
16948 WDI_ControlBlockType* pWDICtx,
16949 WDI_EventInfoType* pEventData
16950)
16951{
16952 WDI_TsmRspCb wdiTsmStatsRspCb;
16953 tTsmStatsRspMsg halTsmStatsRspMsg;
16954 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16955 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16956
16957 /*-------------------------------------------------------------------------
16958 Sanity check
16959 -------------------------------------------------------------------------*/
16960 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16961 ( NULL == pEventData->pEventData))
16962 {
16963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016964 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016965 WDI_ASSERT(0);
16966 return WDI_STATUS_E_FAILURE;
16967 }
16968
16969 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16970
16971 /*-------------------------------------------------------------------------
16972 Unpack HAL Response Message - the header was already extracted by the
16973 main Response Handling procedure
16974 -------------------------------------------------------------------------*/
16975 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16976 pEventData->pEventData,
16977 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16978
16979 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16980 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16981 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16982 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16983 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16984 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16985 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16986 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16987 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16988 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16989 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16990 halTsmStatsRspMsg.tsmStatsRspParams.status);
16991
16992 /*Notify UMAC*/
16993 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16994
16995 return WDI_STATUS_SUCCESS;
16996}/*WDI_ProcessTsmStatsRsp*/
16997
16998#endif
16999
17000
17001
17002/**
17003 @brief Process Flush AC Rsp function (called when a response
17004 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017005
17006 @param pWDICtx: pointer to the WLAN DAL context
17007 pEventData: pointer to the event information structure
17008
Jeff Johnson295189b2012-06-20 16:38:30 -070017009 @see
17010 @return Result of the function call
17011*/
17012WDI_Status
17013WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017014(
Jeff Johnson295189b2012-06-20 16:38:30 -070017015 WDI_ControlBlockType* pWDICtx,
17016 WDI_EventInfoType* pEventData
17017)
17018{
17019 WDI_Status wdiStatus;
17020 eHalStatus halStatus;
17021 WDI_FlushAcRspCb wdiFlushAcRspCb;
17022 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17023
17024 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017025 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017026 -------------------------------------------------------------------------*/
17027 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17028 ( NULL == pEventData->pEventData))
17029 {
17030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017031 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017032 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017033 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017034 }
17035
17036 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17037
17038 /*-------------------------------------------------------------------------
17039 Extract response and send it to UMAC
17040 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017041 wpalMemoryCopy( &halStatus,
17042 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017043 sizeof(halStatus));
17044
Jeff Johnsone7245742012-09-05 17:12:55 -070017045 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017046
17047 /*Notify UMAC*/
17048 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17049
Jeff Johnsone7245742012-09-05 17:12:55 -070017050 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017051}/*WDI_ProcessFlushAcRsp*/
17052
17053/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017054 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017055 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017056
17057 @param pWDICtx: pointer to the WLAN DAL context
17058 pEventData: pointer to the event information structure
17059
Jeff Johnson295189b2012-06-20 16:38:30 -070017060 @see
17061 @return Result of the function call
17062*/
17063WDI_Status
17064WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017065(
Jeff Johnson295189b2012-06-20 16:38:30 -070017066 WDI_ControlBlockType* pWDICtx,
17067 WDI_EventInfoType* pEventData
17068)
17069{
17070 WDI_Status wdiStatus;
17071 eHalStatus halStatus;
17072 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17073 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17074
17075 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017076 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017077 -------------------------------------------------------------------------*/
17078 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17079 ( NULL == pEventData->pEventData))
17080 {
17081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017082 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017083 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017084 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017085 }
17086
17087 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17088
17089 /*-------------------------------------------------------------------------
17090 Extract response and send it to UMAC
17091 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017092 wpalMemoryCopy( &halStatus,
17093 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017094 sizeof(halStatus));
17095
Jeff Johnsone7245742012-09-05 17:12:55 -070017096 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017097
17098 /*Notify UMAC*/
17099 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17100
Jeff Johnsone7245742012-09-05 17:12:55 -070017101 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017102}/*WDI_ProcessBtAmpEventRsp*/
17103
17104
17105/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017106 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017107 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017108
17109 @param pWDICtx: pointer to the WLAN DAL context
17110 pEventData: pointer to the event information structure
17111
Jeff Johnson295189b2012-06-20 16:38:30 -070017112 @see
17113 @return Result of the function call
17114*/
17115WDI_Status
17116WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017117(
Jeff Johnson295189b2012-06-20 16:38:30 -070017118 WDI_ControlBlockType* pWDICtx,
17119 WDI_EventInfoType* pEventData
17120)
17121{
17122 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
17123 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17124 tAddStaSelfRspMsg halAddStaSelfRsp;
17125 WDI_AddStaParams wdiAddSTAParam = {0};
17126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17127
17128 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017129 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017130 -------------------------------------------------------------------------*/
17131 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17132 ( NULL == pEventData->pEventData))
17133 {
17134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017135 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017136 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017137 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017138 }
17139
Jeff Johnsone7245742012-09-05 17:12:55 -070017140 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017141 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17142
17143 /*-------------------------------------------------------------------------
17144 Extract response and send it to UMAC
17145 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017146 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17147 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017148 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17149
17150
Jeff Johnsone7245742012-09-05 17:12:55 -070017151 wdiAddSTASelfParams.wdiStatus =
17152 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017153
Jeff Johnsone7245742012-09-05 17:12:55 -070017154 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017155 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017156 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017157 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017158 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017159 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17160
17161 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17162 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17163 WDI_MAC_ADDR_LEN);
17164
17165
17166#ifdef HAL_SELF_STA_PER_BSS
17167
17168 /* At this point add the self-STA */
17169
17170 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17171 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17172 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17173
17174 //all DPU indices are the same for self STA
17175
17176 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017177 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017178 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17179 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17180 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17181 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17182 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17183
17184 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17185 WDI_MAC_ADDR_LEN);
17186
17187 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17188 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17189
Jeff Johnsone7245742012-09-05 17:12:55 -070017190 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017191 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17192 {
17193 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17194 }
17195#endif
17196
17197 /*Notify UMAC*/
17198 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17199
Jeff Johnsone7245742012-09-05 17:12:55 -070017200 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017201}/*WDI_ProcessAddSTASelfRsp*/
17202
17203
17204
17205/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017206 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017207 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017208
17209 @param pWDICtx: pointer to the WLAN DAL context
17210 pEventData: pointer to the event information structure
17211
Jeff Johnson295189b2012-06-20 16:38:30 -070017212 @see
17213 @return Result of the function call
17214*/
17215WDI_Status
17216WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017217(
Jeff Johnson295189b2012-06-20 16:38:30 -070017218 WDI_ControlBlockType* pWDICtx,
17219 WDI_EventInfoType* pEventData
17220)
17221{
17222 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17223 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17224 tDelStaSelfRspParams delStaSelfRspParams;
17225 wpt_uint8 ucStaIdx;
17226
17227 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17228
17229 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017230 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017231 -------------------------------------------------------------------------*/
17232 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17233 ( NULL == pEventData->pEventData))
17234 {
17235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017236 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017237 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017238 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017239 }
17240
17241 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17242
17243 /*-------------------------------------------------------------------------
17244 Extract response and send it to UMAC
17245 -------------------------------------------------------------------------*/
17246
Jeff Johnsone7245742012-09-05 17:12:55 -070017247 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017248 (wpt_uint8*)pEventData->pEventData,
17249 sizeof(tDelStaSelfRspParams));
17250
Jeff Johnsone7245742012-09-05 17:12:55 -070017251 wdiDelStaSelfRspParams.wdiStatus =
17252 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017253
Jeff Johnsone7245742012-09-05 17:12:55 -070017254 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017255 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17256 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17257 {
17258 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017259 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017260 delStaSelfRspParams.selfMacAddr,
17261 &ucStaIdx);
17262 if(WDI_STATUS_E_FAILURE == wdiStatus)
17263 {
17264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017265 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017266 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017267 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017268 }
17269 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17270 }
17271
17272 /*Notify UMAC*/
17273 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17274
17275 return WDI_STATUS_SUCCESS;
17276}
17277
Jeff Johnsone7245742012-09-05 17:12:55 -070017278#ifdef FEATURE_OEM_DATA_SUPPORT
17279/**
17280 @brief Start Oem Data Rsp function (called when a
17281 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017282
Jeff Johnsone7245742012-09-05 17:12:55 -070017283 @param pWDICtx: pointer to the WLAN DAL context
17284 pEventData: pointer to the event information structure
17285
17286 @see
17287 @return Result of the function call
17288*/
17289#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
17290
17291WDI_Status
17292WDI_ProcessStartOemDataRsp
17293(
17294 WDI_ControlBlockType* pWDICtx,
17295 WDI_EventInfoType* pEventData
17296)
17297{
17298 WDI_oemDataRspCb wdiOemDataRspCb;
17299 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17300 tStartOemDataRspParams* halStartOemDataRspParams;
17301
17302 /*-------------------------------------------------------------------------
17303 Sanity check
17304 -------------------------------------------------------------------------*/
17305 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17306 ( NULL == pEventData->pEventData))
17307 {
17308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017309 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017310 WDI_ASSERT(0);
17311 return WDI_STATUS_E_FAILURE;
17312 }
17313
17314 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17315
17316 /*-------------------------------------------------------------------------
17317 Extract response and send it to UMAC
17318 -------------------------------------------------------------------------*/
17319 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17320
17321
17322 //It is the responsibility of the application code to check for failure
17323 //conditions!
17324
17325 //Allocate memory for WDI OEM DATA RSP structure
17326 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17327
17328 if(NULL == wdiOemDataRspParams)
17329 {
17330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080017331 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070017332 pWDICtx, pEventData, pEventData->pEventData);
17333 WDI_ASSERT(0);
17334 return WDI_STATUS_E_FAILURE;
17335 }
17336
17337 /* Populate WDI structure members */
17338 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17339
17340 /*Notify UMAC*/
17341 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17342
17343 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17344 wpalMemoryFree(wdiOemDataRspParams);
17345
17346 return WDI_STATUS_SUCCESS;
17347}/*WDI_PrcoessStartOemDataRsp*/
17348#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017349
17350/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017351 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017352===========================================================================*/
17353
17354/**
17355 @brief Process Channel Switch Rsp function (called when a response
17356 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017357
17358 @param pWDICtx: pointer to the WLAN DAL context
17359 pEventData: pointer to the event information structure
17360
Jeff Johnson295189b2012-06-20 16:38:30 -070017361 @see
17362 @return Result of the function call
17363*/
17364WDI_Status
17365WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017366(
Jeff Johnson295189b2012-06-20 16:38:30 -070017367 WDI_ControlBlockType* pWDICtx,
17368 WDI_EventInfoType* pEventData
17369)
17370{
17371 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17372 WDI_SwitchChRspCb wdiChSwitchRspCb;
17373 tSwitchChannelRspParams halSwitchChannelRsp;
17374 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17375
17376 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017377 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017378 -------------------------------------------------------------------------*/
17379 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17380 ( NULL == pEventData->pEventData))
17381 {
17382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017383 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017384 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017385 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017386 }
17387
17388 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17389
17390 /*-------------------------------------------------------------------------
17391 Extract response and send it to UMAC
17392 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017393 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017394 (wpt_uint8*)pEventData->pEventData,
17395 sizeof(halSwitchChannelRsp));
17396
Jeff Johnsone7245742012-09-05 17:12:55 -070017397 wdiSwitchChRsp.wdiStatus =
17398 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017399 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17400
17401#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017402 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017403#endif
17404
17405 /*Notify UMAC*/
17406 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17407
Jeff Johnsone7245742012-09-05 17:12:55 -070017408 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017409}/*WDI_ProcessChannelSwitchRsp*/
17410
17411
17412/**
17413 @brief Process Config STA Rsp function (called when a response
17414 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017415
17416 @param pWDICtx: pointer to the WLAN DAL context
17417 pEventData: pointer to the event information structure
17418
Jeff Johnson295189b2012-06-20 16:38:30 -070017419 @see
17420 @return Result of the function call
17421*/
17422WDI_Status
17423WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017424(
Jeff Johnson295189b2012-06-20 16:38:30 -070017425 WDI_ControlBlockType* pWDICtx,
17426 WDI_EventInfoType* pEventData
17427)
17428{
17429 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
17430 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17431 WDI_AddStaParams wdiAddSTAParam;
17432
17433 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017434 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017435
Jeff Johnsone7245742012-09-05 17:12:55 -070017436 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17438
17439 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017440 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017441 -------------------------------------------------------------------------*/
17442 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17443 ( NULL == pEventData->pEventData))
17444 {
17445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017446 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017447 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017448 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017449 }
17450
17451 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
17452
17453 /*-------------------------------------------------------------------------
17454 Extract response and send it to UMAC
17455 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017456 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
17457 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017458 sizeof(halConfigStaRsp.configStaRspParams));
17459
17460
17461 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
17462 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
17463 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17464 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
17465 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
17466
17467 /* MAC Address of STA - take from cache as it does not come back in the
17468 response*/
17469 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070017470 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017471 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017472
17473 wdiCfgSTAParams.wdiStatus =
17474 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017475
17476 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17477 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17478 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17479
17480 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17481 {
17482 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17483 {
17484 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017485 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017486 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17487 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017488
Jeff Johnson295189b2012-06-20 16:38:30 -070017489 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017490 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017491 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017492 wdiAddSTAParam.ucHTCapable =
17493 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17494 wdiAddSTAParam.ucStaType =
17495 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070017496 wdiAddSTAParam.ucRmfEnabled =
17497 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017498
Jeff Johnson295189b2012-06-20 16:38:30 -070017499 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017500 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17501 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017502 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017503
17504 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17505 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17506 WDI_MAC_ADDR_LEN);
17507
17508 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17509 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17510 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017511
17512 if ( NULL == pBSSSes )
17513 {
17514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17515 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017516
Jeff Johnson295189b2012-06-20 16:38:30 -070017517 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017518 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017519 }
17520
17521 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017522 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017523 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017524 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017525 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017526 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017527 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017528 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017529 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017530 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017531
Jeff Johnson295189b2012-06-20 16:38:30 -070017532 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17533 }
17534 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17535 {
17536 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17537
Jeff Johnsone7245742012-09-05 17:12:55 -070017538 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017539 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017540 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017541 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017542 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017543 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017544 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017545 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017546 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017547 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017548 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017549 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017550 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017551 halConfigStaRsp.configStaRspParams.ucUcastSig;
17552 }
17553 }
17554
17555 /*Notify UMAC*/
17556 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17557
Jeff Johnsone7245742012-09-05 17:12:55 -070017558 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017559}/*WDI_ProcessConfigStaRsp*/
17560
17561
17562/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017563 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017564 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017565
17566 @param pWDICtx: pointer to the WLAN DAL context
17567 pEventData: pointer to the event information structure
17568
Jeff Johnson295189b2012-06-20 16:38:30 -070017569 @see
17570 @return Result of the function call
17571*/
17572WDI_Status
17573WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017574(
Jeff Johnson295189b2012-06-20 16:38:30 -070017575 WDI_ControlBlockType* pWDICtx,
17576 WDI_EventInfoType* pEventData
17577)
17578{
17579 WDI_Status wdiStatus;
17580 eHalStatus halStatus;
17581 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17582
17583 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017584 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17586
17587 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017588 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017589 -------------------------------------------------------------------------*/
17590 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17591 ( NULL == pEventData->pEventData))
17592 {
17593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017594 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017595 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017596 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017597 }
17598
17599 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17600
17601 wpalMutexAcquire(&pWDICtx->wptMutex);
17602
17603 /*If the link is being transitioned to idle - the BSS is to be deleted
17604 - this type of ending a session is possible when UMAC has failed an
17605 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017606 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017607 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17608 {
17609 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017610 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017611 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017612 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17613 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17614 &pBSSSes);
17615
Jeff Johnson295189b2012-06-20 16:38:30 -070017616 /*-----------------------------------------------------------------------
17617 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017618 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017619 -----------------------------------------------------------------------*/
17620 if ( NULL == pBSSSes )
17621 {
17622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17623 "Set link response received outside association session");
17624 }
17625 else
17626 {
17627 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17628 will be del BSS coming after this to stop the beaconing & cleaning up the
17629 sessions*/
17630 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17631 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17632 {
17633 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017634 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017635 -----------------------------------------------------------------------*/
17636 WDI_DeleteSession(pWDICtx, pBSSSes);
17637
17638 /*-----------------------------------------------------------------------
17639 Check to see if this association is in progress - if so disable the
17640 flag as this has ended
17641 -----------------------------------------------------------------------*/
17642 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017643 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017644 /*Association no longer in progress */
17645 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17646 /*Association no longer in progress - prepare pending assoc for processing*/
17647 WDI_DequeueAssocRequest(pWDICtx);
17648 }
17649 }
17650 }
17651 }
17652 /* If the link state has been set to POST ASSOC, reset the "association in
17653 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017654 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017655 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17656 {
17657 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17658 WDI_DequeueAssocRequest(pWDICtx);
17659 }
17660
17661 wpalMutexRelease(&pWDICtx->wptMutex);
17662
17663 /*-------------------------------------------------------------------------
17664 Extract response and send it to UMAC
17665 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017666 wpalMemoryCopy( &halStatus,
17667 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017668 sizeof(halStatus));
17669
Jeff Johnsone7245742012-09-05 17:12:55 -070017670 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017671
17672 /*Notify UMAC*/
17673 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17674
Jeff Johnsone7245742012-09-05 17:12:55 -070017675 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017676}/*WDI_ProcessSetLinkStateRsp*/
17677
17678/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017679 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017680 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017681
17682 @param pWDICtx: pointer to the WLAN DAL context
17683 pEventData: pointer to the event information structure
17684
Jeff Johnson295189b2012-06-20 16:38:30 -070017685 @see
17686 @return Result of the function call
17687*/
17688WDI_Status
17689WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017690(
Jeff Johnson295189b2012-06-20 16:38:30 -070017691 WDI_ControlBlockType* pWDICtx,
17692 WDI_EventInfoType* pEventData
17693)
17694{
17695 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17696 WDI_GetStatsRspCb wdiGetStatsRspCb;
17697 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017698
Jeff Johnson295189b2012-06-20 16:38:30 -070017699 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17700
17701 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017702 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017703 -------------------------------------------------------------------------*/
17704 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17705 ( NULL == pEventData->pEventData))
17706 {
17707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017708 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017711 }
17712
17713 /*-------------------------------------------------------------------------
17714 Extract response and send it to UMAC
17715 -------------------------------------------------------------------------*/
17716 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17717
17718 /*allocate the stats response buffer */
17719 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17720 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17721 + sizeof(WDI_GetStatsRspParamsType));
17722
17723 if(NULL == wdiGetStatsRsp)
17724 {
17725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080017726 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070017727 pWDICtx, pEventData, pEventData->pEventData);
17728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017730 }
17731
17732 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17733
17734 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17735 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17736 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17737 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17738 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17739 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17740
17741 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17742 wpalMemoryCopy(wdiGetStatsRsp + 1,
17743 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17744 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17745
17746 /*Notify UMAC*/
17747 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17748
17749 wpalMemoryFree(wdiGetStatsRsp);
17750
Jeff Johnsone7245742012-09-05 17:12:55 -070017751 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017752}/*WDI_ProcessGetStatsRsp*/
17753
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080017754#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17755/**
17756 @brief Process Get Roam Rssi Rsp function (called when a response is
17757 being received over the bus from HAL)
17758
17759 @param pWDICtx: pointer to the WLAN DAL context
17760 pEventData: pointer to the event information structure
17761
17762 @see
17763 @return Result of the function call
17764*/
17765WDI_Status
17766WDI_ProcessGetRoamRssiRsp
17767(
17768 WDI_ControlBlockType* pWDICtx,
17769 WDI_EventInfoType* pEventData
17770)
17771{
17772 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17773 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17774 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17775 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17776
17777 /*-------------------------------------------------------------------------
17778 Sanity check
17779 -------------------------------------------------------------------------*/
17780 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17781 ( NULL == pEventData->pEventData))
17782 {
17783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17784 "%s: Invalid parameters", __func__);
17785 WDI_ASSERT(0);
17786 return WDI_STATUS_E_FAILURE;
17787 }
17788
17789 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17790 if(NULL == wdiGetRoamRssiRspCb)
17791 {
17792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17793 "%s: call back function is NULL", __func__);
17794 WDI_ASSERT(0);
17795 return WDI_STATUS_E_FAILURE;
17796 }
17797
17798 /*-------------------------------------------------------------------------
17799 Extract response and send it to UMAC
17800 -------------------------------------------------------------------------*/
17801 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17802 pEventData->pEventData,
17803 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17804
17805 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17806 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17807 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17808
17809 /*Notify UMAC*/
17810 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17811
17812 return WDI_STATUS_SUCCESS;
17813}/*WDI_ProcessGetRoamRssiRsp*/
17814#endif
17815
Jeff Johnson295189b2012-06-20 16:38:30 -070017816
17817/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017818 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017819 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017820
17821 @param pWDICtx: pointer to the WLAN DAL context
17822 pEventData: pointer to the event information structure
17823
Jeff Johnson295189b2012-06-20 16:38:30 -070017824 @see
17825 @return Result of the function call
17826*/
17827WDI_Status
17828WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017829(
Jeff Johnson295189b2012-06-20 16:38:30 -070017830 WDI_ControlBlockType* pWDICtx,
17831 WDI_EventInfoType* pEventData
17832)
17833{
17834 WDI_Status wdiStatus;
17835 eHalStatus halStatus;
17836 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17838
17839 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017840 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017841 -------------------------------------------------------------------------*/
17842 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17843 ( NULL == pEventData->pEventData))
17844 {
17845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017846 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017847 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017848 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017849 }
17850
17851 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17852
17853 /*-------------------------------------------------------------------------
17854 Extract response and send it to UMAC
17855 -------------------------------------------------------------------------*/
17856 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017857 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017858
17859 /*Notify UMAC*/
17860 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17861
Jeff Johnsone7245742012-09-05 17:12:55 -070017862 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017863}/*WDI_ProcessUpdateCfgRsp*/
17864
17865
17866
17867/**
17868 @brief Process Add BA Rsp function (called when a response
17869 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017870
17871 @param pWDICtx: pointer to the WLAN DAL context
17872 pEventData: pointer to the event information structure
17873
Jeff Johnson295189b2012-06-20 16:38:30 -070017874 @see
17875 @return Result of the function call
17876*/
17877WDI_Status
17878WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017879(
Jeff Johnson295189b2012-06-20 16:38:30 -070017880 WDI_ControlBlockType* pWDICtx,
17881 WDI_EventInfoType* pEventData
17882)
17883{
17884 WDI_AddBARspCb wdiAddBARspCb;
17885
17886 tAddBARspParams halAddBARsp;
17887 WDI_AddBARspinfoType wdiAddBARsp;
17888
17889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17890
17891 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017892 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017893 -------------------------------------------------------------------------*/
17894 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17895 ( NULL == pEventData->pEventData))
17896 {
17897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017898 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017899 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017901 }
17902
17903 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17904
17905 /*-------------------------------------------------------------------------
17906 Extract response and send it to UMAC
17907 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017908 wpalMemoryCopy( &halAddBARsp,
17909 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017910 sizeof(halAddBARsp));
17911
17912 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17913
Jeff Johnson43971f52012-07-17 12:26:56 -070017914 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017915 {
17916 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17917 }
17918
17919 /*Notify UMAC*/
17920 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17921
Jeff Johnsone7245742012-09-05 17:12:55 -070017922 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017923}/*WDI_ProcessAddSessionBARsp*/
17924
17925/**
17926 @brief Process Add BA Rsp function (called when a response
17927 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017928
17929 @param pWDICtx: pointer to the WLAN DAL context
17930 pEventData: pointer to the event information structure
17931
Jeff Johnson295189b2012-06-20 16:38:30 -070017932 @see
17933 @return Result of the function call
17934*/
17935WDI_Status
17936WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017937(
Jeff Johnson295189b2012-06-20 16:38:30 -070017938 WDI_ControlBlockType* pWDICtx,
17939 WDI_EventInfoType* pEventData
17940)
17941{
17942 WDI_TriggerBARspCb wdiTriggerBARspCb;
17943
17944 tTriggerBARspParams* halTriggerBARsp;
17945 tTriggerBaRspCandidate* halBaCandidate;
17946 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17947 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17948 wpt_uint16 index;
17949 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070017950 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17952
17953 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017954 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017955 -------------------------------------------------------------------------*/
17956 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17957 ( NULL == pEventData->pEventData))
17958 {
17959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017960 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017962 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017963 }
17964
17965 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17966
17967 /*-------------------------------------------------------------------------
17968 Extract response and send it to UMAC
17969 -------------------------------------------------------------------------*/
17970 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17971
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070017972 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17973
17974 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17975 {
17976 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017977 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017978 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017979
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070017980 if(NULL == wdiTriggerBARsp)
17981 {
17982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080017983 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070017984 pWDICtx, pEventData, pEventData->pEventData);
17985 WDI_ASSERT(0);
17986 return WDI_STATUS_E_FAILURE;
17987 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017988
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070017989 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17990
Jeff Johnson295189b2012-06-20 16:38:30 -070017991 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017992 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017993 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17994
17995 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17996 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17997
17998 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17999 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018000 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018001 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
18002 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
18003 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018004 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070018005 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018006 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018007 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18008 }
18009 wdiTriggerBARspCandidate++;
18010 halBaCandidate++;
18011 }
18012 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018013 else
18014 {
18015 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18016
18017 if(NULL == wdiTriggerBARsp)
18018 {
18019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018020 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018021 pWDICtx, pEventData, pEventData->pEventData);
18022 WDI_ASSERT(0);
18023 return WDI_STATUS_E_FAILURE;
18024 }
18025
18026 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18027
18028 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018029
18030 /*Notify UMAC*/
18031 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18032
18033 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018034 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018035}/*WDI_ProcessAddSessionBARsp*/
18036
18037/**
18038 @brief Process Update Beacon Params Rsp function (called when a response
18039 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018040
18041 @param pWDICtx: pointer to the WLAN DAL context
18042 pEventData: pointer to the event information structure
18043
Jeff Johnson295189b2012-06-20 16:38:30 -070018044 @see
18045 @return Result of the function call
18046*/
18047WDI_Status
18048WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018049(
Jeff Johnson295189b2012-06-20 16:38:30 -070018050 WDI_ControlBlockType* pWDICtx,
18051 WDI_EventInfoType* pEventData
18052)
18053{
18054 WDI_Status wdiStatus;
18055 eHalStatus halStatus;
18056 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
18057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18058
18059 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018060 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018061 -------------------------------------------------------------------------*/
18062 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18063 ( NULL == pEventData->pEventData))
18064 {
18065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018066 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018067 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018068 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018069 }
18070
18071 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18072
18073 /*-------------------------------------------------------------------------
18074 Extract response and send it to UMAC
18075 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018076 wpalMemoryCopy( &halStatus,
18077 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018078 sizeof(halStatus));
18079
Jeff Johnsone7245742012-09-05 17:12:55 -070018080 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018081
18082 /*Notify UMAC*/
18083 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18084
Jeff Johnsone7245742012-09-05 17:12:55 -070018085 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018086}/*WDI_ProcessUpdateBeaconParamsRsp*/
18087
18088/**
18089 @brief Process Send Beacon template Rsp function (called when a response
18090 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018091
18092 @param pWDICtx: pointer to the WLAN DAL context
18093 pEventData: pointer to the event information structure
18094
Jeff Johnson295189b2012-06-20 16:38:30 -070018095 @see
18096 @return Result of the function call
18097*/
18098WDI_Status
18099WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018100(
Jeff Johnson295189b2012-06-20 16:38:30 -070018101 WDI_ControlBlockType* pWDICtx,
18102 WDI_EventInfoType* pEventData
18103)
18104{
18105 WDI_Status wdiStatus;
18106 eHalStatus halStatus;
18107 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18108 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18109
18110 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018111 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018112 -------------------------------------------------------------------------*/
18113 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18114 ( NULL == pEventData->pEventData))
18115 {
18116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018117 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018118 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018119 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018120 }
18121
18122 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18123
18124 /*-------------------------------------------------------------------------
18125 Extract response and send it to UMAC
18126 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018127 wpalMemoryCopy( &halStatus,
18128 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018129 sizeof(halStatus));
18130
Jeff Johnsone7245742012-09-05 17:12:55 -070018131 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018132
18133 /*Notify UMAC*/
18134 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18135
Jeff Johnsone7245742012-09-05 17:12:55 -070018136 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018137}/*WDI_ProcessSendBeaconParamsRsp*/
18138
Jeff Johnsone7245742012-09-05 17:12:55 -070018139
Jeff Johnson295189b2012-06-20 16:38:30 -070018140/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018141 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018142 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018143
18144 @param pWDICtx: pointer to the WLAN DAL context
18145 pEventData: pointer to the event information structure
18146
Jeff Johnson295189b2012-06-20 16:38:30 -070018147 @see
18148 @return Result of the function call
18149*/
18150WDI_Status
18151WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018152(
Jeff Johnson295189b2012-06-20 16:38:30 -070018153 WDI_ControlBlockType* pWDICtx,
18154 WDI_EventInfoType* pEventData
18155)
18156{
18157 WDI_Status wdiStatus;
18158 eHalStatus halStatus;
18159 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
18160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18161
18162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018163 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018164 -------------------------------------------------------------------------*/
18165 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18166 ( NULL == pEventData->pEventData))
18167 {
18168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018169 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018170 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018171 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018172 }
18173
18174 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18175
18176 /*-------------------------------------------------------------------------
18177 Extract response and send it to UMAC
18178 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018179 wpalMemoryCopy( &halStatus,
18180 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018181 sizeof(halStatus));
18182
Jeff Johnsone7245742012-09-05 17:12:55 -070018183 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018184
18185 /*Notify UMAC*/
18186 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18187
Jeff Johnsone7245742012-09-05 17:12:55 -070018188 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018189}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18190
18191 /**
18192 @brief Process Set Max Tx Power Rsp function (called when a response
18193 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018194
18195 @param pWDICtx: pointer to the WLAN DAL context
18196 pEventData: pointer to the event information structure
18197
Jeff Johnson295189b2012-06-20 16:38:30 -070018198 @see
18199 @return Result of the function call
18200*/
18201WDI_Status
18202WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018203(
Jeff Johnson295189b2012-06-20 16:38:30 -070018204 WDI_ControlBlockType* pWDICtx,
18205 WDI_EventInfoType* pEventData
18206)
18207{
18208 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018209
Jeff Johnson295189b2012-06-20 16:38:30 -070018210 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018211
Jeff Johnson295189b2012-06-20 16:38:30 -070018212 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18214
18215 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018216 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018217 -------------------------------------------------------------------------*/
18218 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18219 ( NULL == pEventData->pEventData))
18220 {
18221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018222 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018223 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018224 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018225 }
18226
18227 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18228
18229 /*-------------------------------------------------------------------------
18230 Extract response and send it to UMAC
18231 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018232 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18233 pEventData->pEventData,
18234 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018235
18236 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18237 {
18238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18239 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018240 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018241 }
18242
Jeff Johnsone7245742012-09-05 17:12:55 -070018243 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018244 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018245 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018246
18247 /*Notify UMAC*/
18248 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18249
Jeff Johnsone7245742012-09-05 17:12:55 -070018250 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018251}
18252
schang86c22c42013-03-13 18:41:24 -070018253 /**
18254 @brief Process Set Tx Power Rsp function (called when a response
18255 is being received over the bus from HAL)
18256
18257 @param pWDICtx: pointer to the WLAN DAL context
18258 pEventData: pointer to the event information structure
18259
18260 @see
18261 @return Result of the function call
18262*/
18263WDI_Status
18264WDI_ProcessSetTxPowerRsp
18265(
18266 WDI_ControlBlockType* pWDICtx,
18267 WDI_EventInfoType* pEventData
18268)
18269{
18270 tSetTxPwrRspMsg halTxpowerrsp;
18271 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18272 WDA_SetTxPowerRspCb wdiReqStatusCb;
18273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18274
18275 /*-------------------------------------------------------------------------
18276 Sanity check
18277 -------------------------------------------------------------------------*/
18278 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18279 ( NULL == pEventData->pEventData))
18280 {
18281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18282 "%s: Invalid parameters", __func__);
18283 WDI_ASSERT(0);
18284 return WDI_STATUS_E_FAILURE;
18285 }
18286
18287 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18288
18289 /*-------------------------------------------------------------------------
18290 Extract response and send it to UMAC
18291 -------------------------------------------------------------------------*/
18292 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18293 pEventData->pEventData,
18294 sizeof(halTxpowerrsp.setTxPwrRspParams));
18295
18296 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18297 {
18298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18299 "Error status returned in Set Tx Power Response ");
18300 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18301 return WDI_STATUS_E_FAILURE;
18302 }
18303
18304 wdiSetTxPowerRspMsg.wdiStatus =
18305 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18306
18307 /*Notify UMAC*/
18308 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18309
18310 return WDI_STATUS_SUCCESS;
18311}
Arif Hussain935a8fb2014-01-31 12:12:28 -080018312
18313/**
18314 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
18315 is being received over the bus from HAL)
18316
18317 @param pWDICtx: pointer to the WLAN DAL context
18318 pEventData: pointer to the event information structure
18319
18320 @see
18321 @return Result of the function call
18322*/
18323WDI_Status
18324WDI_ProcessSetMaxTxPowerPerBandRsp
18325(
18326 WDI_ControlBlockType* pWDICtx,
18327 WDI_EventInfoType* pEventData
18328)
18329{
18330 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
18331 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
18332 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
18333 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18334
18335 /*-------------------------------------------------------------------------
18336 Sanity check
18337 -------------------------------------------------------------------------*/
18338 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18339 ( NULL == pEventData->pEventData))
18340 {
18341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18342 "%s: Invalid parameters", __func__);
18343 WDI_ASSERT(0);
18344 return WDI_STATUS_E_FAILURE;
18345 }
18346
18347 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
18348
18349 /*-------------------------------------------------------------------------
18350 Extract response and send it to UMAC
18351 -------------------------------------------------------------------------*/
18352 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
18353 pEventData->pEventData,
18354 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
18355
18356 if (eHAL_STATUS_SUCCESS !=
18357 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
18358 {
18359 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18360 "Error status returned in Set Max Tx Power Per Band Response");
18361 return WDI_STATUS_E_FAILURE;
18362 }
18363
18364 wdiSetTxPowerPerBandRspMsg.wdiStatus =
18365 WDI_HAL_2_WDI_STATUS(
18366 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
18367
18368 /* Notify UMAC */
18369 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
18370
18371 return WDI_STATUS_SUCCESS;
18372}
18373
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018374#ifdef FEATURE_WLAN_TDLS
18375/**
18376 @brief Process TDLS Link Establish Rsp function (called
18377 when a response is being received over the bus from HAL)
18378
18379 @param pWDICtx: pointer to the WLAN DAL context
18380 pEventData: pointer to the event information structure
18381
18382 @see
18383 @return Result of the function call
18384*/
18385WDI_Status
18386WDI_ProcessLinkEstablishReqRsp
18387(
18388 WDI_ControlBlockType* pWDICtx,
18389 WDI_EventInfoType* pEventData
18390)
18391{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018392 eHalStatus halStatus;
18393 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018394 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18395 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18396
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018397 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18398
18399 /*-------------------------------------------------------------------------
18400 Sanity check
18401 -------------------------------------------------------------------------*/
18402 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18403 ( NULL == pEventData->pEventData))
18404 {
18405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18406 "%s: Invalid parameters", __func__);
18407 WDI_ASSERT(0);
18408 return WDI_STATUS_E_FAILURE;
18409 }
18410
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018411 /*-------------------------------------------------------------------------
18412 Extract indication and send it to UMAC
18413 -------------------------------------------------------------------------*/
18414 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18415 pEventData->pEventData,
18416 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18417
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018418 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18419
18420 /*-------------------------------------------------------------------------
18421 Extract response and send it to UMAC
18422 -------------------------------------------------------------------------*/
18423 wpalMemoryCopy( &halStatus,
18424 pEventData->pEventData,
18425 sizeof(halStatus));
18426
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018427 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18428 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018429
18430 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018431 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018432
18433 return WDI_STATUS_SUCCESS;
18434}/*WDI_ProcessLinkEstablishReqRsp*/
18435#endif
schang86c22c42013-03-13 18:41:24 -070018436
Jeff Johnson295189b2012-06-20 16:38:30 -070018437/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018438 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018439 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018440
18441 @param pWDICtx: pointer to the WLAN DAL context
18442 pEventData: pointer to the event information structure
18443
Jeff Johnson295189b2012-06-20 16:38:30 -070018444 @see
18445 @return Result of the function call
18446*/
18447WDI_Status
18448WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018449(
Jeff Johnson295189b2012-06-20 16:38:30 -070018450 WDI_ControlBlockType* pWDICtx,
18451 WDI_EventInfoType* pEventData
18452)
18453{
18454 WDI_Status wdiStatus;
18455 eHalStatus halStatus;
18456 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
18457 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18458
18459 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018460 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018461 -------------------------------------------------------------------------*/
18462 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18463 ( NULL == pEventData->pEventData))
18464 {
18465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018466 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018467 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018468 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018469 }
18470
18471 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
18472
18473 /*-------------------------------------------------------------------------
18474 Extract response and send it to UMAC
18475 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018476 wpalMemoryCopy( &halStatus,
18477 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018478 sizeof(halStatus));
18479
Jeff Johnsone7245742012-09-05 17:12:55 -070018480 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018481
18482 /*Notify UMAC*/
18483 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18484
Jeff Johnsone7245742012-09-05 17:12:55 -070018485 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018486}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018487/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018488 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018489 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018490
18491 @param pWDICtx: pointer to the WLAN DAL context
18492 pEventData: pointer to the event information structure
18493
Jeff Johnson295189b2012-06-20 16:38:30 -070018494 @see
18495 @return Result of the function call
18496*/
18497WDI_Status
18498WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018499(
Jeff Johnson295189b2012-06-20 16:38:30 -070018500 WDI_ControlBlockType* pWDICtx,
18501 WDI_EventInfoType* pEventData
18502)
18503{
18504 WDI_Status wdiStatus;
18505 eHalStatus halStatus;
18506 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080018507 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18509
18510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018511 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018512 -------------------------------------------------------------------------*/
18513 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18514 ( NULL == pEventData->pEventData))
18515 {
18516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018517 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018518 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018520 }
18521
18522 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
18523
18524 /*-------------------------------------------------------------------------
18525 Extract response and send it to UMAC
18526 -------------------------------------------------------------------------*/
18527 halStatus = *((eHalStatus*)pEventData->pEventData);
18528
Jeff Johnsone7245742012-09-05 17:12:55 -070018529 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018530
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018531 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
18532 * Other module states are taken care by PMC.
18533 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
18534 */
18535 if (wdiStatus != WDI_STATUS_SUCCESS) {
18536
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18538 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
18539 halStatus);
18540 /* Call Back is not required as we are putting the DXE in FULL
18541 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080018542 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18543
18544 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
18545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080018546 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080018547 WDI_ASSERT(0);
18548 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018549 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018550 /*Notify UMAC*/
18551 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18552
Jeff Johnsone7245742012-09-05 17:12:55 -070018553 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018554}/*WDI_ProcessEnterImpsRsp*/
18555
18556/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018557 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018558 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018559
18560 @param pWDICtx: pointer to the WLAN DAL context
18561 pEventData: pointer to the event information structure
18562
Jeff Johnson295189b2012-06-20 16:38:30 -070018563 @see
18564 @return Result of the function call
18565*/
18566WDI_Status
18567WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018568(
Jeff Johnson295189b2012-06-20 16:38:30 -070018569 WDI_ControlBlockType* pWDICtx,
18570 WDI_EventInfoType* pEventData
18571)
18572{
18573 WDI_Status wdiStatus;
18574 eHalStatus halStatus;
18575 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080018576 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18578
18579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018581 -------------------------------------------------------------------------*/
18582 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18583 ( NULL == pEventData->pEventData))
18584 {
18585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018586 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018587 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018588 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018589 }
18590
18591 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18592
18593 /*-------------------------------------------------------------------------
18594 Extract response and send it to UMAC
18595 -------------------------------------------------------------------------*/
18596 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018597 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018598
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053018599 if (halStatus != eHAL_STATUS_SUCCESS)
18600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18601 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18602
Jeff Johnson295189b2012-06-20 16:38:30 -070018603 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080018604 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18605 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18606 {
18607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080018608 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080018609 WDI_ASSERT(0);
18610 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018611 /*Notify UMAC*/
18612 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18613
Jeff Johnsone7245742012-09-05 17:12:55 -070018614 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018615}/*WDI_ProcessExitImpsRsp*/
18616
18617/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018618 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018619 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018620
18621 @param pWDICtx: pointer to the WLAN DAL context
18622 pEventData: pointer to the event information structure
18623
Jeff Johnson295189b2012-06-20 16:38:30 -070018624 @see
18625 @return Result of the function call
18626*/
18627WDI_Status
18628WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018629(
Jeff Johnson295189b2012-06-20 16:38:30 -070018630 WDI_ControlBlockType* pWDICtx,
18631 WDI_EventInfoType* pEventData
18632)
18633{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018634 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18635 tHalEnterBmpsRspParams halEnterBmpsRsp;
18636 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18637 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080018638 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18640
18641 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018642 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018643 -------------------------------------------------------------------------*/
18644 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18645 ( NULL == pEventData->pEventData))
18646 {
18647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018648 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018649 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018651 }
18652
Jeff Johnson295189b2012-06-20 16:38:30 -070018653 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018654 Extract response and send it to UMAC
18655 -------------------------------------------------------------------------*/
18656 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18657 {
18658 wpalMemoryCopy( &halEnterBmpsRsp,
18659 pEventData->pEventData,
18660 sizeof(halEnterBmpsRsp));
18661
18662 //Used to print debug message
18663 halStatus = halEnterBmpsRsp.status;
18664 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18665 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18666 }
18667 else
18668 {
18669 halStatus = *((eHalStatus*)pEventData->pEventData);
18670 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18671 }
18672
18673 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018674
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018675 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18676 * Other module states are taken care by PMC.
18677 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18678 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018679 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18680 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018681
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018682 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018683 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18684 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018685 /* Call Back is not required as we are putting the DXE in FULL
18686 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080018687 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18688 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18689 {
18690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080018691 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080018692 WDI_ASSERT(0);
18693 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018694 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018695 }
18696
Jeff Johnson295189b2012-06-20 16:38:30 -070018697 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018698 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018699
Jeff Johnsone7245742012-09-05 17:12:55 -070018700 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018701}/*WDI_ProcessEnterBmpsRsp*/
18702
18703/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018704 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018705 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018706
18707 @param pWDICtx: pointer to the WLAN DAL context
18708 pEventData: pointer to the event information structure
18709
Jeff Johnson295189b2012-06-20 16:38:30 -070018710 @see
18711 @return Result of the function call
18712*/
18713WDI_Status
18714WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018715(
Jeff Johnson295189b2012-06-20 16:38:30 -070018716 WDI_ControlBlockType* pWDICtx,
18717 WDI_EventInfoType* pEventData
18718)
18719{
Jeff Johnson295189b2012-06-20 16:38:30 -070018720 eHalStatus halStatus;
18721 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018722 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080018723 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18724 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18726
18727 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018728 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018729 -------------------------------------------------------------------------*/
18730 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18731 ( NULL == pEventData->pEventData))
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 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18740
18741 /*-------------------------------------------------------------------------
18742 Extract response and send it to UMAC
18743 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018744
18745 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18746 {
18747 wpalMemoryCopy( &halExitBmpsRsp,
18748 pEventData->pEventData,
18749 sizeof(halExitBmpsRsp));
18750
18751 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18752 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18753 }
18754 else
18755 {
18756 halStatus = *((eHalStatus*)pEventData->pEventData);
18757 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18758 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018759
18760 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080018761 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18762 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18763 {
18764 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080018765 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080018766 WDI_ASSERT(0);
18767 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018768 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18769
18770 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018771 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018772
Jeff Johnsone7245742012-09-05 17:12:55 -070018773 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018774}/*WDI_ProcessExitBmpsRsp*/
18775
18776/**
18777 @brief Process Enter UAPSD Rsp function (called when a response
18778 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018779
18780 @param pWDICtx: pointer to the WLAN DAL context
18781 pEventData: pointer to the event information structure
18782
Jeff Johnson295189b2012-06-20 16:38:30 -070018783 @see
18784 @return Result of the function call
18785*/
18786WDI_Status
18787WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018788(
Jeff Johnson295189b2012-06-20 16:38:30 -070018789 WDI_ControlBlockType* pWDICtx,
18790 WDI_EventInfoType* pEventData
18791)
18792{
Jeff Johnson295189b2012-06-20 16:38:30 -070018793 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018794 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018795 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018796 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18797
Jeff Johnson295189b2012-06-20 16:38:30 -070018798 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18799
18800 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018801 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018802 -------------------------------------------------------------------------*/
18803 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18804 ( NULL == pEventData->pEventData))
18805 {
18806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018807 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018808 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018809 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018810 }
18811
18812 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18813
18814 /*-------------------------------------------------------------------------
18815 Extract response and send it to UMAC
18816 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018817 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18818 {
18819 wpalMemoryCopy( &halEnterUapsdRsp,
18820 pEventData->pEventData,
18821 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018822
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018823 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18824 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18825 }
18826 else
18827 {
18828 halStatus = *((eHalStatus*)pEventData->pEventData);
18829 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18830 }
18831
18832 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018833 {
18834 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18835 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18836 // the traffic to decide when to suspend the trigger frames when there is no traffic
18837 // activity on the trigger enabled ACs
18838 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18839
18840#ifdef WLAN_PERF
18841 // Increment the BD signature to refresh the fast path BD utilization
18842 pWDICtx->uBdSigSerialNum++;
18843#endif
18844 }
18845
18846 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018847 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018848
Jeff Johnsone7245742012-09-05 17:12:55 -070018849 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018850}/*WDI_ProcessEnterUapsdRsp*/
18851
18852/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018853 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018854 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018855
18856 @param pWDICtx: pointer to the WLAN DAL context
18857 pEventData: pointer to the event information structure
18858
Jeff Johnson295189b2012-06-20 16:38:30 -070018859 @see
18860 @return Result of the function call
18861*/
18862WDI_Status
18863WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018864(
Jeff Johnson295189b2012-06-20 16:38:30 -070018865 WDI_ControlBlockType* pWDICtx,
18866 WDI_EventInfoType* pEventData
18867)
18868{
Jeff Johnson295189b2012-06-20 16:38:30 -070018869 eHalStatus halStatus;
18870 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018871 tHalExitUapsdRspParams halExitUapsdRsp;
18872 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018873 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18874
18875 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018876 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018877 -------------------------------------------------------------------------*/
18878 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18879 ( NULL == pEventData->pEventData))
18880 {
18881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018882 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018883 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018884 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018885 }
18886
18887 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18888
18889 /*-------------------------------------------------------------------------
18890 Extract response and send it to UMAC
18891 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018892 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18893 {
18894 wpalMemoryCopy( &halExitUapsdRsp,
18895 pEventData->pEventData,
18896 sizeof(halExitUapsdRsp));
18897
18898 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18899 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18900 }
18901 else
18902 {
18903 halStatus = *((eHalStatus*)pEventData->pEventData);
18904 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18905 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018906 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18907 // directly instead of the FW WQ.
18908 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18909
18910#ifdef WLAN_PERF
18911 // Increment the BD signature to refresh the fast path BD utilization
18912 pWDICtx->uBdSigSerialNum++;
18913#endif
18914
18915 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018916 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018917
Jeff Johnsone7245742012-09-05 17:12:55 -070018918 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018919}/*WDI_ProcessExitUapsdRsp*/
18920
18921/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018922 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018923 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018924
18925 @param pWDICtx: pointer to the WLAN DAL context
18926 pEventData: pointer to the event information structure
18927
Jeff Johnson295189b2012-06-20 16:38:30 -070018928 @see
18929 @return Result of the function call
18930*/
18931WDI_Status
18932WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018933(
Jeff Johnson295189b2012-06-20 16:38:30 -070018934 WDI_ControlBlockType* pWDICtx,
18935 WDI_EventInfoType* pEventData
18936)
18937{
18938 WDI_Status wdiStatus;
18939 eHalStatus halStatus;
18940 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18942
18943 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018944 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018945 -------------------------------------------------------------------------*/
18946 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18947 ( NULL == pEventData->pEventData))
18948 {
18949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018950 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018951 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018952 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018953 }
18954
18955 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18956
18957 /*-------------------------------------------------------------------------
18958 Extract response and send it to UMAC
18959 -------------------------------------------------------------------------*/
18960 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018961 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018962
18963 /*Notify UMAC*/
18964 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18965
Jeff Johnsone7245742012-09-05 17:12:55 -070018966 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018967}/*WDI_ProcessSetUapsdAcParamsRsp*/
18968
18969/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018970 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018971 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018972
18973 @param pWDICtx: pointer to the WLAN DAL context
18974 pEventData: pointer to the event information structure
18975
Jeff Johnson295189b2012-06-20 16:38:30 -070018976 @see
18977 @return Result of the function call
18978*/
18979WDI_Status
18980WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018981(
Jeff Johnson295189b2012-06-20 16:38:30 -070018982 WDI_ControlBlockType* pWDICtx,
18983 WDI_EventInfoType* pEventData
18984)
18985{
18986 WDI_Status wdiStatus;
18987 eHalStatus halStatus;
18988 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18990
18991 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018992 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018993 -------------------------------------------------------------------------*/
18994 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18995 ( NULL == pEventData->pEventData))
18996 {
18997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018998 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018999 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019000 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019001 }
19002
19003 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
19004
19005 /*-------------------------------------------------------------------------
19006 Extract response and send it to UMAC
19007 -------------------------------------------------------------------------*/
19008 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019009 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019010
19011 /*Notify UMAC*/
19012 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19013
Jeff Johnsone7245742012-09-05 17:12:55 -070019014 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019015}/*WDI_ProcessUpdateUapsdParamsRsp*/
19016
19017/**
19018 @brief Process Configure RXP filter Rsp function (called when a
19019 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019020
19021 @param pWDICtx: pointer to the WLAN DAL context
19022 pEventData: pointer to the event information structure
19023
Jeff Johnson295189b2012-06-20 16:38:30 -070019024 @see
19025 @return Result of the function call
19026*/
19027WDI_Status
19028WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019029(
Jeff Johnson295189b2012-06-20 16:38:30 -070019030 WDI_ControlBlockType* pWDICtx,
19031 WDI_EventInfoType* pEventData
19032)
19033{
19034 WDI_Status wdiStatus;
19035 eHalStatus halStatus;
19036 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
19037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19038
19039 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019040 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019041 -------------------------------------------------------------------------*/
19042 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19043 ( NULL == pEventData->pEventData))
19044 {
19045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019046 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019047 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019048 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019049 }
19050
19051 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
19052
19053 /*-------------------------------------------------------------------------
19054 Extract response and send it to UMAC
19055 -------------------------------------------------------------------------*/
19056 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019057 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019058
19059 /*Notify UMAC*/
19060 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19061
Jeff Johnsone7245742012-09-05 17:12:55 -070019062 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019063}/*WDI_ProcessConfigureRxpFilterRsp*/
19064
19065/**
19066 @brief Process Set beacon filter Rsp function (called when a
19067 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019068
19069 @param pWDICtx: pointer to the WLAN DAL context
19070 pEventData: pointer to the event information structure
19071
Jeff Johnson295189b2012-06-20 16:38:30 -070019072 @see
19073 @return Result of the function call
19074*/
19075WDI_Status
19076WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019077(
Jeff Johnson295189b2012-06-20 16:38:30 -070019078 WDI_ControlBlockType* pWDICtx,
19079 WDI_EventInfoType* pEventData
19080)
19081{
19082 WDI_Status wdiStatus;
19083 eHalStatus halStatus;
19084 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
19085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19086
19087 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019088 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019089 -------------------------------------------------------------------------*/
19090 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19091 ( NULL == pEventData->pEventData))
19092 {
19093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019094 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019097 }
19098
19099 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
19100
19101 /*-------------------------------------------------------------------------
19102 Extract response and send it to UMAC
19103 -------------------------------------------------------------------------*/
19104 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019105 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019106
19107 /*Notify UMAC*/
19108 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19109
Jeff Johnsone7245742012-09-05 17:12:55 -070019110 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019111}/*WDI_ProcessSetBeaconFilterRsp*/
19112
19113/**
19114 @brief Process remove beacon filter Rsp function (called when a
19115 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019116
19117 @param pWDICtx: pointer to the WLAN DAL context
19118 pEventData: pointer to the event information structure
19119
Jeff Johnson295189b2012-06-20 16:38:30 -070019120 @see
19121 @return Result of the function call
19122*/
19123WDI_Status
19124WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019125(
Jeff Johnson295189b2012-06-20 16:38:30 -070019126 WDI_ControlBlockType* pWDICtx,
19127 WDI_EventInfoType* pEventData
19128)
19129{
19130 WDI_Status wdiStatus;
19131 eHalStatus halStatus;
19132 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
19133 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19134
19135 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019136 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019137 -------------------------------------------------------------------------*/
19138 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19139 ( NULL == pEventData->pEventData))
19140 {
19141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019142 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019143 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019144 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019145 }
19146
19147 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
19148
19149 /*-------------------------------------------------------------------------
19150 Extract response and send it to UMAC
19151 -------------------------------------------------------------------------*/
19152 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019153 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019154
19155 /*Notify UMAC*/
19156 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19157
Jeff Johnsone7245742012-09-05 17:12:55 -070019158 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019159}/*WDI_ProcessRemBeaconFilterRsp*/
19160
19161/**
19162 @brief Process set RSSI thresholds Rsp function (called when a
19163 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019164
19165 @param pWDICtx: pointer to the WLAN DAL context
19166 pEventData: pointer to the event information structure
19167
Jeff Johnson295189b2012-06-20 16:38:30 -070019168 @see
19169 @return Result of the function call
19170*/
19171WDI_Status
19172WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019173(
Jeff Johnson295189b2012-06-20 16:38:30 -070019174 WDI_ControlBlockType* pWDICtx,
19175 WDI_EventInfoType* pEventData
19176)
19177{
19178 WDI_Status wdiStatus;
19179 eHalStatus halStatus;
19180 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
19181 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19182
19183 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019184 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019185 -------------------------------------------------------------------------*/
19186 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19187 ( NULL == pEventData->pEventData))
19188 {
19189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019190 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019191 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019192 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019193 }
19194
19195 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
19196
19197 /*-------------------------------------------------------------------------
19198 Extract response and send it to UMAC
19199 -------------------------------------------------------------------------*/
19200 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019201 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019202
19203 /*Notify UMAC*/
19204 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
19205
Jeff Johnsone7245742012-09-05 17:12:55 -070019206 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019207}/*WDI_ProcessSetRSSIThresoldsRsp*/
19208
19209/**
19210 @brief Process host offload Rsp function (called when a
19211 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019212
19213 @param pWDICtx: pointer to the WLAN DAL context
19214 pEventData: pointer to the event information structure
19215
Jeff Johnson295189b2012-06-20 16:38:30 -070019216 @see
19217 @return Result of the function call
19218*/
19219WDI_Status
19220WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019221(
Jeff Johnson295189b2012-06-20 16:38:30 -070019222 WDI_ControlBlockType* pWDICtx,
19223 WDI_EventInfoType* pEventData
19224)
19225{
19226 WDI_Status wdiStatus;
19227 eHalStatus halStatus;
19228 WDI_HostOffloadCb wdiHostOffloadCb;
19229 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19230
19231 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019232 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019233 -------------------------------------------------------------------------*/
19234 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19235 ( NULL == pEventData->pEventData))
19236 {
19237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019238 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019239 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019240 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019241 }
19242
19243 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
19244
19245 /*-------------------------------------------------------------------------
19246 Extract response and send it to UMAC
19247 -------------------------------------------------------------------------*/
19248 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019249 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019250
19251 /*Notify UMAC*/
19252 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
19253
Jeff Johnsone7245742012-09-05 17:12:55 -070019254 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019255}/*WDI_ProcessHostOffloadRsp*/
19256
19257/**
19258 @brief Process keep alive Rsp function (called when a
19259 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019260
19261 @param pWDICtx: pointer to the WLAN DAL context
19262 pEventData: pointer to the event information structure
19263
Jeff Johnson295189b2012-06-20 16:38:30 -070019264 @see
19265 @return Result of the function call
19266*/
19267WDI_Status
19268WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019269(
Jeff Johnson295189b2012-06-20 16:38:30 -070019270 WDI_ControlBlockType* pWDICtx,
19271 WDI_EventInfoType* pEventData
19272)
19273{
19274 WDI_Status wdiStatus;
19275 eHalStatus halStatus;
19276 WDI_KeepAliveCb wdiKeepAliveCb;
19277 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19279 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19280
19281
19282 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019283 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019284 -------------------------------------------------------------------------*/
19285 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19286 ( NULL == pEventData->pEventData))
19287 {
19288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019289 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019290 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019292 }
19293
Jeff Johnsone7245742012-09-05 17:12:55 -070019294 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19295
Jeff Johnson295189b2012-06-20 16:38:30 -070019296 /*-------------------------------------------------------------------------
19297 Extract response and send it to UMAC
19298 -------------------------------------------------------------------------*/
19299 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019300 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019301
19302 /*Notify UMAC*/
19303 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19304
Jeff Johnsone7245742012-09-05 17:12:55 -070019305 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019306}/*WDI_ProcessKeepAliveRsp*/
19307
19308/**
19309 @brief Process wowl add ptrn Rsp function (called when a
19310 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019311
19312 @param pWDICtx: pointer to the WLAN DAL context
19313 pEventData: pointer to the event information structure
19314
Jeff Johnson295189b2012-06-20 16:38:30 -070019315 @see
19316 @return Result of the function call
19317*/
19318WDI_Status
19319WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019320(
Jeff Johnson295189b2012-06-20 16:38:30 -070019321 WDI_ControlBlockType* pWDICtx,
19322 WDI_EventInfoType* pEventData
19323)
19324{
Jeff Johnson295189b2012-06-20 16:38:30 -070019325 eHalStatus halStatus;
19326 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019327 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19328 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19329
Jeff Johnson295189b2012-06-20 16:38:30 -070019330 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19331
19332 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019333 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019334 -------------------------------------------------------------------------*/
19335 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19336 ( NULL == pEventData->pEventData))
19337 {
19338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019339 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019340 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019341 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019342 }
19343
19344 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19345
19346 /*-------------------------------------------------------------------------
19347 Extract response and send it to UMAC
19348 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019349 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19350 {
19351 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19352 pEventData->pEventData,
19353 sizeof(halAddWowlBcastPtrRsp));
19354
19355 wdiWowlAddBcPtrRsp.wdiStatus =
19356 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19357 }
19358 else
19359 {
19360 halStatus = *((eHalStatus*)pEventData->pEventData);
19361 wdiWowlAddBcPtrRsp.wdiStatus =
19362 WDI_HAL_2_WDI_STATUS(halStatus);
19363 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019364
19365 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019366 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019367
Jeff Johnsone7245742012-09-05 17:12:55 -070019368 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019369}/*WDI_ProcessWowlAddBcPtrnRsp*/
19370
19371/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019372 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019373 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019374
19375 @param pWDICtx: pointer to the WLAN DAL context
19376 pEventData: pointer to the event information structure
19377
Jeff Johnson295189b2012-06-20 16:38:30 -070019378 @see
19379 @return Result of the function call
19380*/
19381WDI_Status
19382WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019383(
Jeff Johnson295189b2012-06-20 16:38:30 -070019384 WDI_ControlBlockType* pWDICtx,
19385 WDI_EventInfoType* pEventData
19386)
19387{
Jeff Johnson295189b2012-06-20 16:38:30 -070019388 eHalStatus halStatus;
19389 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019390 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19391 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19393
19394 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019395 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019396 -------------------------------------------------------------------------*/
19397 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19398 ( NULL == pEventData->pEventData))
19399 {
19400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019401 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019402 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019403 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019404 }
19405
19406 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19407
19408 /*-------------------------------------------------------------------------
19409 Extract response and send it to UMAC
19410 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019411 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19412 {
19413 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19414 pEventData->pEventData,
19415 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019416
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019417 wdiWowlDelBcstPtrRsp.wdiStatus =
19418 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19419 }
19420 else
19421 {
19422 halStatus = *((eHalStatus*)pEventData->pEventData);
19423 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19424 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019425 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019426 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019427
Jeff Johnsone7245742012-09-05 17:12:55 -070019428 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019429}/*WDI_ProcessWowlDelBcPtrnRsp*/
19430
19431/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019432 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019433 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019434
19435 @param pWDICtx: pointer to the WLAN DAL context
19436 pEventData: pointer to the event information structure
19437
Jeff Johnson295189b2012-06-20 16:38:30 -070019438 @see
19439 @return Result of the function call
19440*/
19441WDI_Status
19442WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019443(
Jeff Johnson295189b2012-06-20 16:38:30 -070019444 WDI_ControlBlockType* pWDICtx,
19445 WDI_EventInfoType* pEventData
19446)
19447{
Jeff Johnson295189b2012-06-20 16:38:30 -070019448 eHalStatus halStatus;
19449 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019450 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
19451 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019452 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19453
19454 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019455 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019456 -------------------------------------------------------------------------*/
19457 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19458 ( NULL == pEventData->pEventData))
19459 {
19460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019461 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019464 }
19465
19466 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
19467
19468 /*-------------------------------------------------------------------------
19469 Extract response and send it to UMAC
19470 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019471 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19472 {
19473 wpalMemoryCopy( &halEnterWowlRspParams,
19474 (wpt_uint8*)pEventData->pEventData,
19475 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019476
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019477 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
19478 wdiwowlEnterRsp.status =
19479 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
19480 }
19481 else
19482 {
19483 halStatus = *((eHalStatus*)pEventData->pEventData);
19484 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19485 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019486 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019487 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019488
Jeff Johnsone7245742012-09-05 17:12:55 -070019489 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019490}/*WDI_ProcessWowlEnterRsp*/
19491
19492/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019493 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019494 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019495
19496 @param pWDICtx: pointer to the WLAN DAL context
19497 pEventData: pointer to the event information structure
19498
Jeff Johnson295189b2012-06-20 16:38:30 -070019499 @see
19500 @return Result of the function call
19501*/
19502WDI_Status
19503WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019504(
Jeff Johnson295189b2012-06-20 16:38:30 -070019505 WDI_ControlBlockType* pWDICtx,
19506 WDI_EventInfoType* pEventData
19507)
19508{
Jeff Johnson295189b2012-06-20 16:38:30 -070019509 eHalStatus halStatus;
19510 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019511 tHalExitWowlRspParams halExitWowlRspParams;
19512 WDI_WowlExitRspParamsType wdiWowlExitRsp;
19513
Jeff Johnson295189b2012-06-20 16:38:30 -070019514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19515
19516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019517 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019518 -------------------------------------------------------------------------*/
19519 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19520 ( NULL == pEventData->pEventData))
19521 {
19522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019523 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019524 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019526 }
19527
19528 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
19529
19530 /*-------------------------------------------------------------------------
19531 Extract response and send it to UMAC
19532 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019533 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19534 {
19535 wpalMemoryCopy( &halExitWowlRspParams,
19536 pEventData->pEventData,
19537 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019538
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019539 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
19540 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
19541
19542 }
19543 else
19544 {
19545 halStatus = *((eHalStatus*)pEventData->pEventData);
19546 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19547 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019548 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019549 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019550
Jeff Johnsone7245742012-09-05 17:12:55 -070019551 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019552}/*WDI_ProcessWowlExitRsp*/
19553
19554/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019555 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070019556 (called when a response is being received over the bus
19557 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019558
19559 @param pWDICtx: pointer to the WLAN DAL context
19560 pEventData: pointer to the event information structure
19561
Jeff Johnson295189b2012-06-20 16:38:30 -070019562 @see
19563 @return Result of the function call
19564*/
19565WDI_Status
19566WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019567(
Jeff Johnson295189b2012-06-20 16:38:30 -070019568 WDI_ControlBlockType* pWDICtx,
19569 WDI_EventInfoType* pEventData
19570)
19571{
19572 WDI_Status wdiStatus;
19573 eHalStatus halStatus;
19574 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19576
19577 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019578 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019579 -------------------------------------------------------------------------*/
19580 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19581 ( NULL == pEventData->pEventData))
19582 {
19583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019584 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019585 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019587 }
19588
19589 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19590
19591 /*-------------------------------------------------------------------------
19592 Extract response and send it to UMAC
19593 -------------------------------------------------------------------------*/
19594 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019595 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019596
19597 /*Notify UMAC*/
19598 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19599
Jeff Johnsone7245742012-09-05 17:12:55 -070019600 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019601}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19602
19603
19604/**
19605 @brief Process Nv download(called when a response
19606 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019607
19608 @param pWDICtx: pointer to the WLAN DAL context
19609 pEventData: pointer to the event information structure
19610
Jeff Johnson295189b2012-06-20 16:38:30 -070019611 @see
19612 @return Result of the function call
19613*/
19614WDI_Status
19615WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019616(
Jeff Johnson295189b2012-06-20 16:38:30 -070019617 WDI_ControlBlockType* pWDICtx,
19618 WDI_EventInfoType* pEventData
19619)
19620{
19621
19622 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19623 tHalNvImgDownloadRspParams halNvDownloadRsp;
19624 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19625
19626 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019627 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019628 -------------------------------------------------------------------------*/
19629 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19630 ( NULL == pEventData->pEventData))
19631 {
19632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019633 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019634 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019635 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019636 }
19637
19638 /*-------------------------------------------------------------------------
19639 Extract response and send it to UMAC
19640 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019641 wpalMemoryCopy( &halNvDownloadRsp,
19642 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019643 sizeof(halNvDownloadRsp));
19644
19645 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19646
19647 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019648 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19649 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019650 {
19651 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019652 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019653 }
19654 else
19655 {
19656 /*Reset the Nv related global information in WDI context information */
19657 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19658 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19659 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19660 /*call WDA callback function for last fragment */
19661 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19662 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19663 }
19664
Jeff Johnsone7245742012-09-05 17:12:55 -070019665 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019666}
19667#ifdef WLAN_FEATURE_VOWIFI_11R
19668/**
19669 @brief Process Add TSpec Rsp function (called when a response
19670 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019671
19672 @param pWDICtx: pointer to the WLAN DAL context
19673 pEventData: pointer to the event information structure
19674
Jeff Johnson295189b2012-06-20 16:38:30 -070019675 @see
19676 @return Result of the function call
19677*/
19678WDI_Status
19679WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019680(
Jeff Johnson295189b2012-06-20 16:38:30 -070019681 WDI_ControlBlockType* pWDICtx,
19682 WDI_EventInfoType* pEventData
19683)
19684{
19685 WDI_Status wdiStatus;
19686 tAggrAddTsRspParams aggrAddTsRsp;
19687 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19688 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19689
19690 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019691 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019692 -------------------------------------------------------------------------*/
19693 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19694 ( NULL == pEventData->pEventData))
19695 {
19696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019697 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019698 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019699 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019700 }
19701
19702 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19703
19704 /*-------------------------------------------------------------------------
19705 Extract response and send it to UMAC
19706 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019707 wpalMemoryCopy( &aggrAddTsRsp,
19708 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019709 sizeof(aggrAddTsRsp));
19710
19711 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019712 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019713
19714 /*Notify UMAC*/
19715 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19716
Jeff Johnsone7245742012-09-05 17:12:55 -070019717 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019718}/*WDI_ProcessAddTSpecRsp*/
19719#endif /* WLAN_FEATURE_VOWIFI_11R */
19720
19721/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019722 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019723 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019724
19725 @param pWDICtx: pointer to the WLAN DAL context
19726 pEventData: pointer to the event information structure
19727
Jeff Johnson295189b2012-06-20 16:38:30 -070019728 @see
19729 @return Result of the function call
19730*/
19731WDI_Status
19732WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019733(
Jeff Johnson295189b2012-06-20 16:38:30 -070019734 WDI_ControlBlockType* pWDICtx,
19735 WDI_EventInfoType* pEventData
19736)
19737{
19738 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19739 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19740 tHalHostResumeRspParams hostResumeRspMsg;
19741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19742
19743 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019744 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019745 -------------------------------------------------------------------------*/
19746 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19747 ( NULL == pEventData->pEventData))
19748 {
19749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019750 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019751 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019752 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019753 }
19754
19755 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19756
19757 /*-------------------------------------------------------------------------
19758 Extract response and send it to UMAC
19759 -------------------------------------------------------------------------*/
19760
Jeff Johnsone7245742012-09-05 17:12:55 -070019761 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019762 (wpt_uint8*)pEventData->pEventData,
19763 sizeof(hostResumeRspMsg));
19764
Jeff Johnsone7245742012-09-05 17:12:55 -070019765 wdiResumeRspParams.wdiStatus =
19766 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019767
19768 /*Notify UMAC*/
19769 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19770
19771 return WDI_STATUS_SUCCESS;
19772}
19773
19774/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019775 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019776 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019777
19778 @param pWDICtx: pointer to the WLAN DAL context
19779 pEventData: pointer to the event information structure
19780
Jeff Johnson295189b2012-06-20 16:38:30 -070019781 @see
19782 @return Result of the function call
19783*/
19784WDI_Status
19785WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019786(
Jeff Johnson295189b2012-06-20 16:38:30 -070019787 WDI_ControlBlockType* pWDICtx,
19788 WDI_EventInfoType* pEventData
19789)
19790{
19791 WDI_Status wdiStatus;
19792 eHalStatus halStatus;
19793 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19795
19796 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019797 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019798 -------------------------------------------------------------------------*/
19799 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19800 ( NULL == pEventData->pEventData))
19801 {
19802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019803 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019804 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019805 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019806 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019807
19808 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019809
19810 /*-------------------------------------------------------------------------
19811 Extract response and send it to UMAC
19812 -------------------------------------------------------------------------*/
19813 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019814 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019815
19816 /*Notify UMAC*/
19817 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19818
Jeff Johnsone7245742012-09-05 17:12:55 -070019819 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019820}/*WDI_ProcessSetTxPerTrackingRsp*/
19821
19822/*==========================================================================
19823 Indications from HAL
19824 ==========================================================================*/
19825/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019826 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019827 indication of this kind is being received over the bus
19828 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019829
19830 @param pWDICtx: pointer to the WLAN DAL context
19831 pEventData: pointer to the event information structure
19832
Jeff Johnson295189b2012-06-20 16:38:30 -070019833 @see
19834 @return Result of the function call
19835*/
19836WDI_Status
19837WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019838(
Jeff Johnson295189b2012-06-20 16:38:30 -070019839 WDI_ControlBlockType* pWDICtx,
19840 WDI_EventInfoType* pEventData
19841)
19842{
19843 WDI_LowLevelIndType wdiInd;
19844 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19846
19847 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019848 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019849 -------------------------------------------------------------------------*/
19850 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19851 ( NULL == pEventData->pEventData))
19852 {
19853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019854 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019855 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019856 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019857 }
19858
19859 /*-------------------------------------------------------------------------
19860 Extract indication and send it to UMAC
19861 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019862 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19863 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019864 sizeof(tHalRSSINotification));
19865
19866 /*Fill in the indication parameters*/
19867 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19868 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19869 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19870 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19871 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19872 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19873 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19874 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19875 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19876 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19877 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19878 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19879 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080019880 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19881 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019882
ltimariub77f24b2013-01-24 18:54:33 -080019883 if ( pWDICtx->wdiLowLevelIndCB )
19884 {
19885 /*Notify UMAC of indication*/
19886 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19887 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019888
19889 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019890}/*WDI_ProcessLowRSSIInd*/
19891
19892
19893/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019894 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019895 an indication of this kind is being received over the
19896 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019897
19898 @param pWDICtx: pointer to the WLAN DAL context
19899 pEventData: pointer to the event information structure
19900
Jeff Johnson295189b2012-06-20 16:38:30 -070019901 @see
19902 @return Result of the function call
19903*/
19904WDI_Status
19905WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019906(
Jeff Johnson295189b2012-06-20 16:38:30 -070019907 WDI_ControlBlockType* pWDICtx,
19908 WDI_EventInfoType* pEventData
19909)
19910{
19911 WDI_Status wdiStatus;
19912 eHalStatus halStatus;
19913 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080019914 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19916
19917 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019918 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019919 -------------------------------------------------------------------------*/
19920 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19921 ( NULL == pEventData->pEventData))
19922 {
19923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019924 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019925 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019926 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019927 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080019928 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019929 /*-------------------------------------------------------------------------
19930 Extract indication and send it to UMAC
19931 -------------------------------------------------------------------------*/
19932 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19933 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019934 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019935
19936 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019937 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080019938 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19939 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080019940 if ( pWDICtx->wdiLowLevelIndCB )
19941 {
19942 /*Notify UMAC*/
19943 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19944 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019945
19946 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019947}/*WDI_ProcessMissedBeaconInd*/
19948
19949
19950/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019951 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019952 an indication of this kind is being received over the
19953 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019954
19955 @param pWDICtx: pointer to the WLAN DAL context
19956 pEventData: pointer to the event information structure
19957
Jeff Johnson295189b2012-06-20 16:38:30 -070019958 @see
19959 @return Result of the function call
19960*/
19961WDI_Status
19962WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019963(
Jeff Johnson295189b2012-06-20 16:38:30 -070019964 WDI_ControlBlockType* pWDICtx,
19965 WDI_EventInfoType* pEventData
19966)
19967{
19968 WDI_Status wdiStatus;
19969 eHalStatus halStatus;
19970 WDI_LowLevelIndType wdiInd;
19971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19972
19973 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019974 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019975 -------------------------------------------------------------------------*/
19976 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19977 ( NULL == pEventData->pEventData))
19978 {
19979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019980 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019981 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019982 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019983 }
19984
19985 /*-------------------------------------------------------------------------
19986 Extract indication and send it to UMAC
19987 -------------------------------------------------------------------------*/
19988 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19989 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019990 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019991
19992 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019993 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019994 /* ! TO DO - fill in from HAL struct:
19995 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19996
ltimariub77f24b2013-01-24 18:54:33 -080019997 if ( pWDICtx->wdiLowLevelIndCB )
19998 {
19999 /*Notify UMAC*/
20000 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20001 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020002
20003 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020004}/*WDI_ProcessUnkAddrFrameInd*/
20005
20006
20007/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020008 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020009 indication of this kind is being received over the bus
20010 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020011
20012 @param pWDICtx: pointer to the WLAN DAL context
20013 pEventData: pointer to the event information structure
20014
Jeff Johnson295189b2012-06-20 16:38:30 -070020015 @see
20016 @return Result of the function call
20017*/
20018WDI_Status
20019WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020020(
Jeff Johnson295189b2012-06-20 16:38:30 -070020021 WDI_ControlBlockType* pWDICtx,
20022 WDI_EventInfoType* pEventData
20023)
20024{
20025 WDI_LowLevelIndType wdiInd;
20026 tpSirMicFailureInd pHalMicFailureInd;
20027
20028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20029
20030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020031 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020032 -------------------------------------------------------------------------*/
20033 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20034 ( NULL == pEventData->pEventData))
20035 {
20036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020037 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020038 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020039 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020040 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020041
Jeff Johnson295189b2012-06-20 16:38:30 -070020042 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
20043 /*-------------------------------------------------------------------------
20044 Extract indication and send it to UMAC
20045 -------------------------------------------------------------------------*/
20046
20047 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020048 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020049 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
20050 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
20051 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
20052 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
20053 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
20054 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
20055 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
20056 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020057 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070020058 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070020059 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020060 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020061 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070020062 pHalMicFailureInd->info.keyId;
20063 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
20064 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
20065 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
20066 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080020067
20068 if ( pWDICtx->wdiLowLevelIndCB )
20069 {
20070 /*Notify UMAC*/
20071 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20072 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020073
20074 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020075}/*WDI_ProcessMicFailureInd*/
20076
20077
20078/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020079 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020080 an indication of this kind is being received over the
20081 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020082
20083 @param pWDICtx: pointer to the WLAN DAL context
20084 pEventData: pointer to the event information structure
20085
Jeff Johnson295189b2012-06-20 16:38:30 -070020086 @see
20087 @return Result of the function call
20088*/
20089WDI_Status
20090WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020091(
Jeff Johnson295189b2012-06-20 16:38:30 -070020092 WDI_ControlBlockType* pWDICtx,
20093 WDI_EventInfoType* pEventData
20094)
20095{
20096 WDI_Status wdiStatus;
20097 eHalStatus halStatus;
20098 WDI_LowLevelIndType wdiInd;
20099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20100
20101 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020102 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020103 -------------------------------------------------------------------------*/
20104 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20105 ( NULL == pEventData->pEventData))
20106 {
20107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020108 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020109 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020110 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020111 }
20112
20113 /*-------------------------------------------------------------------------
20114 Extract indication and send it to UMAC
20115 -------------------------------------------------------------------------*/
20116
20117 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20118 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020119 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020120
20121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20122 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070020123
Jeff Johnson295189b2012-06-20 16:38:30 -070020124 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020125 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20126 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020127
ltimariub77f24b2013-01-24 18:54:33 -080020128 if ( pWDICtx->wdiLowLevelIndCB )
20129 {
20130 /*Notify UMAC*/
20131 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20132 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020133
20134 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020135}/*WDI_ProcessFatalErrorInd*/
20136
20137/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020138 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020139 an indication of this kind is being received over the
20140 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020141
20142 @param pWDICtx: pointer to the WLAN DAL context
20143 pEventData: pointer to the event information structure
20144
Jeff Johnson295189b2012-06-20 16:38:30 -070020145 @see
20146 @return Result of the function call
20147*/
20148WDI_Status
20149WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020150(
Jeff Johnson295189b2012-06-20 16:38:30 -070020151 WDI_ControlBlockType* pWDICtx,
20152 WDI_EventInfoType* pEventData
20153)
20154{
20155 tDeleteStaContextParams halDelSTACtx;
20156 WDI_LowLevelIndType wdiInd;
20157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20158
20159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020160 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020161 -------------------------------------------------------------------------*/
20162 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20163 ( NULL == pEventData->pEventData))
20164 {
20165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020166 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020169 }
20170
20171 /*-------------------------------------------------------------------------
20172 Extract indication and send it to UMAC
20173 -------------------------------------------------------------------------*/
20174
20175 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020176 wpalMemoryCopy( &halDelSTACtx,
20177 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020178 sizeof(halDelSTACtx));
20179
20180 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020181 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020182
20183 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
20184 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
20185 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
20186 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
20187
Jeff Johnsone7245742012-09-05 17:12:55 -070020188 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070020189 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020190 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070020191 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020192 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
20193 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020194
ltimariub77f24b2013-01-24 18:54:33 -080020195 if ( pWDICtx->wdiLowLevelIndCB )
20196 {
20197 /*Notify UMAC*/
20198 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20199 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020200
20201 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020202}/*WDI_ProcessDelSTAInd*/
20203
20204/**
20205*@brief Process Coex Indication function (called when
20206 an indication of this kind is being received over the
20207 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020208
20209 @param pWDICtx: pointer to the WLAN DAL context
20210 pEventData: pointer to the event information structure
20211
Jeff Johnson295189b2012-06-20 16:38:30 -070020212 @see
20213 @return Result of the function call
20214*/
20215WDI_Status
20216WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020217(
Jeff Johnson295189b2012-06-20 16:38:30 -070020218 WDI_ControlBlockType* pWDICtx,
20219 WDI_EventInfoType* pEventData
20220)
20221{
20222 WDI_LowLevelIndType wdiInd;
20223 tCoexIndMsg halCoexIndMsg;
20224 wpt_uint32 index;
20225 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20226
20227 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020228 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020229 -------------------------------------------------------------------------*/
20230 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20231 ( NULL == pEventData->pEventData ))
20232 {
20233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020234 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020235 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070020236 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020237 }
20238
20239 /*-------------------------------------------------------------------------
20240 Extract indication and send it to UMAC
20241 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020242 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
20243 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020244 sizeof(halCoexIndMsg.coexIndParams) );
20245
20246 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020247 wdiInd.wdiIndicationType = WDI_COEX_IND;
20248 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070020249 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
20250 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020251 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070020252 }
20253
20254 // DEBUG
20255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20256 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070020257 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
20258 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
20259 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
20260 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
20261 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070020262
ltimariub77f24b2013-01-24 18:54:33 -080020263 if ( pWDICtx->wdiLowLevelIndCB )
20264 {
20265 /*Notify UMAC*/
20266 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20267 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020268
20269 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020270}/*WDI_ProcessCoexInd*/
20271
20272/**
20273*@brief Process Tx Complete Indication function (called when
20274 an indication of this kind is being received over the
20275 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020276
20277 @param pWDICtx: pointer to the WLAN DAL context
20278 pEventData: pointer to the event information structure
20279
Jeff Johnson295189b2012-06-20 16:38:30 -070020280 @see
20281 @return Result of the function call
20282*/
20283WDI_Status
20284WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020285(
Jeff Johnson295189b2012-06-20 16:38:30 -070020286 WDI_ControlBlockType* pWDICtx,
20287 WDI_EventInfoType* pEventData
20288)
20289{
20290 WDI_LowLevelIndType wdiInd;
20291 tTxComplIndMsg halTxComplIndMsg;
20292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20293
20294 /*-------------------------------------------------------------------------
20295 Sanity check
20296 -------------------------------------------------------------------------*/
20297 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20298 ( NULL == pEventData->pEventData ))
20299 {
20300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020301 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020302 WDI_ASSERT( 0 );
20303 return WDI_STATUS_E_FAILURE;
20304 }
20305
20306 /*-------------------------------------------------------------------------
20307 Extract indication and send it to UMAC
20308 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020309 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20310 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020311 sizeof(halTxComplIndMsg.txComplParams) );
20312
20313 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020314 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20315 wdiInd.wdiIndicationData.tx_complete_status
20316 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020317
ltimariub77f24b2013-01-24 18:54:33 -080020318 if ( pWDICtx->wdiLowLevelIndCB )
20319 {
20320 /*Notify UMAC*/
20321 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20322 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020323
20324 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020325}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020326#ifdef FEATURE_WLAN_TDLS
20327/**
20328*@brief Process TDLS Indication function (called when
20329 an indication of this kind is being received over the
20330 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020331
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020332 @param pWDICtx: pointer to the WLAN DAL context
20333 pEventData: pointer to the event information structure
20334
20335 @see
20336 @return Result of the function call
20337*/
20338WDI_Status
20339WDI_ProcessTdlsInd
20340(
20341 WDI_ControlBlockType* pWDICtx,
20342 WDI_EventInfoType* pEventData
20343)
20344{
20345 WDI_LowLevelIndType wdiInd;
20346 tTdlsIndMsg halTdlsIndMsg;
20347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20348
20349 /*-------------------------------------------------------------------------
20350 Sanity check
20351 -------------------------------------------------------------------------*/
20352 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20353 ( NULL == pEventData->pEventData ))
20354 {
20355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20356 "%s: Invalid parameters", __func__);
20357 WDI_ASSERT( 0 );
20358 return WDI_STATUS_E_FAILURE;
20359 }
20360
20361 /*-------------------------------------------------------------------------
20362 Extract indication and send it to UMAC
20363 -------------------------------------------------------------------------*/
20364 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20365 pEventData->pEventData,
20366 sizeof(halTdlsIndMsg.tdlsIndParams) );
20367
20368 /*Fill in the indication parameters*/
20369 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20370
20371 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20372 = halTdlsIndMsg.tdlsIndParams.status;
20373
20374 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20375 = halTdlsIndMsg.tdlsIndParams.staIdx;
20376
20377 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20378 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20379
20380 /*Notify UMAC*/
20381 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20382
20383 return WDI_STATUS_SUCCESS;
20384}/*WDI_ProcessTdlsInd*/
20385#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020386/**
Viral Modid86bde22012-12-10 13:09:21 -080020387*@brief Process Noa Start Indication function (called when
20388 an indication of this kind is being received over the
20389 bus from HAL)
20390
20391 @param pWDICtx: pointer to the WLAN DAL context
20392 pEventData: pointer to the event information structure
20393
20394 @see
20395 @return Result of the function call
20396*/
20397WDI_Status
20398WDI_ProcessP2pNoaStartInd
20399(
20400 WDI_ControlBlockType* pWDICtx,
20401 WDI_EventInfoType* pEventData
20402)
20403{
20404 WDI_LowLevelIndType wdiInd;
20405 tNoaStartIndMsg halNoaStartIndMsg;
20406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20407
20408 /*-------------------------------------------------------------------------
20409 Sanity check
20410 -------------------------------------------------------------------------*/
20411 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20412 ( NULL == pEventData->pEventData ))
20413 {
20414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20415 "%s: Invalid parameters", __func__);
20416 WDI_ASSERT( 0 );
20417 return WDI_STATUS_E_FAILURE;
20418 }
20419
20420 /*-------------------------------------------------------------------------
20421 Extract indication and send it to UMAC
20422 -------------------------------------------------------------------------*/
20423 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20424 pEventData->pEventData,
20425 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20426
20427 /*Fill in the indication parameters*/
20428 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20429
20430 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20431 = halNoaStartIndMsg.noaStartIndParams.status;
20432
20433 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
20434 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
20435
20436 /*Notify UMAC*/
20437 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20438
20439 return WDI_STATUS_SUCCESS;
20440}/*WDI_ProcessNoaAttrInd*/
20441
20442/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020443*@brief Process Noa Attr Indication function (called when
20444 an indication of this kind is being received over the
20445 bus from HAL)
20446
20447 @param pWDICtx: pointer to the WLAN DAL context
20448 pEventData: pointer to the event information structure
20449
20450 @see
20451 @return Result of the function call
20452*/
20453WDI_Status
20454WDI_ProcessP2pNoaAttrInd
20455(
20456 WDI_ControlBlockType* pWDICtx,
20457 WDI_EventInfoType* pEventData
20458)
20459{
20460 WDI_LowLevelIndType wdiInd;
20461 tNoaAttrIndMsg halNoaAttrIndMsg;
20462 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20463
20464 /*-------------------------------------------------------------------------
20465 Sanity check
20466 -------------------------------------------------------------------------*/
20467 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20468 ( NULL == pEventData->pEventData ))
20469 {
20470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020471 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020472 WDI_ASSERT( 0 );
20473 return WDI_STATUS_E_FAILURE;
20474 }
20475
20476 /*-------------------------------------------------------------------------
20477 Extract indication and send it to UMAC
20478 -------------------------------------------------------------------------*/
20479 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
20480 pEventData->pEventData,
20481 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
20482
20483 /*Fill in the indication parameters*/
20484 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070020485
Jeff Johnson295189b2012-06-20 16:38:30 -070020486 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
20487 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070020488
Jeff Johnson295189b2012-06-20 16:38:30 -070020489 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
20490 = halNoaAttrIndMsg.noaAttrIndParams.index;
20491 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
20492 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
20493 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
20494 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070020495
Jeff Johnson295189b2012-06-20 16:38:30 -070020496 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
20497 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
20498 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
20499 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
20500 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
20501 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
20502 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
20503 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070020504
Jeff Johnson295189b2012-06-20 16:38:30 -070020505 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
20506 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
20507 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
20508 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
20509 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
20510 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
20511 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
20512 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
20513
ltimariub77f24b2013-01-24 18:54:33 -080020514 if ( pWDICtx->wdiLowLevelIndCB )
20515 {
20516 /*Notify UMAC*/
20517 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20518 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020519
20520 return WDI_STATUS_SUCCESS;
20521}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020522
20523/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020524 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020525 an indication of this kind is being received over the
20526 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020527
20528 @param pWDICtx: pointer to the WLAN DAL context
20529 pEventData: pointer to the event information structure
20530
Jeff Johnson295189b2012-06-20 16:38:30 -070020531 @see
20532 @return Result of the function call
20533*/
20534WDI_Status
20535WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020536(
Jeff Johnson295189b2012-06-20 16:38:30 -070020537 WDI_ControlBlockType* pWDICtx,
20538 WDI_EventInfoType* pEventData
20539)
20540{
20541 WDI_LowLevelIndType wdiInd;
20542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020543
Jeff Johnson295189b2012-06-20 16:38:30 -070020544 /*-------------------------------------------------------------------------
20545 Extract indication and send it to UMAC
20546 -------------------------------------------------------------------------*/
20547 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020548 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
20549
ltimariub77f24b2013-01-24 18:54:33 -080020550 if ( pWDICtx->wdiLowLevelIndCB )
20551 {
20552 /*Notify UMAC*/
20553 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20554 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020555
Jeff Johnsone7245742012-09-05 17:12:55 -070020556 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020557}/*WDI_ProcessTxPerHitInd*/
20558
Jeff Johnson295189b2012-06-20 16:38:30 -070020559/**
Yue Mab9c86f42013-08-14 15:59:08 -070020560 @brief Process Periodic Tx Pattern Fw Indication function
20561
20562 @param pWDICtx: pointer to the WLAN DAL context
20563 pEventData: pointer to the event information structure
20564
20565 @see
20566 @return Result of the function call
20567*/
20568WDI_Status
20569WDI_ProcessPeriodicTxPtrnFwInd
20570(
20571 WDI_ControlBlockType* pWDICtx,
20572 WDI_EventInfoType* pEventData
20573)
20574{
20575 WDI_LowLevelIndType wdiInd;
20576
20577 /*-------------------------------------------------------------------------
20578 Sanity check
20579 -------------------------------------------------------------------------*/
20580 if ((NULL == pWDICtx) || (NULL == pEventData) ||
20581 (NULL == pEventData->pEventData))
20582 {
20583 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20584 "%s: Invalid parameters", __func__);
20585 WDI_ASSERT(0);
20586 return WDI_STATUS_E_FAILURE;
20587 }
20588
20589 /*-------------------------------------------------------------------------
20590 Extract indication and send it to UMAC
20591 -------------------------------------------------------------------------*/
20592 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
20593 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
20594 sizeof(tHalPeriodicTxPtrnFwInd));
20595
20596 if (pWDICtx->wdiLowLevelIndCB)
20597 {
20598 /*Notify UMAC*/
20599 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
20600 }
20601
20602 return WDI_STATUS_SUCCESS;
20603}
20604
20605/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020606 @brief WDI_ProcessFTMCommandReq
20607 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020608
20609 @param pWDICtx: pointer to the WLAN DAL context
20610 pEventData: pointer to the event information structure
20611
Jeff Johnson295189b2012-06-20 16:38:30 -070020612 @see
20613 @return Result of the function call
20614*/
20615WDI_Status
20616WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020617(
Jeff Johnson295189b2012-06-20 16:38:30 -070020618 WDI_ControlBlockType* pWDICtx,
20619 WDI_EventInfoType* pEventData
20620)
20621{
20622 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20623 wpt_uint8 *ftmCommandBuffer = NULL;
20624 wpt_uint16 dataOffset;
20625 wpt_uint16 bufferSize;
20626 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020627 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020628 -------------------------------------------------------------------------*/
20629 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20630 ( NULL == pEventData->pEventData))
20631
20632 {
20633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020634 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020635 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020636 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020637 }
20638
20639 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20640
20641 /* Get MSG Buffer */
20642 WDI_GetMessageBuffer(pWDICtx,
20643 WDI_FTM_CMD_REQ,
20644 ftmCommandReq->bodyLength,
20645 &ftmCommandBuffer,
20646 &dataOffset,
20647 &bufferSize);
20648
20649 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20650 ftmCommandReq->FTMCommandBody,
20651 ftmCommandReq->bodyLength);
20652
20653 /* Send MSG */
20654 return WDI_SendMsg(pWDICtx,
20655 ftmCommandBuffer,
20656 bufferSize,
20657 pEventData->pCBfnc,
20658 pEventData->pUserData,
20659 WDI_FTM_CMD_RESP);
20660}
20661
20662/**
20663 @brief WDI_ProcessFTMCommandRsp
20664 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020665
20666 @param pWDICtx: pointer to the WLAN DAL context
20667 pEventData: pointer to the event information structure
20668
Jeff Johnson295189b2012-06-20 16:38:30 -070020669 @see
20670 @return Result of the function call
20671*/
20672WDI_Status
20673WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020674(
Jeff Johnson295189b2012-06-20 16:38:30 -070020675 WDI_ControlBlockType* pWDICtx,
20676 WDI_EventInfoType* pEventData
20677)
20678{
20679 WDI_FTMCommandRspCb ftmCMDRspCb;
20680 tProcessPttRspParams *ftmCMDRspData = NULL;
20681 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20682
20683 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020684 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020685 -------------------------------------------------------------------------*/
20686 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20687 ( NULL == pEventData->pEventData))
20688 {
20689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020690 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020691 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020692 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020693 }
20694
20695 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20696
20697 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20698
Jeff Johnsone7245742012-09-05 17:12:55 -070020699 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20700 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020701 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20702
20703 /*Notify UMAC*/
20704 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20705
Jeff Johnsone7245742012-09-05 17:12:55 -070020706 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020707}
Jeff Johnson295189b2012-06-20 16:38:30 -070020708/**
20709 @brief WDI_ProcessHalDumpCmdReq
20710 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020711
20712 @param pWDICtx: pointer to the WLAN DAL context
20713 pEventData: pointer to the event information structure
20714
Jeff Johnson295189b2012-06-20 16:38:30 -070020715 @see
20716 @return Result of the function call
20717*/
20718WDI_Status
20719WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020720(
Jeff Johnson295189b2012-06-20 16:38:30 -070020721 WDI_ControlBlockType* pWDICtx,
20722 WDI_EventInfoType* pEventData
20723)
20724{
20725 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20726 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20727 wpt_uint16 usDataOffset = 0;
20728 wpt_uint16 usSendSize = 0;
20729 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020730 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020731
20732 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020733 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020734 -------------------------------------------------------------------------*/
20735 if (( NULL == pEventData ) ||
20736 ( NULL == pEventData->pEventData) ||
20737 ( NULL == pEventData->pCBfnc ))
20738 {
20739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020740 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020741 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020742 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020743 }
20744
20745 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20746 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20747
20748 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020749 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020750 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020751 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020752 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020753 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020754 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020755 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020756 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020757 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020758 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020759
Jeff Johnson295189b2012-06-20 16:38:30 -070020760 /*-----------------------------------------------------------------------
20761 Get message buffer
20762 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020763 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020764 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20765 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020766 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020767 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20768 {
20769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080020770 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070020771 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20772 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020773 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020774 }
20775
Jeff Johnsone7245742012-09-05 17:12:55 -070020776 wpalMemoryCopy( pSendBuffer+usDataOffset,
20777 &halDumpCmdReqMsg.dumpCmdReqParams,
20778 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020779
20780 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020781 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020782
20783 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020784 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020785 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020786 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20787 wdiHALDumpCmdRspCb, pEventData->pUserData,
20788 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020789}
20790
20791/**
20792 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020793 Process hal Dump Command Response from HAL, simply route to HDD
20794
20795 @param pWDICtx: pointer to the WLAN DAL context
20796 pEventData: pointer to the event information structure
20797
Jeff Johnson295189b2012-06-20 16:38:30 -070020798 @see
20799 @return Result of the function call
20800*/
20801WDI_Status
20802WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020803(
Jeff Johnson295189b2012-06-20 16:38:30 -070020804 WDI_ControlBlockType* pWDICtx,
20805 WDI_EventInfoType* pEventData
20806)
20807{
20808 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020809 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020810 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20811
20812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020813 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020814 -------------------------------------------------------------------------*/
20815 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20816 ( NULL == pEventData->pEventData))
20817 {
20818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020819 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020820 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020822 }
20823
Jeff Johnsone7245742012-09-05 17:12:55 -070020824 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020825
20826 /*Initialize the WDI Response structure */
20827 wdiHALDumpCmdRsp.usBufferLen = 0;
20828 wdiHALDumpCmdRsp.pBuffer = NULL;
20829
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020830 wpalMemoryCopy( &halDumpCmdRspParams,
20831 pEventData->pEventData,
20832 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020833
20834 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020835 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020836
20837 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020838 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020839 {
20840 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020841 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20842 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20843
20844 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20845 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053020846 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020847 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020848
Jeff Johnson295189b2012-06-20 16:38:30 -070020849 /*Notify UMAC*/
20850 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20851
20852 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20853 {
20854 /* Free the allocated buffer */
20855 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20856 }
20857 return WDI_STATUS_SUCCESS;
20858}
20859
20860/*==========================================================================
20861 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020862
Jeff Johnson295189b2012-06-20 16:38:30 -070020863 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020864 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020865==========================================================================*/
20866/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020867 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020868 when it wishes to send up a notification like the ones
20869 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020870
Jeff Johnson295189b2012-06-20 16:38:30 -070020871 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020872
20873 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020874 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020875 wctsNotifyCBData: the callback data of the user
20876
Jeff Johnson295189b2012-06-20 16:38:30 -070020877 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020878
20879 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020880*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020881void
Jeff Johnson295189b2012-06-20 16:38:30 -070020882WDI_NotifyMsgCTSCB
20883(
Jeff Johnsone7245742012-09-05 17:12:55 -070020884 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020885 WCTS_NotifyEventType wctsEvent,
20886 void* wctsNotifyCBData
20887)
20888{
Jeff Johnsone7245742012-09-05 17:12:55 -070020889 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20891
20892 if (NULL == pWDICtx )
20893 {
20894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020895 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020896 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020897 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020898 }
20899
20900 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20901 {
20902 /* callback presumably occurred after close */
20903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020904 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020905 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020906 }
20907
20908 if ( WCTS_EVENT_OPEN == wctsEvent )
20909 {
20910 /*Flag must be set atomically as it is checked from incoming request
20911 functions*/
20912 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020913 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020914
20915 /*Nothing to do - so try to dequeue any pending request that may have
20916 occurred while we were trying to establish this*/
20917 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020918 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020919 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020920 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020921 {
20922 /*Flag must be set atomically as it is checked from incoming request
20923 functions*/
20924 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020925 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020926
20927 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020928 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020929 wpalMutexRelease(&pWDICtx->wptMutex);
20930
20931 /*Notify that the Control Channel is closed */
20932 wpalEventSet(&pWDICtx->wctsActionEvent);
20933 }
20934
20935}/*WDI_NotifyMsgCTSCB*/
20936
20937
20938/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020939 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020940 when it wishes to send up a packet received over the
20941 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020942
Jeff Johnson295189b2012-06-20 16:38:30 -070020943 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020944
20945 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020946 pMsg: the packet
20947 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020948 wctsRxMsgCBData: the callback data of the user
20949
Jeff Johnson295189b2012-06-20 16:38:30 -070020950 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020951
20952 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020953*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020954void
20955WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020956(
Jeff Johnsone7245742012-09-05 17:12:55 -070020957 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020958 void* pMsg,
20959 wpt_uint32 uLen,
20960 void* wctsRxMsgCBData
20961)
20962{
Jeff Johnsone7245742012-09-05 17:12:55 -070020963 tHalMsgHeader *pHalMsgHeader;
20964 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020965 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20967
20968 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020970 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020971 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020972 ( uLen < sizeof(tHalMsgHeader)))
20973 {
20974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020977 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020978 }
20979
20980 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20981 {
20982 /* callback presumably occurred after close */
20983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020984 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020985 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020986 }
20987
Jeff Johnsone7245742012-09-05 17:12:55 -070020988 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020989 context - so no serialization is necessary here
20990 ! - revisit this assumption */
20991
20992 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20993
20994 if ( uLen != pHalMsgHeader->msgLen )
20995 {
20996 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20997 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020998 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20999 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021000 }
21001
21002 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
21003
21004 /*The message itself starts after the header*/
21005 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
21006 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
21007 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
21008 wdiEventData.pUserData = gWDICb.pRspCBUserData;
21009
21010
21011 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
21012 {
21013 /*Stop the timer as the response was received */
21014 /*!UT - check for potential race conditions between stop and response */
21015 wpalTimerStop(&pWDICtx->wptResponseTimer);
21016 }
21017 /* Check if we receive a response message which is not expected */
21018 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
21019 {
21020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21021 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
21022 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070021023 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070021024 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21025 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080021026
21027 if (gWDICb.bEnableSSR == false)
21028 {
21029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21030 "SSR is not enabled on WDI timeout");
21031 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21032 return;
21033 }
21034 wpalWcnssResetIntr();
21035 /* if this timer fires, it means Riva did not receive the FIQ */
21036 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
21037
Jeff Johnson295189b2012-06-20 16:38:30 -070021038 return;
21039 }
21040
21041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21042 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
21043
21044 /*Post response event to the state machine*/
21045 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
21046
21047}/*WDI_RXMsgCTSCB*/
21048
21049
21050/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021051 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070021052========================================================================*/
21053
21054/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021055 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070021056 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070021057
Jeff Johnson295189b2012-06-20 16:38:30 -070021058 @param pWDICtx - pointer to the control block
21059
21060 @return Result of the function call
21061*/
21062WPT_INLINE WDI_Status
21063WDI_CleanCB
21064(
21065 WDI_ControlBlockType* pWDICtx
21066)
21067{
21068 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21069
21070 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021071 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070021072
Jeff Johnsone7245742012-09-05 17:12:55 -070021073 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070021074 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
21075 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
21076
21077 WDI_ResetAssocSessions( pWDICtx );
21078
21079 return WDI_STATUS_SUCCESS;
21080}/*WDI_CleanCB*/
21081
21082
21083/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021084 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021085
Jeff Johnsone7245742012-09-05 17:12:55 -070021086
21087 @param pWDICtx: pointer to the WLAN DAL context
21088 pEventData: pointer to the event information structure
21089
Jeff Johnson295189b2012-06-20 16:38:30 -070021090 @see
21091 @return Result of the function call
21092*/
21093WPT_INLINE WDI_Status
21094WDI_ProcessRequest
21095(
21096 WDI_ControlBlockType* pWDICtx,
21097 WDI_EventInfoType* pEventData
21098)
21099{
21100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21101
Jeff Johnsone7245742012-09-05 17:12:55 -070021102 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070021103 already checked these pointers*/
21104
21105 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
21106 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021107 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021109 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021110 WDI_getReqMsgString(pEventData->wdiRequest),
21111 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
21112 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
21113 }
21114 else
21115 {
21116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021117 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021118 pEventData->wdiRequest);
21119 return WDI_STATUS_E_NOT_IMPLEMENT;
21120 }
21121}/*WDI_ProcessRequest*/
21122
21123
21124/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021125 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070021126 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070021127 prefixes it with a send message header
21128
21129 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021130 wdiReqType: type of the request being sent
21131 uBufferLen: message buffer len
21132 pMsgBuffer: resulting allocated buffer
21133 pusDataOffset: offset in the buffer where the caller
21134 can start copying its message data
21135 puBufferSize: the resulting buffer size (offset+buff
21136 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070021137
Jeff Johnson295189b2012-06-20 16:38:30 -070021138 @see
21139 @return Result of the function call
21140*/
21141WDI_Status
21142WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070021143(
21144 WDI_ControlBlockType* pWDICtx,
21145 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070021146 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070021147 wpt_uint8** pMsgBuffer,
21148 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070021149 wpt_uint16* pusBufferSize
21150)
21151{
21152 tHalMsgHeader halMsgHeader;
21153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21154
Jeff Johnsone7245742012-09-05 17:12:55 -070021155 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070021156 again*/
21157
21158 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021159 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021160 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021161 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070021162 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
21163 if ( NULL == *pMsgBuffer )
21164 {
21165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21166 "Unable to allocate message buffer for req %s (%d)",
21167 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070021168 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070021169 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021170 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021171 }
21172
21173 /*-------------------------------------------------------------------------
21174 Fill in the message header
21175 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021176 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
21177 /* Fill msgVersion */
21178#ifdef WLAN_FEATURE_11AC
21179 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021180 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021181 else
21182#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021183 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021184
Jeff Johnsone7245742012-09-05 17:12:55 -070021185 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
21186 *pusDataOffset = sizeof(halMsgHeader);
21187 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
21188
21189 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021190}/*WDI_GetMessageBuffer*/
21191
21192
21193/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021194 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070021195 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070021196 the CB
21197
21198 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021199 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021200
Jeff Johnson295189b2012-06-20 16:38:30 -070021201 usSendSize size of the buffer to be sent
21202 pRspCb: response callback - save in the WDI
21203 CB
21204 pUserData: user data associated with the
21205 callback
21206 wdiExpectedResponse: the code of the response that is
21207 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070021208
Jeff Johnson295189b2012-06-20 16:38:30 -070021209 @see
21210 @return Result of the function call
21211*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021212WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021213WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070021214(
21215 WDI_ControlBlockType* pWDICtx,
21216 wpt_uint8* pSendBuffer,
21217 wpt_uint32 usSendSize,
21218 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070021219 void* pUserData,
21220 WDI_ResponseEnumType wdiExpectedResponse
21221)
21222{
Jeff Johnsond13512a2012-07-17 11:42:19 -070021223 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021224 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070021225 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21226
21227 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021228 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070021229 ------------------------------------------------------------------------*/
21230 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021231 pWDICtx->pfncRspCB = pRspCb;
21232 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021233
21234 /*-----------------------------------------------------------------------
21235 Call the CTS to send this message over - free message afterwards
21236 - notify transport failure
21237 Note: CTS is reponsible for freeing the message buffer.
21238 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021239 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
21240 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
21241 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070021242 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021244 "Failed to send message over the bus - catastrophic failure");
21245
Jeff Johnsond13512a2012-07-17 11:42:19 -070021246 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021247 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021248 else
21249 {
21250 /* even when message was placed in CTS deferred Q, we will treat it
21251 success but log this info
21252 */
21253 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
21254 {
21255 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21256 "WDI_SendMsg: message placed in CTS deferred Q, expected "
21257 "response %s (%d)",
21258 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21259 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021260 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021261 }
21262 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021263
Jeff Johnsond13512a2012-07-17 11:42:19 -070021264 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021265 if ( NULL != pWDICtx->wdiReqStatusCB )
21266 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021267 /*Inform originator whether request went through or not*/
21268 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
21269 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021270 pWDICtx->wdiReqStatusCB = NULL;
21271 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070021272 callback(wdiStatus, callbackContext);
21273
21274 /*For WDI requests which have registered a request callback,
21275 inform the WDA caller of the same via setting the return value
21276 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
21277 end up repeating the functonality in the req callback for the
21278 WDI_STATUS_E_FAILURE case*/
21279 if (wdiStatus == WDI_STATUS_E_FAILURE)
21280 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021281 }
21282
Jeff Johnsond13512a2012-07-17 11:42:19 -070021283 if ( wdiStatus == WDI_STATUS_SUCCESS )
21284 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021285 /*Start timer for the expected response */
21286 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021287
21288 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021289 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080021290 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021291 }
21292 else
21293 {
Jeff Johnson902c9832012-12-10 14:28:09 -080021294 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021295 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21296 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021297
Jeff Johnsond13512a2012-07-17 11:42:19 -070021298 return wdiStatus;
21299
Jeff Johnson295189b2012-06-20 16:38:30 -070021300}/*WDI_SendMsg*/
21301
21302
21303
21304/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021305 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021306 the bus using the control transport and saves some info
21307 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021308
21309 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021310 pSendBuffer: buffer to be sent
21311 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021312
Jeff Johnson295189b2012-06-20 16:38:30 -070021313 @see
21314 @return Result of the function call
21315*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021316WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021317WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021318(
21319 WDI_ControlBlockType* pWDICtx,
21320 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021321 wpt_uint32 usSendSize
21322)
21323{
21324 wpt_uint32 uStatus ;
21325 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21326
21327 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021328 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021329 Note: CTS is reponsible for freeing the message buffer.
21330 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021331 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021332 (void*)pSendBuffer, usSendSize );
21333
21334 /*Inform Upper MAC about the outcome of the request*/
21335 if ( NULL != pWDICtx->wdiReqStatusCB )
21336 {
21337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21338 "Send indication status : %d", uStatus);
21339
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021340 /* even if CTS placed indication into its deferred Q, we treat it
21341 * as success and let CTS drain its queue as per smd interrupt to CTS
21342 */
21343 pWDICtx->wdiReqStatusCB( ((uStatus != eWLAN_PAL_STATUS_SUCCESS) && (uStatus != eWLAN_PAL_STATUS_E_RESOURCES)) ? WDI_STATUS_E_FAILURE: WDI_STATUS_SUCCESS,
Jeff Johnsone7245742012-09-05 17:12:55 -070021344 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021345 }
21346
21347 /*If sending of the message failed - it is considered catastrophic and
21348 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021349 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21350 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21351
Jeff Johnson295189b2012-06-20 16:38:30 -070021352 {
21353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021354 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021355
21356 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21357 return WDI_STATUS_E_FAILURE;
21358 }
21359
Jeff Johnsone7245742012-09-05 17:12:55 -070021360 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021361}/*WDI_SendIndication*/
21362
21363
21364/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021365 @brief WDI_DetectedDeviceError - called internally by DAL when
21366 it has detected a failure in the device
21367
21368 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021369 usErrorCode: error code detected by WDI or received
21370 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021371
Jeff Johnson295189b2012-06-20 16:38:30 -070021372 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021373 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021374*/
21375void
21376WDI_DetectedDeviceError
21377(
21378 WDI_ControlBlockType* pWDICtx,
21379 wpt_uint16 usErrorCode
21380)
21381{
21382 WDI_LowLevelIndType wdiInd;
21383 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21384
21385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21386 "Device Error detected code: %d - transitioning to stopped state",
21387 usErrorCode);
21388
21389 wpalMutexAcquire(&pWDICtx->wptMutex);
21390
21391 WDI_STATableStop(pWDICtx);
21392
21393 WDI_ResetAssocSessions(pWDICtx);
21394
21395 /*Set the expected state transition to stopped - because the device
21396 experienced a failure*/
21397 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21398
21399 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021400 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021401
Jeff Johnsone7245742012-09-05 17:12:55 -070021402 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021403
21404 /*TO DO: - there should be an attempt to reset the device here*/
21405
21406 wpalMutexRelease(&pWDICtx->wptMutex);
21407
21408 /*------------------------------------------------------------------------
21409 Notify UMAC if a handler is registered
21410 ------------------------------------------------------------------------*/
21411 if (pWDICtx->wdiLowLevelIndCB)
21412 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021413 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21414 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021415
21416 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21417 }
21418}/*WDI_DetectedDeviceError*/
21419
21420/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021421 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021422 we started on send message has expire - this should
21423 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021424 reply - trigger catastrophic failure
21425 @param
21426
Jeff Johnson295189b2012-06-20 16:38:30 -070021427 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070021428
21429 @see
21430 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021431*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021432void
Jeff Johnson295189b2012-06-20 16:38:30 -070021433WDI_ResponseTimerCB
21434(
21435 void *pUserData
21436)
21437{
21438 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
21439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21440
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021441 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070021442 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021443 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021444 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021445 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021446 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021447 }
21448
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021449 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021450 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080021451 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021452
21453 /* If response timer is running at this time that means this timer
21454 * event is not for the last request but rather last-to-last request and
21455 * this timer event has come after we recevied respone for last-to-last
21456 * message
21457 */
21458 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
21459 {
21460 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21461 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021462 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021463 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080021464 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21465 "uArchTimeStampTmrStart: %llu seconds, "
21466 "uArchTimeStampTmrExp: %llu seconds",
21467 pWDICtx->uArchTimeStampRspTmrStart,
21468 pWDICtx->uArchTimeStampRspTmrExp);
21469
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021470 return;
21471 }
21472
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021473 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070021474 {
21475
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021476 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021477 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021478 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070021479 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021480 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21481 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080021482 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21483 "uArchTimeStampTmrStart: %llu seconds, "
21484 "uArchTimeStampTmrExp: %llu seconds",
21485 pWDICtx->uArchTimeStampRspTmrStart,
21486 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021487
21488 /* WDI timeout means Riva is not responding or SMD communication to Riva
21489 * is not happening. The only possible way to recover from this error
21490 * is to initiate SSR from APPS.
21491 * There is also an option to re-enable wifi, which will eventually
21492 * trigger SSR
21493 */
21494 if (gWDICb.bEnableSSR == false)
21495 {
21496 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21497 "SSR is not enabled on WDI timeout");
21498 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21499 return;
21500 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021501#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Katya Nigama0e98e42014-02-05 13:46:40 +053021502 if(wpalIsWDresetInProgress())
21503 {
21504 wpalDevicePanic();
21505 }
21506
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021507 wpalWcnssResetIntr();
21508 /* if this timer fires, it means Riva did not receive the FIQ */
21509 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021510#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021511 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21512 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021513#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021514 }
21515 else
21516 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021517 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021518 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021519 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021520 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21521 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080021522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21523 "uArchTimeStampTmrStart: %llu seconds, "
21524 "uArchTimeStampTmrExp: %llu seconds",
21525 pWDICtx->uArchTimeStampRspTmrStart,
21526 pWDICtx->uArchTimeStampRspTmrExp);
21527
Jeff Johnson295189b2012-06-20 16:38:30 -070021528 }
21529
21530 return;
21531
21532}/*WDI_ResponseTimerCB*/
21533
21534
21535/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021536 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021537
Jeff Johnsone7245742012-09-05 17:12:55 -070021538
21539 @param pWDICtx: pointer to the WLAN DAL context
21540 pEventData: pointer to the event information structure
21541
Jeff Johnson295189b2012-06-20 16:38:30 -070021542 @see
21543 @return Result of the function call
21544*/
21545WPT_INLINE WDI_Status
21546WDI_ProcessResponse
21547(
21548 WDI_ControlBlockType* pWDICtx,
21549 WDI_EventInfoType* pEventData
21550)
21551{
21552 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21553
Jeff Johnsone7245742012-09-05 17:12:55 -070021554 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070021555 already checked these pointers
21556 ! - revisit this assumption */
21557 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
21558 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021559 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021561 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021562 WDI_getRespMsgString(pEventData->wdiResponse),
21563 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
21564 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
21565 }
21566 else
21567 {
21568 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021569 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021570 pEventData->wdiResponse);
21571 return WDI_STATUS_E_NOT_IMPLEMENT;
21572 }
21573}/*WDI_ProcessResponse*/
21574
21575
21576/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021577 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070021578=========================================================================*/
21579
21580/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021581 @brief Utility function used by the DAL Core to help queue a
21582 request that cannot be processed right away.
21583 @param
21584
Jeff Johnson295189b2012-06-20 16:38:30 -070021585 pWDICtx: - pointer to the WDI control block
21586 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021587 queued
21588
21589 @see
21590 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021591*/
21592WDI_Status
21593WDI_QueuePendingReq
21594(
21595 WDI_ControlBlockType* pWDICtx,
21596 WDI_EventInfoType* pEventData
21597)
21598{
Jeff Johnsone7245742012-09-05 17:12:55 -070021599 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021600 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070021601 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021602 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21603
21604 if ( NULL == pEventDataQueue )
21605 {
21606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021607 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070021608 WDI_ASSERT(0);
21609 return WDI_STATUS_MEM_FAILURE;
21610 }
21611
21612 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21613 pEventDataQueue->pUserData = pEventData->pUserData;
21614 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21615 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021616 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021617
21618 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
21619 {
21620 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070021621
Jeff Johnson295189b2012-06-20 16:38:30 -070021622 if ( NULL == pEventInfo )
21623 {
21624 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021625 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070021626 WDI_ASSERT(0);
21627 wpalMemoryFree(pEventDataQueue);
21628 return WDI_STATUS_MEM_FAILURE;
21629 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021630
Jeff Johnson295189b2012-06-20 16:38:30 -070021631 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21632
21633 }
21634 pEventDataQueue->pEventData = pEventInfo;
21635
21636 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021637 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021638
Jeff Johnsone7245742012-09-05 17:12:55 -070021639 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021640
21641 return WDI_STATUS_SUCCESS;
21642}/*WDI_QueuePendingReq*/
21643
21644/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021645 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021646 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021647 @param
21648
21649 pMsg - pointer to the message
21650
21651 @see
21652 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021653*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021654void
Jeff Johnson295189b2012-06-20 16:38:30 -070021655WDI_PALCtrlMsgCB
21656(
21657 wpt_msg *pMsg
21658)
21659{
21660 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021661 WDI_ControlBlockType* pWDICtx = NULL;
21662 WDI_Status wdiStatus;
21663 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021664 void* pUserData;
21665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21666
21667 if (( NULL == pMsg )||
21668 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21669 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21670 {
21671 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021672 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021673 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021674 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021675 }
21676
21677 /*Transition back to the state that we had before serialization
21678 - serialization transitions us to BUSY to stop any incomming requests
21679 ! TO DO L: possible race condition here if a request comes in between the
21680 state transition and the post function*/
21681
Jeff Johnsone7245742012-09-05 17:12:55 -070021682 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021683
21684 /*-----------------------------------------------------------------------
21685 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021686 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021687 -----------------------------------------------------------------------*/
21688 switch ( pEventData->wdiRequest )
21689 {
21690
Jeff Johnsone7245742012-09-05 17:12:55 -070021691 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021692 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21693 break;
21694
Jeff Johnson295189b2012-06-20 16:38:30 -070021695 case WDI_NV_DOWNLOAD_REQ:
21696 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21697 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21698 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21699 {
21700 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021701 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021702 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21703 }
21704 else
21705 {
21706 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21707 }
21708
21709 break;
21710
21711 default:
21712 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21713 break;
21714 }/*switch ( pEventData->wdiRequest )*/
21715
21716 if ( WDI_STATUS_SUCCESS != wdiStatus )
21717 {
21718 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21719
21720 if ( NULL != pfnReqStatusCB )
21721 {
21722 /*Fail the request*/
21723 pfnReqStatusCB( wdiStatus, pUserData);
21724 }
21725 }
21726
21727 /* Free data - that was allocated when queueing*/
21728 if( pEventData != NULL )
21729 {
21730 if( pEventData->pEventData != NULL )
21731 {
21732 wpalMemoryFree(pEventData->pEventData);
21733 }
21734 wpalMemoryFree(pEventData);
21735 }
21736
21737 if( pMsg != NULL )
21738 {
21739 wpalMemoryFree(pMsg);
21740 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021741
Jeff Johnson295189b2012-06-20 16:38:30 -070021742}/*WDI_PALCtrlMsgCB*/
21743
21744/**
21745 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021746 and schedule for execution a pending request
21747 @param
21748
Jeff Johnson295189b2012-06-20 16:38:30 -070021749 pWDICtx: - pointer to the WDI control block
21750 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021751 queued
21752
21753 @see
21754 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021755*/
21756WDI_Status
21757WDI_DequeuePendingReq
21758(
21759 WDI_ControlBlockType* pWDICtx
21760)
21761{
Jeff Johnsone7245742012-09-05 17:12:55 -070021762 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021763 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021764 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021765 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21766
Jeff Johnsone7245742012-09-05 17:12:55 -070021767 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021768
21769 if ( NULL == pNode )
21770 {
21771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021772 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021773 return WDI_STATUS_SUCCESS;
21774 }
21775
21776 /*The node actually points to the 1st element inside the Event Data struct -
21777 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021778 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021779
21780 /*Serialize processing in the control thread
21781 !TO DO: - check to see if these are all the messages params that need
21782 to be filled in*/
21783 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21784
21785 if ( NULL == palMsg )
21786 {
21787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021788 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021789 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021790 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021791 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021792 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021793 palMsg->callback = WDI_PALCtrlMsgCB;
21794 palMsg->ptr = pEventData;
21795
21796 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021797 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080021798 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070021799
Jeff Johnson295189b2012-06-20 16:38:30 -070021800 /*Transition back to BUSY as we need to handle a queued request*/
21801 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021802
Jeff Johnson295189b2012-06-20 16:38:30 -070021803 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21804
21805 return WDI_STATUS_PENDING;
21806}/*WDI_DequeuePendingReq*/
21807
21808
21809/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021810 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021811 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021812 away.- The assoc requests will be queued by BSSID
21813 @param
21814
Jeff Johnson295189b2012-06-20 16:38:30 -070021815 pWDICtx: - pointer to the WDI control block
21816 pEventData: pointer to the evnt info that needs to be queued
21817 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021818
21819 @see
21820 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021821*/
21822WDI_Status
21823WDI_QueueNewAssocRequest
21824(
21825 WDI_ControlBlockType* pWDICtx,
21826 WDI_EventInfoType* pEventData,
21827 wpt_macAddr macBSSID
21828)
21829{
Jeff Johnsone7245742012-09-05 17:12:55 -070021830 wpt_uint8 i;
21831 WDI_BSSSessionType* pSession = NULL;
21832 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021833 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021834 void* pEventInfo;
21835 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021836 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021837
Jeff Johnsone7245742012-09-05 17:12:55 -070021838
21839 /*------------------------------------------------------------------------
21840 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021841 ------------------------------------------------------------------------*/
21842 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21843 {
21844 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21845 {
21846 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021847 pSession = &pWDICtx->aBSSSessions[i];
21848 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021849 }
21850 }
21851
21852 if ( i >= WDI_MAX_BSS_SESSIONS )
21853 {
21854 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021855 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021856 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021857
Jeff Johnson295189b2012-06-20 16:38:30 -070021858 /*------------------------------------------------------------------------
21859 Fill in the BSSID for this session and set the usage flag
21860 ------------------------------------------------------------------------*/
21861 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021862 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021863
21864 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021865 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021866 ------------------------------------------------------------------------*/
21867 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21868 if ( NULL == pEventDataQueue )
21869 {
21870 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021871 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021872 WDI_ASSERT(0);
21873 return WDI_STATUS_MEM_FAILURE;
21874 }
21875
21876 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21877 if ( NULL == pSessionIdElement )
21878 {
21879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021880 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021881 WDI_ASSERT(0);
21882 wpalMemoryFree(pEventDataQueue);
21883 return WDI_STATUS_MEM_FAILURE;
21884 }
21885
21886 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21887 if ( NULL == pEventInfo )
21888 {
21889 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021890 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021891 WDI_ASSERT(0);
21892 wpalMemoryFree(pSessionIdElement);
21893 wpalMemoryFree(pEventDataQueue);
21894 return WDI_STATUS_MEM_FAILURE;
21895 }
21896
21897 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21898 pEventDataQueue->pUserData = pEventData->pUserData;
21899 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21900 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021901 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021902
21903 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21904 pEventDataQueue->pEventData = pEventInfo;
21905
21906 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021907 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021908
21909 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021910 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021911
Jeff Johnsone7245742012-09-05 17:12:55 -070021912 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021913
21914 /*We need to maintain a separate list that keeps track of the order in which
21915 the new assoc requests are being queued such that we can start processing
21916 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021917 pSessionIdElement->ucIndex = i;
21918 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021919
21920 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21921 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021922 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021923
21924 /*Return pending as this is what the status of the request is since it has
21925 been queued*/
21926 return WDI_STATUS_PENDING;
21927}/*WDI_QueueNewAssocRequest*/
21928
21929/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021930 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021931 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021932 away.- The assoc requests will be queued by BSSID
21933 @param
21934
Jeff Johnson295189b2012-06-20 16:38:30 -070021935 pWDICtx: - pointer to the WDI control block
21936 pSession: - session in which to queue
21937 pEventData: pointer to the event info that needs to be
21938 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021939
21940 @see
21941 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021942*/
21943WDI_Status
21944WDI_QueueAssocRequest
21945(
21946 WDI_ControlBlockType* pWDICtx,
21947 WDI_BSSSessionType* pSession,
21948 WDI_EventInfoType* pEventData
21949)
21950{
Jeff Johnsone7245742012-09-05 17:12:55 -070021951 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021952 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021953 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021954 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021955
21956 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021957 Sanity check
21958 ------------------------------------------------------------------------*/
21959 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21960 {
21961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021962 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021963
Jeff Johnsone7245742012-09-05 17:12:55 -070021964 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021965 }
21966
21967 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021968 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021969 ------------------------------------------------------------------------*/
21970 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21971 if ( NULL == pEventDataQueue )
21972 {
21973 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021974 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021975 WDI_ASSERT(0);
21976 return WDI_STATUS_MEM_FAILURE;
21977 }
21978
21979 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21980 if ( NULL == pEventInfo )
21981 {
21982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21983 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021984 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021985 WDI_ASSERT(0);
21986 wpalMemoryFree(pEventDataQueue);
21987 return WDI_STATUS_MEM_FAILURE;
21988 }
21989
21990 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21991 pEventDataQueue->pUserData = pEventData->pUserData;
21992 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21993 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021994 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021995 pEventDataQueue->pEventData = pEventInfo;
21996
21997 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21998
21999 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022000 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022001
22002 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022003 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022004
Jeff Johnsone7245742012-09-05 17:12:55 -070022005 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022006
22007 /*The result of this operation is pending because the request has been
22008 queued and it will be processed at a later moment in time */
22009 return WDI_STATUS_PENDING;
22010}/*WDI_QueueAssocRequest*/
22011
22012/**
22013 @brief Utility function used by the DAL Core to help dequeue
22014 an association request that was pending
22015 The request will be queued up in front of the main
22016 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070022017 @param
22018
Jeff Johnson295189b2012-06-20 16:38:30 -070022019 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022020
22021
22022 @see
22023 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022024*/
22025WDI_Status
22026WDI_DequeueAssocRequest
22027(
22028 WDI_ControlBlockType* pWDICtx
22029)
22030{
Jeff Johnsone7245742012-09-05 17:12:55 -070022031 wpt_list_node* pNode = NULL;
22032 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022033 WDI_BSSSessionType* pSession;
22034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022035
22036 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022037 Sanity check
22038 ------------------------------------------------------------------------*/
22039 if ( NULL == pWDICtx )
22040 {
22041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022042 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022043
Jeff Johnsone7245742012-09-05 17:12:55 -070022044 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022045 }
22046
22047 /*------------------------------------------------------------------------
22048 An association has been completed => a new association can occur
22049 Check to see if there are any pending associations ->
22050 If so , transfer all the pending requests into the busy queue for
22051 processing
22052 These requests have arrived prior to the requests in the busy queue
22053 (bc they needed to be processed in order to be placed in this queue)
22054 => they will be placed at the front of the busy queue
22055 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022056 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022057
22058 if ( NULL == pNode )
22059 {
22060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022061 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022062 return WDI_STATUS_SUCCESS;
22063 }
22064
22065 /*The node actually points to the 1st element inside the Session Id struct -
22066 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022067 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022068
22069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22070 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
22071
22072 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
22073 {
22074 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070022075
Jeff Johnson295189b2012-06-20 16:38:30 -070022076 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070022077 the front of the main waiting queue for subsequent execution*/
22078 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022079 while ( NULL != pNode )
22080 {
22081 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022082 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
22083 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022084 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022085 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022086 }
22087 else
22088 {
22089 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022090 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070022091 WPAL_ASSERT(0);
22092 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070022093 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022094 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022095
Jeff Johnson295189b2012-06-20 16:38:30 -070022096 /*Clean this up as it is no longer needed in order to prevent memory leak*/
22097 wpalMemoryFree(pSessionIdElement);
22098 return WDI_STATUS_SUCCESS;
22099}/*WDI_DequeueAssocRequest*/
22100
22101/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022102 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070022103 pending requests - all req cb will be called with
22104 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070022105 @param
22106
Jeff Johnson295189b2012-06-20 16:38:30 -070022107 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022108
22109 @see
22110 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022111*/
22112WDI_Status
22113WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070022114(
Jeff Johnson295189b2012-06-20 16:38:30 -070022115 WDI_ControlBlockType* pWDICtx
22116)
22117{
Jeff Johnsone7245742012-09-05 17:12:55 -070022118 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022119 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022120 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022121 void* pUserData;
22122 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22123
Jeff Johnsone7245742012-09-05 17:12:55 -070022124 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022125
22126 /*------------------------------------------------------------------------
22127 Go through all the requests and fail them - this will only be called
22128 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070022129 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022130 ------------------------------------------------------------------------*/
22131 while( pNode )
22132 {
22133 /*The node actually points to the 1st element inside the Event Data struct -
22134 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022135 pEventDataQueue = (WDI_EventInfoType*)pNode;
22136
Jeff Johnson295189b2012-06-20 16:38:30 -070022137 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
22138 if ( NULL != pfnReqStatusCB )
22139 {
22140 /*Fail the request*/
22141 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
22142 }
22143 /* Free data - that was allocated when queueing */
22144 if ( pEventDataQueue->pEventData != NULL )
22145 {
22146 wpalMemoryFree(pEventDataQueue->pEventData);
22147 }
22148 wpalMemoryFree(pEventDataQueue);
22149
22150 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
22151 {
22152 break;
22153 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022154 }
22155
Jeff Johnson295189b2012-06-20 16:38:30 -070022156 return WDI_STATUS_SUCCESS;
22157}/*WDI_ClearPendingRequests*/
22158
22159/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022160 @brief Helper routine used to init the BSS Sessions in the WDI control block
22161
22162
22163 @param pWDICtx: pointer to the WLAN DAL context
22164
Jeff Johnson295189b2012-06-20 16:38:30 -070022165 @see
22166*/
22167void
22168WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022169(
Jeff Johnson295189b2012-06-20 16:38:30 -070022170 WDI_ControlBlockType* pWDICtx
22171)
22172{
Jeff Johnsone7245742012-09-05 17:12:55 -070022173 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022174 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22175
22176 /*-------------------------------------------------------------------------
22177 No Sanity check
22178 -------------------------------------------------------------------------*/
22179 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22180 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022181 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070022182 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
22183 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
22184 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
22185 }
22186}/*WDI_ResetAssocSessions*/
22187
22188/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022189 @brief Helper routine used to find a session based on the BSSID
22190
22191
22192 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022193 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070022194 pSession: pointer to the session (if found)
22195
Jeff Johnson295189b2012-06-20 16:38:30 -070022196 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022197 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022198*/
22199wpt_uint8
22200WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022201(
Jeff Johnson295189b2012-06-20 16:38:30 -070022202 WDI_ControlBlockType* pWDICtx,
22203 wpt_macAddr macBSSID,
22204 WDI_BSSSessionType** ppSession
22205)
22206{
Jeff Johnsone7245742012-09-05 17:12:55 -070022207 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022208 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22209
22210 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022211 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022212 -------------------------------------------------------------------------*/
22213 if ( NULL == ppSession )
22214 {
22215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022216 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022217 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022218 }
22219
Jeff Johnsone7245742012-09-05 17:12:55 -070022220 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022221
Jeff Johnsone7245742012-09-05 17:12:55 -070022222 /*------------------------------------------------------------------------
22223 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022224 ------------------------------------------------------------------------*/
22225 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22226 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070022227 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
22228 (eWLAN_PAL_TRUE ==
22229 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22230 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070022231 {
22232 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022233 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022234 return i;
22235 }
22236 }
22237
Jeff Johnsone7245742012-09-05 17:12:55 -070022238 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022239}/*WDI_FindAssocSession*/
22240
22241/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022242 @brief Helper routine used to find a session based on the BSSID
22243
22244
22245 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022246 ucBSSIdx: BSS Index of the session
22247 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022248
Jeff Johnson295189b2012-06-20 16:38:30 -070022249 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022250 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022251*/
22252wpt_uint8
22253WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022254(
Jeff Johnson295189b2012-06-20 16:38:30 -070022255 WDI_ControlBlockType* pWDICtx,
22256 wpt_uint16 ucBSSIdx,
22257 WDI_BSSSessionType** ppSession
22258)
22259{
Jeff Johnsone7245742012-09-05 17:12:55 -070022260 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022261 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22262
22263 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022264 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022265 -------------------------------------------------------------------------*/
22266 if ( NULL == ppSession )
22267 {
22268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022269 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022270 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022271 }
22272
Jeff Johnsone7245742012-09-05 17:12:55 -070022273 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022274
Jeff Johnsone7245742012-09-05 17:12:55 -070022275 /*------------------------------------------------------------------------
22276 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022277 ------------------------------------------------------------------------*/
22278 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22279 {
22280 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
22281 {
22282 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022283 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022284 return i;
22285 }
22286 }
22287
Jeff Johnsone7245742012-09-05 17:12:55 -070022288 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022289}/*WDI_FindAssocSessionByBSSIdx*/
22290
22291/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022292 @brief Helper routine used to find a session based on the BSSID
22293
22294
22295 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022296 ucBSSIdx: BSS Index of the session
22297 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022298
Jeff Johnson295189b2012-06-20 16:38:30 -070022299 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022300 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022301*/
22302wpt_uint8
22303WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022304(
Jeff Johnson295189b2012-06-20 16:38:30 -070022305 WDI_ControlBlockType* pWDICtx,
22306 wpt_uint16 usIdx,
22307 WDI_BSSSessionType** ppSession
22308)
22309{
22310 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22311
22312 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022313 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022314 -------------------------------------------------------------------------*/
22315 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22316 {
22317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022318 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022319 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022320 }
22321
22322 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022323 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022324
22325 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022326
Jeff Johnson295189b2012-06-20 16:38:30 -070022327}/*WDI_FindAssocSessionByBSSIdx*/
22328
22329/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022330 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022331 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022332
22333
22334 @param pWDICtx: pointer to the WLAN DAL context
22335 pSession: pointer to the session (if found)
22336
Jeff Johnson295189b2012-06-20 16:38:30 -070022337 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022338 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022339*/
22340wpt_uint8
22341WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022342(
Jeff Johnson295189b2012-06-20 16:38:30 -070022343 WDI_ControlBlockType* pWDICtx,
22344 WDI_BSSSessionType** ppSession
22345)
22346{
Jeff Johnsone7245742012-09-05 17:12:55 -070022347 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022348 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22349 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022350 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022351 -------------------------------------------------------------------------*/
22352 if ( NULL == ppSession )
22353 {
22354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022355 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022356 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022357 }
22358
Jeff Johnsone7245742012-09-05 17:12:55 -070022359 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022360
Jeff Johnsone7245742012-09-05 17:12:55 -070022361 /*------------------------------------------------------------------------
22362 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022363 ------------------------------------------------------------------------*/
22364 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22365 {
22366 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22367 {
22368 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022369 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022370 return i;
22371 }
22372 }
22373
Jeff Johnsone7245742012-09-05 17:12:55 -070022374 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022375}/*WDI_FindEmptySession*/
22376
22377
22378/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022379 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022380 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022381
22382
22383 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022384 macBSSID: pointer to BSSID. If NULL, get all the session.
22385 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22386 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22387 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022388 @see
22389 @return Number of sessions in use
22390*/
22391wpt_uint8
22392WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022393(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022394 WDI_ControlBlockType* pWDICtx,
22395 wpt_macAddr macBSSID,
22396 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022397)
22398{
Jeff Johnsone7245742012-09-05 17:12:55 -070022399 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022400 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022401
22402 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022403 Count all sessions in use
22404 ------------------------------------------------------------------------*/
22405 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22406 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022407 if ( macBSSID && skipBSSID &&
22408 (eWLAN_PAL_TRUE ==
22409 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22410 WDI_MAC_ADDR_LEN)))
22411 {
22412 continue;
22413 }
22414 else if ( pWDICtx->aBSSSessions[i].bInUse )
22415 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022416 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022417 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022418 }
22419
Jeff Johnsone7245742012-09-05 17:12:55 -070022420 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022421}/*WDI_GetActiveSessionsCount*/
22422
22423/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022424 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022425 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022426
22427
22428 @param pWDICtx: pointer to the WLAN DAL context
22429 pSession: pointer to the session (if found)
22430
Jeff Johnson295189b2012-06-20 16:38:30 -070022431 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022432 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022433*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022434void
Jeff Johnson295189b2012-06-20 16:38:30 -070022435WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022436(
Jeff Johnson295189b2012-06-20 16:38:30 -070022437 WDI_ControlBlockType* pWDICtx,
22438 WDI_BSSSessionType* ppSession
22439)
22440{
22441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022442 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022443 -------------------------------------------------------------------------*/
22444 if ( NULL == ppSession )
22445 {
22446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022447 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022448 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022449 }
22450
Jeff Johnsone7245742012-09-05 17:12:55 -070022451 /*------------------------------------------------------------------------
22452 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070022453 ------------------------------------------------------------------------*/
22454 wpal_list_destroy(&ppSession->wptPendingQueue);
22455 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070022456 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
22457 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022458 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
22459 wpal_list_init(&ppSession->wptPendingQueue);
22460
22461}/*WDI_DeleteSession*/
22462
22463/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022464 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070022465 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070022466 @param
22467
Jeff Johnson295189b2012-06-20 16:38:30 -070022468 WDI_AddStaParams: - pointer to the WDI Add STA params
22469 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022470
22471 @see
22472 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070022473*/
22474void
22475WDI_AddBcastSTAtoSTATable
22476(
22477 WDI_ControlBlockType* pWDICtx,
22478 WDI_AddStaParams * staParams,
22479 wpt_uint16 usBcastStaIdx
22480)
22481{
22482 WDI_AddStaParams wdiAddSTAParam = {0};
22483 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
22484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22485
22486 /*---------------------------------------------------------------------
22487 Sanity check
22488 ---------------------------------------------------------------------*/
22489 if ( NULL == staParams )
22490 {
22491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022492 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022493
Jeff Johnsone7245742012-09-05 17:12:55 -070022494 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022495 }
22496
22497 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
22498 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
22499 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
22500 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
22501 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
22502 wdiAddSTAParam.dpuSig = staParams->dpuSig;
22503 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
22504 WDI_MAC_ADDR_LEN );
22505 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
22506 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
22507 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
22508 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
22509 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
22510 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
22511 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022512
Jeff Johnson295189b2012-06-20 16:38:30 -070022513 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
22514}
22515
22516/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022517 @brief NV blob will be divided into fragments of size 4kb and
22518 Sent to HAL
22519
22520 @param pWDICtx: pointer to the WLAN DAL context
22521 pEventData: pointer to the event information structure
22522
Jeff Johnson295189b2012-06-20 16:38:30 -070022523 @see
22524 @return Result of the function call
22525 */
22526
22527WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022528(
Jeff Johnson295189b2012-06-20 16:38:30 -070022529 WDI_ControlBlockType* pWDICtx,
22530 WDI_EventInfoType* pEventData
22531)
22532{
22533
22534 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
22535 wpt_uint8* pSendBuffer = NULL;
22536 wpt_uint16 usDataOffset = 0;
22537 wpt_uint16 usSendSize = 0;
22538 wpt_uint16 usCurrentFragmentSize =0;
22539 wpt_uint8* pSrcBuffer = NULL;
22540 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
22541 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
22542
22543 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
22544 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
22545 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
22546
Jeff Johnsone7245742012-09-05 17:12:55 -070022547 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070022548 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
22549
22550 /* Update the current Fragment Number */
22551 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
22552
22553 /*Update the HAL REQ structure */
22554 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
22555 halNvImgDownloadParam.nvImageReqParams.fragNumber =
22556 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
22557
22558 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070022559 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070022560 image will be sent to HAL*/
22561
Jeff Johnsone7245742012-09-05 17:12:55 -070022562 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070022563 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070022564 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022565 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070022566 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022567 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
22568 usCurrentFragmentSize = FRAGMENT_SIZE;
22569
22570 /*Update the HAL REQ structure */
22571 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
22572 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
22573
22574 }
22575 else
Jeff Johnsone7245742012-09-05 17:12:55 -070022576 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022577 usCurrentFragmentSize = FRAGMENT_SIZE;
22578
22579 /*Update the HAL REQ structure */
22580 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
22581 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
22582 }
22583
22584 /*-----------------------------------------------------------------------
22585 Get message buffer
22586 -----------------------------------------------------------------------*/
22587 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
22588 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
22589 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022590 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022591 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
22592 {
22593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022594 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022595 pEventData, pwdiNvDownloadReqParams);
22596 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022597 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022598 }
22599
22600 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070022601 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022602 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
22603
22604 /* Appending the NV image fragment */
22605 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
22606 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
22607 usCurrentFragmentSize);
22608
22609 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022610 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022611
Jeff Johnsone7245742012-09-05 17:12:55 -070022612 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22613 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022614 WDI_NV_DOWNLOAD_RESP);
22615
22616}
Jeff Johnsone7245742012-09-05 17:12:55 -070022617/*============================================================================
22618 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070022619 ============================================================================*/
22620/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022621 @brief Helper routine used to find a session based on the BSSID
22622 @param pContext: pointer to the WLAN DAL context
22623 @param pDPContext: pointer to the Datapath context
22624
Jeff Johnson295189b2012-06-20 16:38:30 -070022625 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022626 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070022627*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022628WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022629WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
22630{
22631 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22632
22633 pCB->pDPContext = pDPContext;
22634 return;
22635}
22636
22637/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022638 @brief Helper routine used to find a session based on the BSSID
22639
22640
22641 @param pContext: pointer to the WLAN DAL context
22642
Jeff Johnson295189b2012-06-20 16:38:30 -070022643 @see
22644 @return pointer to Datapath context
22645*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022646WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022647WDI_DS_GetDatapathContext (void *pContext)
22648{
22649 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22650 return pCB->pDPContext;
22651}
22652/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022653 @brief Helper routine used to find a session based on the BSSID
22654
22655
22656 @param pContext: pointer to the WLAN DAL context
22657 @param pDTDriverContext: pointer to the Transport Driver context
22658
Jeff Johnson295189b2012-06-20 16:38:30 -070022659 @see
22660 @return void
22661*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022662WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022663WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22664{
22665 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22666
22667 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022668 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022669}
22670
22671/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022672 @brief Helper routine used to find a session based on the BSSID
22673
22674
22675 @param pWDICtx: pointer to the WLAN DAL context
22676
Jeff Johnson295189b2012-06-20 16:38:30 -070022677 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022678 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022679*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022680WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022681WDT_GetTransportDriverContext (void *pContext)
22682{
22683 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022684 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022685}
22686
Jeff Johnsone7245742012-09-05 17:12:55 -070022687/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022688 Helper inline converters
22689 ============================================================================*/
22690/*Convert WDI driver type into HAL driver type*/
22691WPT_STATIC WPT_INLINE WDI_Status
22692WDI_HAL_2_WDI_STATUS
22693(
22694 eHalStatus halStatus
22695)
22696{
Jeff Johnsone7245742012-09-05 17:12:55 -070022697 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022698 the chances of getting inlined*/
22699 switch( halStatus )
22700 {
22701 case eHAL_STATUS_SUCCESS:
22702 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22703 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22704 return WDI_STATUS_SUCCESS;
22705 case eHAL_STATUS_FAILURE:
22706 return WDI_STATUS_E_FAILURE;
22707 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022708 return WDI_STATUS_MEM_FAILURE;
22709 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022710 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022711 default:
22712 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22713 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022714
Jeff Johnsone7245742012-09-05 17:12:55 -070022715 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022716}/*WDI_HAL_2_WDI_STATUS*/
22717
22718/*Convert WDI request type into HAL request type*/
22719WPT_STATIC WPT_INLINE tHalHostMsgType
22720WDI_2_HAL_REQ_TYPE
22721(
22722 WDI_RequestEnumType wdiReqType
22723)
22724{
Jeff Johnsone7245742012-09-05 17:12:55 -070022725 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022726 the chances of getting inlined*/
22727 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022728 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022729 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022730 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022731 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022732 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022733 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022734 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022735 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022736 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022737 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022738 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022739 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022740 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022741 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022742 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022743 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022744 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022745 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022746 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022747 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022748 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022749 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022750 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022751 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022752 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022753 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022754 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022755 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022756 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022757 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022758 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022759 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022760 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022761 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022762 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022763 return WLAN_HAL_RMV_STAKEY_REQ;
22764 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022765 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022766 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022767 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022768 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022769 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022770 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022771 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022772 case WDI_DEL_BA_REQ:
22773 return WLAN_HAL_DEL_BA_REQ;
22774#ifdef FEATURE_WLAN_CCX
22775 case WDI_TSM_STATS_REQ:
22776 return WLAN_HAL_TSM_STATS_REQ;
22777#endif
22778 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022779 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022780 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022781 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022782 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022783 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022784 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022785 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022786 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022787 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022788 case WDI_ADD_BA_SESSION_REQ:
22789 return WLAN_HAL_ADD_BA_SESSION_REQ;
22790 case WDI_TRIGGER_BA_REQ:
22791 return WLAN_HAL_TRIGGER_BA_REQ;
22792 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022793 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022794 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022795 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022796 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22797 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22798 case WDI_SET_MAX_TX_POWER_REQ:
22799 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070022800 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
22801 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070022802 case WDI_SET_TX_POWER_REQ:
22803 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022804 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22805 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053022806#ifdef FEATURE_WLAN_TDLS
22807 case WDI_TDLS_LINK_ESTABLISH_REQ:
22808 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22809#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022810 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022811 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022812 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022813 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022814 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022815 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022816 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022817 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022818 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022819 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022820 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022821 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022822 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022823 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022824 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022825 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022826 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022827 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022828 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022829 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022830 case WDI_REM_BEACON_FILTER_REQ:
22831 return WLAN_HAL_REM_BCN_FILTER_REQ;
22832 case WDI_SET_RSSI_THRESHOLDS_REQ:
22833 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22834 case WDI_HOST_OFFLOAD_REQ:
22835 return WLAN_HAL_HOST_OFFLOAD_REQ;
22836 case WDI_WOWL_ADD_BC_PTRN_REQ:
22837 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22838 case WDI_WOWL_DEL_BC_PTRN_REQ:
22839 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22840 case WDI_WOWL_ENTER_REQ:
22841 return WLAN_HAL_ENTER_WOWL_REQ;
22842 case WDI_WOWL_EXIT_REQ:
22843 return WLAN_HAL_EXIT_WOWL_REQ;
22844 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22845 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22846 case WDI_NV_DOWNLOAD_REQ:
22847 return WLAN_HAL_DOWNLOAD_NV_REQ;
22848 case WDI_FLUSH_AC_REQ:
22849 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22850 case WDI_BTAMP_EVENT_REQ:
22851 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22852#ifdef WLAN_FEATURE_VOWIFI_11R
22853 case WDI_AGGR_ADD_TS_REQ:
22854 return WLAN_HAL_AGGR_ADD_TS_REQ;
22855#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022856 case WDI_FTM_CMD_REQ:
22857 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022858 case WDI_ADD_STA_SELF_REQ:
22859 return WLAN_HAL_ADD_STA_SELF_REQ;
22860 case WDI_DEL_STA_SELF_REQ:
22861 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022862#ifdef FEATURE_OEM_DATA_SUPPORT
22863 case WDI_START_OEM_DATA_REQ:
22864 return WLAN_HAL_START_OEM_DATA_REQ;
22865#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022866 case WDI_HOST_RESUME_REQ:
22867 return WLAN_HAL_HOST_RESUME_REQ;
22868 case WDI_HOST_SUSPEND_IND:
22869 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080022870 case WDI_TRAFFIC_STATS_IND:
22871 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070022872#ifdef WLAN_FEATURE_11W
22873 case WDI_EXCLUDE_UNENCRYPTED_IND:
22874 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22875#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022876 case WDI_KEEP_ALIVE_REQ:
22877 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070022878#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070022879 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22880 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070022881#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022882#ifdef FEATURE_WLAN_SCAN_PNO
22883 case WDI_SET_PREF_NETWORK_REQ:
22884 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22885 case WDI_SET_RSSI_FILTER_REQ:
22886 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22887 case WDI_UPDATE_SCAN_PARAMS_REQ:
22888 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22889#endif // FEATURE_WLAN_SCAN_PNO
22890 case WDI_SET_TX_PER_TRACKING_REQ:
22891 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22892#ifdef WLAN_FEATURE_PACKET_FILTERING
22893 case WDI_8023_MULTICAST_LIST_REQ:
22894 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22895 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022896 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022897 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22898 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22899 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22900 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22901#endif // WLAN_FEATURE_PACKET_FILTERING
22902 case WDI_HAL_DUMP_CMD_REQ:
22903 return WLAN_HAL_DUMP_COMMAND_REQ;
22904#ifdef WLAN_FEATURE_GTK_OFFLOAD
22905 case WDI_GTK_OFFLOAD_REQ:
22906 return WLAN_HAL_GTK_OFFLOAD_REQ;
22907 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22908 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22909#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22910
22911 case WDI_INIT_SCAN_CON_REQ:
22912 return WLAN_HAL_INIT_SCAN_CON_REQ;
22913 case WDI_SET_POWER_PARAMS_REQ:
22914 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22915 case WDI_SET_TM_LEVEL_REQ:
22916 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22917 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22918 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022919#ifdef WLAN_FEATURE_11AC
22920 case WDI_UPDATE_VHT_OP_MODE_REQ:
22921 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22922#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080022923 case WDI_GET_ROAM_RSSI_REQ:
22924 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053022925 case WDI_DHCP_START_IND:
22926 return WLAN_HAL_DHCP_START_IND;
22927 case WDI_DHCP_STOP_IND:
22928 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070022929#ifdef FEATURE_WLAN_LPHB
22930 case WDI_LPHB_CFG_REQ:
22931 return WLAN_HAL_LPHB_CFG_REQ;
22932#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070022933 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
22934 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
22935 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
22936 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
22937
Rajeev79dbe4c2013-10-05 11:03:42 +053022938#ifdef FEATURE_WLAN_BATCH_SCAN
22939 case WDI_SET_BATCH_SCAN_REQ:
22940 return WLAN_HAL_BATCHSCAN_SET_REQ;
22941 case WDI_STOP_BATCH_SCAN_IND:
22942 return WLAN_HAL_BATCHSCAN_STOP_IND;
22943 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
22944 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
22945#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070022946 case WDI_RATE_UPDATE_IND:
22947 return WLAN_HAL_RATE_UPDATE_IND;
Rajeev79dbe4c2013-10-05 11:03:42 +053022948
Jeff Johnson295189b2012-06-20 16:38:30 -070022949 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022950 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022951 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022952
Jeff Johnson295189b2012-06-20 16:38:30 -070022953}/*WDI_2_HAL_REQ_TYPE*/
22954
22955/*Convert WDI response type into HAL response type*/
22956WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22957HAL_2_WDI_RSP_TYPE
22958(
22959 tHalHostMsgType halMsg
22960)
22961{
Jeff Johnsone7245742012-09-05 17:12:55 -070022962 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022963 the chances of getting inlined*/
22964 switch( halMsg )
22965 {
22966 case WLAN_HAL_START_RSP:
22967 return WDI_START_RESP;
22968 case WLAN_HAL_STOP_RSP:
22969 return WDI_STOP_RESP;
22970 case WLAN_HAL_INIT_SCAN_RSP:
22971 return WDI_INIT_SCAN_RESP;
22972 case WLAN_HAL_START_SCAN_RSP:
22973 return WDI_START_SCAN_RESP;
22974 case WLAN_HAL_END_SCAN_RSP:
22975 return WDI_END_SCAN_RESP;
22976 case WLAN_HAL_FINISH_SCAN_RSP:
22977 return WDI_FINISH_SCAN_RESP;
22978 case WLAN_HAL_CONFIG_STA_RSP:
22979 return WDI_CONFIG_STA_RESP;
22980 case WLAN_HAL_DELETE_STA_RSP:
22981 return WDI_DEL_STA_RESP;
22982 case WLAN_HAL_CONFIG_BSS_RSP:
22983 return WDI_CONFIG_BSS_RESP;
22984 case WLAN_HAL_DELETE_BSS_RSP:
22985 return WDI_DEL_BSS_RESP;
22986 case WLAN_HAL_JOIN_RSP:
22987 return WDI_JOIN_RESP;
22988 case WLAN_HAL_POST_ASSOC_RSP:
22989 return WDI_POST_ASSOC_RESP;
22990 case WLAN_HAL_SET_BSSKEY_RSP:
22991 return WDI_SET_BSS_KEY_RESP;
22992 case WLAN_HAL_SET_STAKEY_RSP:
22993 return WDI_SET_STA_KEY_RESP;
22994 case WLAN_HAL_RMV_BSSKEY_RSP:
22995 return WDI_RMV_BSS_KEY_RESP;
22996 case WLAN_HAL_RMV_STAKEY_RSP:
22997 return WDI_RMV_STA_KEY_RESP;
22998 case WLAN_HAL_SET_BCASTKEY_RSP:
22999 return WDI_SET_STA_BCAST_KEY_RESP;
23000 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
23001 // return WDI_RMV_STA_BCAST_KEY_RESP;
23002 case WLAN_HAL_ADD_TS_RSP:
23003 return WDI_ADD_TS_RESP;
23004 case WLAN_HAL_DEL_TS_RSP:
23005 return WDI_DEL_TS_RESP;
23006 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
23007 return WDI_UPD_EDCA_PRMS_RESP;
23008 case WLAN_HAL_ADD_BA_RSP:
23009 return WDI_ADD_BA_RESP;
23010 case WLAN_HAL_DEL_BA_RSP:
23011 return WDI_DEL_BA_RESP;
23012#ifdef FEATURE_WLAN_CCX
23013 case WLAN_HAL_TSM_STATS_RSP:
23014 return WDI_TSM_STATS_RESP;
23015#endif
23016 case WLAN_HAL_CH_SWITCH_RSP:
23017 return WDI_CH_SWITCH_RESP;
23018 case WLAN_HAL_SET_LINK_ST_RSP:
23019 return WDI_SET_LINK_ST_RESP;
23020 case WLAN_HAL_GET_STATS_RSP:
23021 return WDI_GET_STATS_RESP;
23022 case WLAN_HAL_UPDATE_CFG_RSP:
23023 return WDI_UPDATE_CFG_RESP;
23024 case WLAN_HAL_ADD_BA_SESSION_RSP:
23025 return WDI_ADD_BA_SESSION_RESP;
23026 case WLAN_HAL_TRIGGER_BA_RSP:
23027 return WDI_TRIGGER_BA_RESP;
23028 case WLAN_HAL_UPDATE_BEACON_RSP:
23029 return WDI_UPD_BCON_PRMS_RESP;
23030 case WLAN_HAL_SEND_BEACON_RSP:
23031 return WDI_SND_BCON_RESP;
23032 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
23033 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
23034 /*Indications*/
23035 case WLAN_HAL_RSSI_NOTIFICATION_IND:
23036 return WDI_HAL_RSSI_NOTIFICATION_IND;
23037 case WLAN_HAL_MISSED_BEACON_IND:
23038 return WDI_HAL_MISSED_BEACON_IND;
23039 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
23040 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
23041 case WLAN_HAL_MIC_FAILURE_IND:
23042 return WDI_HAL_MIC_FAILURE_IND;
23043 case WLAN_HAL_FATAL_ERROR_IND:
23044 return WDI_HAL_FATAL_ERROR_IND;
23045 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
23046 return WDI_HAL_DEL_STA_IND;
23047 case WLAN_HAL_COEX_IND:
23048 return WDI_HAL_COEX_IND;
23049 case WLAN_HAL_OTA_TX_COMPL_IND:
23050 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023051 case WLAN_HAL_P2P_NOA_ATTR_IND:
23052 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080023053 case WLAN_HAL_P2P_NOA_START_IND:
23054 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023055 case WLAN_HAL_TX_PER_HIT_IND:
23056 return WDI_HAL_TX_PER_HIT_IND;
23057 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
23058 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023059 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
23060 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070023061 case WLAN_HAL_SET_TX_POWER_RSP:
23062 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023063 case WLAN_HAL_SET_P2P_GONOA_RSP:
23064 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023065#ifdef FEATURE_WLAN_TDLS
23066 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
23067 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
23068 case WLAN_HAL_TDLS_IND:
23069 return WDI_HAL_TDLS_IND;
23070#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023071 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023072 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023073 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023074 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023075 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023076 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023077 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023078 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023079 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023080 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023081 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023082 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023083 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023084 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023085 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023086 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023087 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023088 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023089 case WLAN_HAL_ADD_BCN_FILTER_RSP:
23090 return WDI_SET_BEACON_FILTER_RESP;
23091 case WLAN_HAL_REM_BCN_FILTER_RSP:
23092 return WDI_REM_BEACON_FILTER_RESP;
23093 case WLAN_HAL_SET_RSSI_THRESH_RSP:
23094 return WDI_SET_RSSI_THRESHOLDS_RESP;
23095 case WLAN_HAL_HOST_OFFLOAD_RSP:
23096 return WDI_HOST_OFFLOAD_RESP;
23097 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
23098 return WDI_WOWL_ADD_BC_PTRN_RESP;
23099 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
23100 return WDI_WOWL_DEL_BC_PTRN_RESP;
23101 case WLAN_HAL_ENTER_WOWL_RSP:
23102 return WDI_WOWL_ENTER_RESP;
23103 case WLAN_HAL_EXIT_WOWL_RSP:
23104 return WDI_WOWL_EXIT_RESP;
23105 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
23106 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
23107 case WLAN_HAL_DOWNLOAD_NV_RSP:
23108 return WDI_NV_DOWNLOAD_RESP;
23109 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
23110 return WDI_FLUSH_AC_RESP;
23111 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
23112 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023113 case WLAN_HAL_PROCESS_PTT_RSP:
23114 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023115 case WLAN_HAL_ADD_STA_SELF_RSP:
23116 return WDI_ADD_STA_SELF_RESP;
23117case WLAN_HAL_DEL_STA_SELF_RSP:
23118 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070023119#ifdef FEATURE_OEM_DATA_SUPPORT
23120 case WLAN_HAL_START_OEM_DATA_RSP:
23121 return WDI_START_OEM_DATA_RESP;
23122#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023123 case WLAN_HAL_HOST_RESUME_RSP:
23124 return WDI_HOST_RESUME_RESP;
23125 case WLAN_HAL_KEEP_ALIVE_RSP:
23126 return WDI_KEEP_ALIVE_RESP;
23127#ifdef FEATURE_WLAN_SCAN_PNO
23128 case WLAN_HAL_SET_PREF_NETWORK_RSP:
23129 return WDI_SET_PREF_NETWORK_RESP;
23130 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023131 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023132 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
23133 return WDI_UPDATE_SCAN_PARAMS_RESP;
23134 case WLAN_HAL_PREF_NETW_FOUND_IND:
23135 return WDI_HAL_PREF_NETWORK_FOUND_IND;
23136#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023137#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023138 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
23139 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023140#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023141 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
23142 return WDI_SET_TX_PER_TRACKING_RESP;
23143#ifdef WLAN_FEATURE_PACKET_FILTERING
23144 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
23145 return WDI_8023_MULTICAST_LIST_RESP;
23146 case WLAN_HAL_SET_PACKET_FILTER_RSP:
23147 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
23148 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
23149 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
23150 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
23151 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
23152#endif // WLAN_FEATURE_PACKET_FILTERING
23153
23154 case WLAN_HAL_DUMP_COMMAND_RSP:
23155 return WDI_HAL_DUMP_CMD_RESP;
23156 case WLAN_HAL_SET_POWER_PARAMS_RSP:
23157 return WDI_SET_POWER_PARAMS_RESP;
23158#ifdef WLAN_FEATURE_VOWIFI_11R
23159 case WLAN_HAL_AGGR_ADD_TS_RSP:
23160 return WDI_AGGR_ADD_TS_RESP;
23161#endif
23162
23163#ifdef WLAN_FEATURE_GTK_OFFLOAD
23164 case WLAN_HAL_GTK_OFFLOAD_RSP:
23165 return WDI_GTK_OFFLOAD_RESP;
23166 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
23167 return WDI_GTK_OFFLOAD_GETINFO_RESP;
23168#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23169#ifdef WLAN_WAKEUP_EVENTS
23170 case WLAN_HAL_WAKE_REASON_IND:
23171 return WDI_HAL_WAKE_REASON_IND;
23172#endif // WLAN_WAKEUP_EVENTS
23173
23174 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
23175 return WDI_SET_TM_LEVEL_RESP;
23176 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
23177 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023178#ifdef WLAN_FEATURE_11AC
23179 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
23180 return WDI_UPDATE_VHT_OP_MODE_RESP;
23181#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023182#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23183 case WLAN_HAL_GET_ROAM_RSSI_RSP:
23184 return WDI_GET_ROAM_RSSI_RESP;
23185#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023186
Leo Chang9056f462013-08-01 19:21:11 -070023187#ifdef FEATURE_WLAN_LPHB
23188 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070023189 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023190 case WLAN_HAL_LPHB_CFG_RSP:
23191 return WDI_LPHB_CFG_RESP;
23192#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023193
23194 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
23195 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070023196 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
23197 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023198
Rajeev79dbe4c2013-10-05 11:03:42 +053023199#ifdef FEATURE_WLAN_BATCH_SCAN
23200 case WLAN_HAL_BATCHSCAN_SET_RSP:
23201 return WDI_SET_BATCH_SCAN_RESP;
23202 case WLAN_HAL_BATCHSCAN_RESULT_IND:
23203 return WDI_BATCHSCAN_RESULT_IND;
23204#endif // FEATURE_WLAN_BATCH_SCAN
23205
Leo Chang0b0e45a2013-12-15 15:18:55 -080023206#ifdef FEATURE_WLAN_CH_AVOID
23207 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
23208 return WDI_HAL_CH_AVOID_IND;
23209#endif /* FEATURE_WLAN_CH_AVOID */
23210
Jeff Johnson295189b2012-06-20 16:38:30 -070023211 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023212 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023213 }
23214
23215}/*HAL_2_WDI_RSP_TYPE*/
23216
23217
23218/*Convert WDI driver type into HAL driver type*/
23219WPT_STATIC WPT_INLINE tDriverType
23220WDI_2_HAL_DRV_TYPE
23221(
23222 WDI_DriverType wdiDriverType
23223)
23224{
Jeff Johnsone7245742012-09-05 17:12:55 -070023225 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023226 the chances of getting inlined*/
23227 switch( wdiDriverType )
23228 {
23229 case WDI_DRIVER_TYPE_PRODUCTION:
23230 return eDRIVER_TYPE_PRODUCTION;
23231 case WDI_DRIVER_TYPE_MFG:
23232 return eDRIVER_TYPE_MFG;
23233 case WDI_DRIVER_TYPE_DVT:
23234 return eDRIVER_TYPE_DVT;
23235 }
23236
Jeff Johnsone7245742012-09-05 17:12:55 -070023237 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023238}/*WDI_2_HAL_DRV_TYPE*/
23239
23240
23241/*Convert WDI stop reason into HAL stop reason*/
23242WPT_STATIC WPT_INLINE tHalStopType
23243WDI_2_HAL_STOP_REASON
23244(
23245 WDI_StopType wdiDriverType
23246)
23247{
Jeff Johnsone7245742012-09-05 17:12:55 -070023248 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023249 the chances of getting inlined*/
23250 switch( wdiDriverType )
23251 {
23252 case WDI_STOP_TYPE_SYS_RESET:
23253 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070023254 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
23255 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023256 case WDI_STOP_TYPE_RF_KILL:
23257 return HAL_STOP_TYPE_RF_KILL;
23258 }
23259
Jeff Johnsone7245742012-09-05 17:12:55 -070023260 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023261}/*WDI_2_HAL_STOP_REASON*/
23262
23263
23264/*Convert WDI scan mode type into HAL scan mode type*/
23265WPT_STATIC WPT_INLINE eHalSysMode
23266WDI_2_HAL_SCAN_MODE
23267(
23268 WDI_ScanMode wdiScanMode
23269)
23270{
Jeff Johnsone7245742012-09-05 17:12:55 -070023271 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023272 the chances of getting inlined*/
23273 switch( wdiScanMode )
23274 {
23275 case WDI_SCAN_MODE_NORMAL:
23276 return eHAL_SYS_MODE_NORMAL;
23277 case WDI_SCAN_MODE_LEARN:
23278 return eHAL_SYS_MODE_LEARN;
23279 case WDI_SCAN_MODE_SCAN:
23280 return eHAL_SYS_MODE_SCAN;
23281 case WDI_SCAN_MODE_PROMISC:
23282 return eHAL_SYS_MODE_PROMISC;
23283 case WDI_SCAN_MODE_SUSPEND_LINK:
23284 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070023285 case WDI_SCAN_MODE_ROAM_SCAN:
23286 return eHAL_SYS_MODE_ROAM_SCAN;
23287 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
23288 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070023289 }
23290
Jeff Johnsone7245742012-09-05 17:12:55 -070023291 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023292}/*WDI_2_HAL_SCAN_MODE*/
23293
23294/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023295WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070023296WDI_2_HAL_SEC_CH_OFFSET
23297(
23298 WDI_HTSecondaryChannelOffset wdiSecChOffset
23299)
23300{
Jeff Johnsone7245742012-09-05 17:12:55 -070023301 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023302 the chances of getting inlined*/
23303 switch( wdiSecChOffset )
23304 {
23305 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023306 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023307 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023308 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070023309 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070023310 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
23311#ifdef WLAN_FEATURE_11AC
23312 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23313 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23314 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23315 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23316 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23317 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23318 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23319 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23320 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23321 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23322 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23323 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23324 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23325 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23326#endif
23327 default:
23328 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023329 }
23330
Jeff Johnsone7245742012-09-05 17:12:55 -070023331 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023332}/*WDI_2_HAL_SEC_CH_OFFSET*/
23333
23334/*Convert WDI BSS type into HAL BSS type*/
23335WPT_STATIC WPT_INLINE tSirBssType
23336WDI_2_HAL_BSS_TYPE
23337(
23338 WDI_BssType wdiBSSType
23339)
23340{
Jeff Johnsone7245742012-09-05 17:12:55 -070023341 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023342 the chances of getting inlined*/
23343 switch( wdiBSSType )
23344 {
23345 case WDI_INFRASTRUCTURE_MODE:
23346 return eSIR_INFRASTRUCTURE_MODE;
23347 case WDI_INFRA_AP_MODE:
23348 return eSIR_INFRA_AP_MODE;
23349 case WDI_IBSS_MODE:
23350 return eSIR_IBSS_MODE;
23351 case WDI_BTAMP_STA_MODE:
23352 return eSIR_BTAMP_STA_MODE;
23353 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023354 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023355 case WDI_BSS_AUTO_MODE:
23356 return eSIR_AUTO_MODE;
23357 }
23358
Jeff Johnsone7245742012-09-05 17:12:55 -070023359 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023360}/*WDI_2_HAL_BSS_TYPE*/
23361
23362/*Convert WDI NW type into HAL NW type*/
23363WPT_STATIC WPT_INLINE tSirNwType
23364WDI_2_HAL_NW_TYPE
23365(
23366 WDI_NwType wdiNWType
23367)
23368{
Jeff Johnsone7245742012-09-05 17:12:55 -070023369 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023370 the chances of getting inlined*/
23371 switch( wdiNWType )
23372 {
23373 case WDI_11A_NW_TYPE:
23374 return eSIR_11A_NW_TYPE;
23375 case WDI_11B_NW_TYPE:
23376 return eSIR_11B_NW_TYPE;
23377 case WDI_11G_NW_TYPE:
23378 return eSIR_11G_NW_TYPE;
23379 case WDI_11N_NW_TYPE:
23380 return eSIR_11N_NW_TYPE;
23381 }
23382
Jeff Johnsone7245742012-09-05 17:12:55 -070023383 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023384}/*WDI_2_HAL_NW_TYPE*/
23385
23386/*Convert WDI chanel bonding type into HAL cb type*/
23387WPT_STATIC WPT_INLINE ePhyChanBondState
23388WDI_2_HAL_CB_STATE
23389(
23390 WDI_PhyChanBondState wdiCbState
23391)
23392{
Jeff Johnsone7245742012-09-05 17:12:55 -070023393 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023394 the chances of getting inlined*/
23395 switch ( wdiCbState )
23396 {
23397 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
23398 return PHY_SINGLE_CHANNEL_CENTERED;
23399 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
23400 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
23401 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
23402 return PHY_DOUBLE_CHANNEL_CENTERED;
23403 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
23404 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070023405#ifdef WLAN_FEATURE_11AC
23406 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23407 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23408 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23409 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
23410 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23411 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23412 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23413 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23414 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23415 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
23416 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23417 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23418 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23419 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23420#endif
23421 case WDI_MAX_CB_STATE:
23422 default:
23423 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023424 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023425
Jeff Johnson295189b2012-06-20 16:38:30 -070023426 return PHY_CHANNEL_BONDING_STATE_MAX;
23427}/*WDI_2_HAL_CB_STATE*/
23428
23429/*Convert WDI chanel bonding type into HAL cb type*/
23430WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
23431WDI_2_HAL_HT_OPER_MODE
23432(
23433 WDI_HTOperatingMode wdiHTOperMode
23434)
23435{
Jeff Johnsone7245742012-09-05 17:12:55 -070023436 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023437 the chances of getting inlined*/
23438 switch ( wdiHTOperMode )
23439 {
23440 case WDI_HT_OP_MODE_PURE:
23441 return eSIR_HT_OP_MODE_PURE;
23442 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
23443 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
23444 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
23445 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
23446 case WDI_HT_OP_MODE_MIXED:
23447 return eSIR_HT_OP_MODE_MIXED;
23448 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023449
Jeff Johnson295189b2012-06-20 16:38:30 -070023450 return eSIR_HT_OP_MODE_MAX;
23451}/*WDI_2_HAL_HT_OPER_MODE*/
23452
23453/*Convert WDI mimo PS type into HAL mimo PS type*/
23454WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
23455WDI_2_HAL_MIMO_PS
23456(
23457 WDI_HTMIMOPowerSaveState wdiHTOperMode
23458)
23459{
Jeff Johnsone7245742012-09-05 17:12:55 -070023460 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023461 the chances of getting inlined*/
23462 switch ( wdiHTOperMode )
23463 {
23464 case WDI_HT_MIMO_PS_STATIC:
23465 return eSIR_HT_MIMO_PS_STATIC;
23466 case WDI_HT_MIMO_PS_DYNAMIC:
23467 return eSIR_HT_MIMO_PS_DYNAMIC;
23468 case WDI_HT_MIMO_PS_NA:
23469 return eSIR_HT_MIMO_PS_NA;
23470 case WDI_HT_MIMO_PS_NO_LIMIT:
23471 return eSIR_HT_MIMO_PS_NO_LIMIT;
23472 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023473
Jeff Johnson295189b2012-06-20 16:38:30 -070023474 return eSIR_HT_MIMO_PS_MAX;
23475}/*WDI_2_HAL_MIMO_PS*/
23476
23477/*Convert WDI ENC type into HAL ENC type*/
23478WPT_STATIC WPT_INLINE tAniEdType
23479WDI_2_HAL_ENC_TYPE
23480(
23481 WDI_EncryptType wdiEncType
23482)
23483{
Jeff Johnsone7245742012-09-05 17:12:55 -070023484 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023485 the chances of getting inlined*/
23486 switch ( wdiEncType )
23487 {
23488 case WDI_ENCR_NONE:
23489 return eSIR_ED_NONE;
23490
23491 case WDI_ENCR_WEP40:
23492 return eSIR_ED_WEP40;
23493
23494 case WDI_ENCR_WEP104:
23495 return eSIR_ED_WEP104;
23496
23497 case WDI_ENCR_TKIP:
23498 return eSIR_ED_TKIP;
23499
23500 case WDI_ENCR_CCMP:
23501 return eSIR_ED_CCMP;
23502
23503 case WDI_ENCR_AES_128_CMAC:
23504 return eSIR_ED_AES_128_CMAC;
23505#if defined(FEATURE_WLAN_WAPI)
23506 case WDI_ENCR_WPI:
23507 return eSIR_ED_WPI;
23508#endif
23509 default:
23510 return eSIR_ED_NOT_IMPLEMENTED;
23511 }
23512
23513}/*WDI_2_HAL_ENC_TYPE*/
23514
23515/*Convert WDI WEP type into HAL WEP type*/
23516WPT_STATIC WPT_INLINE tAniWepType
23517WDI_2_HAL_WEP_TYPE
23518(
23519 WDI_WepType wdiWEPType
23520)
23521{
Jeff Johnsone7245742012-09-05 17:12:55 -070023522 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023523 the chances of getting inlined*/
23524 switch ( wdiWEPType )
23525 {
23526 case WDI_WEP_STATIC:
23527 return eSIR_WEP_STATIC;
23528
23529 case WDI_WEP_DYNAMIC:
23530 return eSIR_WEP_DYNAMIC;
23531 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023532
Jeff Johnson295189b2012-06-20 16:38:30 -070023533 return eSIR_WEP_MAX;
23534}/*WDI_2_HAL_WEP_TYPE*/
23535
23536WPT_STATIC WPT_INLINE tSirLinkState
23537WDI_2_HAL_LINK_STATE
23538(
23539 WDI_LinkStateType wdiLinkState
23540)
23541{
Jeff Johnsone7245742012-09-05 17:12:55 -070023542 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023543 the chances of getting inlined*/
23544 switch ( wdiLinkState )
23545 {
23546 case WDI_LINK_IDLE_STATE:
23547 return eSIR_LINK_IDLE_STATE;
23548
23549 case WDI_LINK_PREASSOC_STATE:
23550 return eSIR_LINK_PREASSOC_STATE;
23551
23552 case WDI_LINK_POSTASSOC_STATE:
23553 return eSIR_LINK_POSTASSOC_STATE;
23554
23555 case WDI_LINK_AP_STATE:
23556 return eSIR_LINK_AP_STATE;
23557
23558 case WDI_LINK_IBSS_STATE:
23559 return eSIR_LINK_IBSS_STATE;
23560
23561 case WDI_LINK_BTAMP_PREASSOC_STATE:
23562 return eSIR_LINK_BTAMP_PREASSOC_STATE;
23563
23564 case WDI_LINK_BTAMP_POSTASSOC_STATE:
23565 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
23566
23567 case WDI_LINK_BTAMP_AP_STATE:
23568 return eSIR_LINK_BTAMP_AP_STATE;
23569
23570 case WDI_LINK_BTAMP_STA_STATE:
23571 return eSIR_LINK_BTAMP_STA_STATE;
23572
23573 case WDI_LINK_LEARN_STATE:
23574 return eSIR_LINK_LEARN_STATE;
23575
23576 case WDI_LINK_SCAN_STATE:
23577 return eSIR_LINK_SCAN_STATE;
23578
23579 case WDI_LINK_FINISH_SCAN_STATE:
23580 return eSIR_LINK_FINISH_SCAN_STATE;
23581
23582 case WDI_LINK_INIT_CAL_STATE:
23583 return eSIR_LINK_INIT_CAL_STATE;
23584
23585 case WDI_LINK_FINISH_CAL_STATE:
23586 return eSIR_LINK_FINISH_CAL_STATE;
23587
Jeff Johnson295189b2012-06-20 16:38:30 -070023588 case WDI_LINK_LISTEN_STATE:
23589 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023590
Gopichand Nakkala924e4552013-05-08 19:18:14 +053023591 case WDI_LINK_SEND_ACTION_STATE:
23592 return eSIR_LINK_SEND_ACTION_STATE;
23593
Jeff Johnson295189b2012-06-20 16:38:30 -070023594 default:
23595 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070023596 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023597}
23598
Jeff Johnsone7245742012-09-05 17:12:55 -070023599/*Translate a STA Context from WDI into HAL*/
23600WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070023601void
23602WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070023603(
Jeff Johnson295189b2012-06-20 16:38:30 -070023604 tConfigStaParams* phalConfigSta,
23605 WDI_ConfigStaReqInfoType* pwdiConfigSta
23606)
23607{
23608 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023609#ifdef WLAN_FEATURE_11AC
23610 /* Get the Version 1 Handler */
23611 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
23612 if (WDI_getFwWlanFeatCaps(DOT11AC))
23613 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023614 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070023615 }
23616#endif
23617 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023618 the chances of getting inlined*/
23619
Jeff Johnsone7245742012-09-05 17:12:55 -070023620 wpalMemoryCopy(phalConfigSta->bssId,
23621 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
23622
23623 wpalMemoryCopy(phalConfigSta->staMac,
23624 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070023625
23626 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
23627 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
23628 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
23629 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
23630 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
23631 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
23632 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
23633 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
23634 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
23635 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
23636 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
23637 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
23638 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
23639 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
23640 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
23641 phalConfigSta->action = pwdiConfigSta->wdiAction;
23642 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
23643 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
23644 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
23645 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
23646 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
23647 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
23648 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070023649
Jeff Johnson295189b2012-06-20 16:38:30 -070023650 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
23651
Jeff Johnsone7245742012-09-05 17:12:55 -070023652 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070023653 pwdiConfigSta->wdiSupportedRates.opRateMode;
23654 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
23655 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023656 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023657 pwdiConfigSta->wdiSupportedRates.llbRates[i];
23658 }
23659 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
23660 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023661 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023662 pwdiConfigSta->wdiSupportedRates.llaRates[i];
23663 }
23664 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
23665 {
23666 phalConfigSta->supportedRates.aniLegacyRates[i] =
23667 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
23668 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023669 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070023670 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
23671 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
23672 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023673 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023674 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
23675 }
23676 phalConfigSta->supportedRates.rxHighestDataRate =
23677 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
23678
Jeff Johnsone7245742012-09-05 17:12:55 -070023679#ifdef WLAN_FEATURE_11AC
23680 if(phalConfigSta_V1 != NULL)
23681 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023682 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
23683 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
23684 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
23685 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070023686 }
23687#endif
23688
Jeff Johnson295189b2012-06-20 16:38:30 -070023689 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023690
Jeff Johnsone7245742012-09-05 17:12:55 -070023691#ifdef WLAN_FEATURE_11AC
23692 if(phalConfigSta_V1 != NULL)
23693 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023694 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
23695 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080023696 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080023697 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
23698 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
23699
Jeff Johnsone7245742012-09-05 17:12:55 -070023700 }
23701#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023702}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070023703
23704/*Translate a Rate set info from WDI into HAL*/
23705WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023706WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023707(
Jeff Johnson295189b2012-06-20 16:38:30 -070023708 tSirMacRateSet* pHalRateSet,
23709 WDI_RateSet* pwdiRateSet
23710)
23711{
Jeff Johnsone7245742012-09-05 17:12:55 -070023712 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023713 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23714
23715 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23716 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23717
23718 for ( i = 0; i < pHalRateSet->numRates; i++ )
23719 {
23720 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23721 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023722
Jeff Johnson295189b2012-06-20 16:38:30 -070023723}/*WDI_CopyWDIRateSetToHALRateSet*/
23724
23725
23726/*Translate an EDCA Parameter Record from WDI into HAL*/
23727WPT_STATIC WPT_INLINE void
23728WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023729(
Jeff Johnson295189b2012-06-20 16:38:30 -070023730 tSirMacEdcaParamRecord* phalEdcaParam,
23731 WDI_EdcaParamRecord* pWDIEdcaParam
23732)
23733{
Jeff Johnsone7245742012-09-05 17:12:55 -070023734 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023735 the chances of getting inlined*/
23736
23737 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23738 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23739 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23740 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23741
23742 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23743 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23744 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23745}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23746
23747
23748/*Copy a management frame header from WDI fmt into HAL fmt*/
23749WPT_STATIC WPT_INLINE void
23750WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23751(
23752 tSirMacMgmtHdr* pmacMgmtHdr,
23753 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23754)
23755{
23756 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23757 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23758 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23759 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23760 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23761 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23762 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23763 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23764 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23765 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23766 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23767
23768 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23769 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23770
Jeff Johnsone7245742012-09-05 17:12:55 -070023771 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023772 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023773 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023774 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023775 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023776 pwdiMacMgmtHdr->bssId, 6);
23777
23778 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23779 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23780 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23781
23782}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23783
23784
23785/*Copy config bss parameters from WDI fmt into HAL fmt*/
23786WPT_STATIC WPT_INLINE void
23787WDI_CopyWDIConfigBSSToHALConfigBSS
23788(
23789 tConfigBssParams* phalConfigBSS,
23790 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23791)
23792{
23793
23794 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023795#ifdef WLAN_FEATURE_11AC
23796 /* Get the Version 1 Handler */
23797 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23798 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023799 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023800#endif
23801
Jeff Johnson295189b2012-06-20 16:38:30 -070023802 wpalMemoryCopy( phalConfigBSS->bssId,
23803 pwdiConfigBSS->macBSSID,
23804 WDI_MAC_ADDR_LEN);
23805
23806#ifdef HAL_SELF_STA_PER_BSS
23807 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23808 pwdiConfigBSS->macSelfAddr,
23809 WDI_MAC_ADDR_LEN);
23810#endif
23811
23812 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23813
23814 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23815 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23816
Jeff Johnsone7245742012-09-05 17:12:55 -070023817 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023818 pwdiConfigBSS->ucShortSlotTimeSupported;
23819 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23820 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23821 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23822 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23823 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023824 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023825 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23826 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23827 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23828 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23829 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23830 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23831 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23832 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23833 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23834 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23835 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23836
Jeff Johnsone7245742012-09-05 17:12:55 -070023837 phalConfigBSS->htOperMode =
23838 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023839
23840 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23841 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23842 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23843 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23844
23845#ifdef WLAN_FEATURE_VOWIFI
23846 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23847#endif
23848
23849 /*! Used 32 as magic number because that is how the ssid is declared inside the
23850 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023851 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023852 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23853 pwdiConfigBSS->wdiSSID.ucLength : 32;
23854 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023855 pwdiConfigBSS->wdiSSID.sSSID,
23856 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023857
23858 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23859 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023860
Jeff Johnson295189b2012-06-20 16:38:30 -070023861 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23862 &pwdiConfigBSS->wdiRateSet);
23863
23864 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23865
23866 if(phalConfigBSS->edcaParamsValid)
23867 {
23868 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23869 &pwdiConfigBSS->wdiBEEDCAParams);
23870 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23871 &pwdiConfigBSS->wdiBKEDCAParams);
23872 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23873 &pwdiConfigBSS->wdiVIEDCAParams);
23874 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23875 &pwdiConfigBSS->wdiVOEDCAParams);
23876 }
23877
Jeff Johnsone7245742012-09-05 17:12:55 -070023878 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023879
23880 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23881
23882#ifdef WLAN_FEATURE_VOWIFI_11R
23883
Jeff Johnsone7245742012-09-05 17:12:55 -070023884 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023885 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023886
Jeff Johnson295189b2012-06-20 16:38:30 -070023887 if( phalConfigBSS->extSetStaKeyParamValid )
23888 {
23889 /*-----------------------------------------------------------------------
23890 Copy the STA Key parameters into the HAL message
23891 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023892 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023893 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23894
Jeff Johnsone7245742012-09-05 17:12:55 -070023895 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023896 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23897
23898 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23899
23900 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23901
23902 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23903
Jeff Johnson295189b2012-06-20 16:38:30 -070023904 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23905 keyIndex++)
23906 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023907 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023908 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23909 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23910 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23911 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23912 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23913 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023914 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023915 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023916 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023917 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023918 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023919 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23920 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023921 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023922 WDI_MAX_KEY_LENGTH);
23923 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023924 }
23925 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23926 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023927 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023928 sizeof(phalConfigBSS->extSetStaKeyParam) );
23929 }
23930
23931#endif /*WLAN_FEATURE_VOWIFI_11R*/
23932
Jeff Johnsone7245742012-09-05 17:12:55 -070023933#ifdef WLAN_FEATURE_11AC
23934 if(phalConfigBSS_V1 != NULL)
23935 {
23936 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23937 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23938 }
23939#endif
23940
Jeff Johnson295189b2012-06-20 16:38:30 -070023941}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23942
23943
Jeff Johnsone7245742012-09-05 17:12:55 -070023944/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023945 pointed to by user data */
23946WPT_STATIC WPT_INLINE void
23947WDI_ExtractRequestCBFromEvent
23948(
23949 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023950 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023951 void** ppUserData
23952)
23953{
23954 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23955 switch ( pEvent->wdiRequest )
23956 {
23957 case WDI_START_REQ:
23958 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23959 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23960 break;
23961 case WDI_STOP_REQ:
23962 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23963 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23964 break;
23965 case WDI_INIT_SCAN_REQ:
23966 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23967 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23968 break;
23969 case WDI_START_SCAN_REQ:
23970 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23971 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23972 break;
23973 case WDI_END_SCAN_REQ:
23974 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23975 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23976 break;
23977 case WDI_FINISH_SCAN_REQ:
23978 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23979 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23980 break;
23981 case WDI_JOIN_REQ:
23982 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23983 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23984 break;
23985 case WDI_CONFIG_BSS_REQ:
23986 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23987 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23988 break;
23989 case WDI_DEL_BSS_REQ:
23990 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23991 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23992 break;
23993 case WDI_POST_ASSOC_REQ:
23994 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23995 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23996 break;
23997 case WDI_DEL_STA_REQ:
23998 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23999 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
24000 break;
24001 case WDI_DEL_STA_SELF_REQ:
24002 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24003 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
24004 break;
24005
24006 case WDI_SET_BSS_KEY_REQ:
24007 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24008 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24009 break;
24010 case WDI_RMV_BSS_KEY_REQ:
24011 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24012 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24013 break;
24014 case WDI_SET_STA_KEY_REQ:
24015 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24016 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24017 break;
24018 case WDI_RMV_STA_KEY_REQ:
24019 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24020 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24021 break;
24022 case WDI_ADD_TS_REQ:
24023 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24024 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
24025 break;
24026 case WDI_DEL_TS_REQ:
24027 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24028 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
24029 break;
24030 case WDI_UPD_EDCA_PRMS_REQ:
24031 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24032 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
24033 break;
24034 case WDI_ADD_BA_SESSION_REQ:
24035 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24036 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
24037 break;
24038 case WDI_DEL_BA_REQ:
24039 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24040 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
24041 break;
24042#ifdef FEATURE_WLAN_CCX
24043 case WDI_TSM_STATS_REQ:
24044 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24045 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
24046 break;
24047#endif
24048 case WDI_CH_SWITCH_REQ:
24049 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24050 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
24051 break;
24052 case WDI_CONFIG_STA_REQ:
24053 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24054 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
24055 break;
24056 case WDI_SET_LINK_ST_REQ:
24057 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24058 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
24059 break;
24060 case WDI_GET_STATS_REQ:
24061 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24062 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
24063 break;
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024064#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
24065 case WDI_GET_ROAM_RSSI_REQ:
24066 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24067 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
24068 break;
24069#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024070 case WDI_UPDATE_CFG_REQ:
24071 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24072 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
24073 break;
24074 case WDI_ADD_BA_REQ:
24075 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24076 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
24077 break;
24078 case WDI_TRIGGER_BA_REQ:
24079 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24080 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
24081 break;
24082 case WDI_UPD_BCON_PRMS_REQ:
24083 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24084 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
24085 break;
24086 case WDI_SND_BCON_REQ:
24087 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24088 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
24089 break;
24090 case WDI_ENTER_BMPS_REQ:
24091 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24092 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24093 break;
24094 case WDI_EXIT_BMPS_REQ:
24095 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24096 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24097 break;
24098 case WDI_ENTER_UAPSD_REQ:
24099 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24100 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24101 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024102 case WDI_EXIT_UAPSD_REQ:
24103 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24104 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24105 break;
24106 case WDI_SET_UAPSD_PARAM_REQ:
24107 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24108 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
24109 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024110 case WDI_UPDATE_UAPSD_PARAM_REQ:
24111 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24112 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24113 break;
24114 case WDI_CONFIGURE_RXP_FILTER_REQ:
24115 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24116 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
24117 break;
24118 case WDI_SET_BEACON_FILTER_REQ:
24119 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24120 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
24121 break;
24122 case WDI_REM_BEACON_FILTER_REQ:
24123 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24124 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070024125 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024126 case WDI_SET_RSSI_THRESHOLDS_REQ:
24127 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24128 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
24129 break;
24130 case WDI_HOST_OFFLOAD_REQ:
24131 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24132 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
24133 break;
24134 case WDI_WOWL_ADD_BC_PTRN_REQ:
24135 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24136 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24137 break;
24138 case WDI_WOWL_DEL_BC_PTRN_REQ:
24139 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24140 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24141 break;
24142 case WDI_WOWL_ENTER_REQ:
24143 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24144 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
24145 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024146 case WDI_WOWL_EXIT_REQ:
24147 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24148 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
24149 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024150 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24151 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24152 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
24153 break;
24154 case WDI_FLUSH_AC_REQ:
24155 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24156 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
24157 break;
24158 case WDI_BTAMP_EVENT_REQ:
24159 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24160 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
24161 break;
24162 case WDI_KEEP_ALIVE_REQ:
24163 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24164 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
24165 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024166#if defined FEATURE_WLAN_SCAN_PNO
24167 case WDI_SET_PREF_NETWORK_REQ:
24168 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24169 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
24170 break;
24171 case WDI_SET_RSSI_FILTER_REQ:
24172 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24173 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
24174 break;
24175 case WDI_UPDATE_SCAN_PARAMS_REQ:
24176 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
24177 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
24178 break;
24179#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024180 case WDI_SET_TX_PER_TRACKING_REQ:
24181 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24182 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024183 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024184#if defined WLAN_FEATURE_PACKET_FILTERING
24185 case WDI_8023_MULTICAST_LIST_REQ:
24186 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24187 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
24188 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024189 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
24190 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24191 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
24192 break;
24193 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24194 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24195 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
24196 break;
24197 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24198 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24199 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
24200 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024201#endif
24202 case WDI_SET_POWER_PARAMS_REQ:
24203 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24204 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
24205 break;
24206#if defined WLAN_FEATURE_GTK_OFFLOAD
24207 case WDI_GTK_OFFLOAD_REQ:
24208 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24209 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
24210 break;
24211 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24212 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24213 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
24214 break;
24215#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024216
Jeff Johnson295189b2012-06-20 16:38:30 -070024217 default:
24218 *ppfnReqCB = NULL;
24219 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024220 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024221 }
24222}/*WDI_ExtractRequestCBFromEvent*/
24223
24224
24225/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024226 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070024227 frame xtl is enabled for a particular STA.
24228
24229 WDI_PostAssocReq must have been called.
24230
Jeff Johnsone7245742012-09-05 17:12:55 -070024231 @param uSTAIdx: STA index
24232
Jeff Johnson295189b2012-06-20 16:38:30 -070024233 @see WDI_PostAssocReq
24234 @return Result of the function call
24235*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024236wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070024237WDI_IsHwFrameTxTranslationCapable
24238(
24239 wpt_uint8 uSTAIdx
24240)
24241{
Jeff Johnsone7245742012-09-05 17:12:55 -070024242 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070024243 uma value*/
24244 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024245 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024246 ------------------------------------------------------------------------*/
24247 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24248 {
24249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24250 "WDI API call before module is initialized - Fail request");
24251
Jeff Johnsone7245742012-09-05 17:12:55 -070024252 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024253 }
24254
Gopichand Nakkala976e3252013-01-03 15:45:56 -080024255#ifdef WLAN_SOFTAP_VSTA_FEATURE
24256 if (IS_VSTA_IDX(uSTAIdx))
24257 {
24258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24259 "STA %d is a Virtual STA, "
24260 "HW frame translation disabled", uSTAIdx);
24261 return eWLAN_PAL_FALSE;
24262 }
24263#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070024264
Jeff Johnson295189b2012-06-20 16:38:30 -070024265 return gWDICb.bFrameTransEnabled;
24266}/*WDI_IsHwFrameTxTranslationCapable*/
24267
24268#ifdef FEATURE_WLAN_SCAN_PNO
24269/**
24270 @brief WDI_SetPreferredNetworkList
24271
Jeff Johnsone7245742012-09-05 17:12:55 -070024272 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024273 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024274
Jeff Johnson295189b2012-06-20 16:38:30 -070024275 wdiPNOScanCb: callback for passing back the response
24276 of the Set PNO operation received from the
24277 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024278
Jeff Johnson295189b2012-06-20 16:38:30 -070024279 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024280 callback
24281
Jeff Johnson295189b2012-06-20 16:38:30 -070024282 @return Result of the function call
24283*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024284WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024285WDI_SetPreferredNetworkReq
24286(
24287 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24288 WDI_PNOScanCb wdiPNOScanCb,
24289 void* pUserData
24290)
24291{
24292 WDI_EventInfoType wdiEventData = {{0}};
24293 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24294
24295 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024296 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024297 ------------------------------------------------------------------------*/
24298 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24299 {
24300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24301 "WDI API call before module is initialized - Fail request");
24302
Jeff Johnsone7245742012-09-05 17:12:55 -070024303 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024304 }
24305
24306 /*------------------------------------------------------------------------
24307 Fill in Event data and post to the Main FSM
24308 ------------------------------------------------------------------------*/
24309 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024310 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024311 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024312 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024313 wdiEventData.pUserData = pUserData;
24314
24315 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24316}
24317
24318
24319/**
24320 @brief WDI_SetRssiFilterReq
24321
Jeff Johnsone7245742012-09-05 17:12:55 -070024322 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070024323 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024324
Jeff Johnson295189b2012-06-20 16:38:30 -070024325 wdiRssiFilterCb: callback for passing back the response
24326 of the Set RSSI Filter operation received from the
24327 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024328
Jeff Johnson295189b2012-06-20 16:38:30 -070024329 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024330 callback
24331
Jeff Johnson295189b2012-06-20 16:38:30 -070024332 @return Result of the function call
24333*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024334WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024335WDI_SetRssiFilterReq
24336(
24337 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
24338 WDI_RssiFilterCb wdiRssiFilterCb,
24339 void* pUserData
24340)
24341{
24342 WDI_EventInfoType wdiEventData = {{0}};
24343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24344
24345 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024346 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024347 ------------------------------------------------------------------------*/
24348 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24349 {
24350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24351 "WDI API call before module is initialized - Fail request");
24352
Jeff Johnsone7245742012-09-05 17:12:55 -070024353 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024354 }
24355
24356 /*------------------------------------------------------------------------
24357 Fill in Event data and post to the Main FSM
24358 ------------------------------------------------------------------------*/
24359 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024360 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024361 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024362 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024363 wdiEventData.pUserData = pUserData;
24364
24365 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24366}/*WDI_SetRssiFilterReq*/
24367
24368/**
24369 @brief WDI_UpdateScanParamsReq
24370
Jeff Johnsone7245742012-09-05 17:12:55 -070024371 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024372 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024373
Jeff Johnson295189b2012-06-20 16:38:30 -070024374 wdiUpdateScanParamsCb: callback for passing back the response
24375 of the Set PNO operation received from the
24376 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024377
Jeff Johnson295189b2012-06-20 16:38:30 -070024378 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024379 callback
24380
Jeff Johnson295189b2012-06-20 16:38:30 -070024381 @return Result of the function call
24382*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024383WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024384WDI_UpdateScanParamsReq
24385(
24386 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
24387 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
24388 void* pUserData
24389)
24390{
24391 WDI_EventInfoType wdiEventData = {{0}};
24392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24393
24394 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024395 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024396 ------------------------------------------------------------------------*/
24397 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24398 {
24399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24400 "WDI API call before module is initialized - Fail request");
24401
Jeff Johnsone7245742012-09-05 17:12:55 -070024402 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024403 }
24404
24405 /*------------------------------------------------------------------------
24406 Fill in Event data and post to the Main FSM
24407 ------------------------------------------------------------------------*/
24408 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024409 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024410 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024411 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024412 wdiEventData.pUserData = pUserData;
24413
24414 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24415}
24416
24417/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024418 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024419 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024420
24421 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024422 pwdiPNOScanReqParams: pointer to the info received
24423 from upper layers
24424 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024425 and its size
24426
Jeff Johnson295189b2012-06-20 16:38:30 -070024427 @return Result of the function call
24428*/
24429
24430WDI_Status
24431WDI_PackPreferredNetworkList
24432(
24433 WDI_ControlBlockType* pWDICtx,
24434 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24435 wpt_uint8** ppSendBuffer,
24436 wpt_uint16* pSize
24437)
24438{
Jeff Johnsone7245742012-09-05 17:12:55 -070024439 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024440 wpt_uint16 usDataOffset = 0;
24441 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024442 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024443 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024444 /*-----------------------------------------------------------------------
24445 Get message buffer
24446 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024447 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024448 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024449 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024450 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024451 {
24452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024453 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024454 pwdiPNOScanReqParams);
24455 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024456 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024457 }
24458
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024459 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
24460
Jeff Johnson295189b2012-06-20 16:38:30 -070024461 /*-------------------------------------------------------------------------
24462 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24463 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024464 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024465 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024466 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024467 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24468
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024469 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024470 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024471 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024472 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024473 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24474
24475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024476 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024477 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24478 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24479 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24480
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024481 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024482 {
24483 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024484 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024485 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24486
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024487 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024488 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024489 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024490
24491 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024492 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024493 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024494
24495 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024496 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024497 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024498
Jeff Johnsone7245742012-09-05 17:12:55 -070024499 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024500 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024501 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070024502 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
24503 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24504 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
24505 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024506
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024507 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024508 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024509 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024510
24511 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024512 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024513 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24514
24515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024516 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024517 pPrefNetwListParams->aNetworks[i].ssId.length,
24518 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024519 }
24520
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024521 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024522 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024523 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24524 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24525 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24526
24527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024528 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024529 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024530 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24531 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24532
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024533 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024534 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024535 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024536 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024537 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024538 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24539 }
24540
24541 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024542 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024543 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24544 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24545 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024546 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024547
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024548 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024549 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024550 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024551
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024552 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024553 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24554 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24555 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024556 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024557
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024558 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024559 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024560 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024561
24562 /*Set the output values*/
24563 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024564 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024565
24566 return WDI_STATUS_SUCCESS;
24567}/*WDI_PackPreferredNetworkList*/
24568
24569/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024570 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024571 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024572
24573 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024574 pwdiPNOScanReqParams: pointer to the info received
24575 from upper layers
24576 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024577 and its size
24578
Jeff Johnson295189b2012-06-20 16:38:30 -070024579 @return Result of the function call
24580*/
24581
24582WDI_Status
24583WDI_PackPreferredNetworkListNew
24584(
24585 WDI_ControlBlockType* pWDICtx,
24586 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24587 wpt_uint8** ppSendBuffer,
24588 wpt_uint16* pSize
24589)
24590{
Jeff Johnsone7245742012-09-05 17:12:55 -070024591 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024592 wpt_uint16 usDataOffset = 0;
24593 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024594 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024595 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024596
24597 /*-----------------------------------------------------------------------
24598 Get message buffer
24599 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024600 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024601 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070024602 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024603 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024604 {
24605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024606 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024607 pwdiPNOScanReqParams);
24608 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024609 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024610 }
24611
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024612 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
24613
Jeff Johnson295189b2012-06-20 16:38:30 -070024614 /*-------------------------------------------------------------------------
24615 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24616 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024617 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024618 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024619 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024620 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24621
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024622 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024623 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024624 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024625 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024626 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24627
24628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024629 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024630 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24631 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24632 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24633
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024634 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024635 {
24636 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024637 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024638 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24639
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024640 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024641 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024642 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024643
24644 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024645 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024646 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024647
24648 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024649 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024650 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024651
24652 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024653 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070024654 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024655
Jeff Johnsone7245742012-09-05 17:12:55 -070024656 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024657 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024658 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070024659 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
24660
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024661 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024662 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024663 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024664
24665 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024666 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024667 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24668
24669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024670 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024671 pPrefNetwListParams->aNetworks[i].ssId.length,
24672 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024673 }
24674
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024675 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024676 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024677 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24678 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24679 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24680
24681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024682 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024683 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024684 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24685 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24686
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024687 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024688 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024689 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024690 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024691 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024692 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24693 }
24694
24695 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024696 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024697 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24698 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24699 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024700 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024701
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024702 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024703 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024704 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024705
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024706 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024707 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24708 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24709 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024710 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024711
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024712 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024713 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024714 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024715
Jeff Johnson295189b2012-06-20 16:38:30 -070024716
24717 /*Set the output values*/
24718 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024719 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024720
24721 return WDI_STATUS_SUCCESS;
24722}/*WDI_PackPreferredNetworkListNew*/
24723
24724/**
24725 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024726
24727 @param pWDICtx: pointer to the WLAN DAL context
24728 pEventData: pointer to the event information structure
24729
Jeff Johnson295189b2012-06-20 16:38:30 -070024730 @return Result of the function call
24731*/
24732WDI_Status
24733WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024734(
Jeff Johnson295189b2012-06-20 16:38:30 -070024735 WDI_ControlBlockType* pWDICtx,
24736 WDI_EventInfoType* pEventData
24737)
24738{
24739 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24740 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024741 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024742 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024743 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024744
24745 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024746 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024747 -------------------------------------------------------------------------*/
24748 if (( NULL == pEventData ) ||
24749 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24750 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24751 {
24752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024753 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024756 }
24757
24758 /*-------------------------------------------------------------------------
24759 Pack the PNO request structure based on version
24760 -------------------------------------------------------------------------*/
24761 if ( pWDICtx->wdiPNOVersion > 0 )
24762 {
24763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024764 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024765 pWDICtx->wdiPNOVersion);
24766
24767 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24768 &pSendBuffer, &usSendSize);
24769 }
24770 else
24771 {
24772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024773 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024774 pWDICtx->wdiPNOVersion);
24775
24776 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24777 &pSendBuffer, &usSendSize);
24778 }
24779
24780 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24781 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24782 {
24783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024784 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024785 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024786 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024787 }
24788
24789 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024790 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024791
24792 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024793 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024794 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024795 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24796 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024797}
24798
24799/**
24800 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024801
24802 @param pWDICtx: pointer to the WLAN DAL context
24803 pEventData: pointer to the event information structure
24804
Jeff Johnson295189b2012-06-20 16:38:30 -070024805 @see
24806 @return Result of the function call
24807*/
24808WDI_Status
24809WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024810(
Jeff Johnson295189b2012-06-20 16:38:30 -070024811 WDI_ControlBlockType* pWDICtx,
24812 WDI_EventInfoType* pEventData
24813)
24814{
24815 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24816 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024817 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024818 wpt_uint16 usDataOffset = 0;
24819 wpt_uint16 usSendSize = 0;
24820 wpt_uint8 ucRssiThreshold;
24821
24822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024823 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024824 -------------------------------------------------------------------------*/
24825 if (( NULL == pEventData ) ||
24826 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24827 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24828 {
24829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024830 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024831 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024832 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024833 }
24834
24835 /*-----------------------------------------------------------------------
24836 Get message buffer
24837 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024838 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024839 sizeof(ucRssiThreshold),
24840 &pSendBuffer, &usDataOffset, &usSendSize))||
24841 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24842 {
24843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024844 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024845 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024848 }
24849
24850 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24851
Jeff Johnsone7245742012-09-05 17:12:55 -070024852 wpalMemoryCopy( pSendBuffer+usDataOffset,
24853 &ucRssiThreshold,
24854 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024855
24856 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024857 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024858
24859 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024860 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024861 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024862 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24863 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024864}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024865#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24866/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024867 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024868
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024869 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024870 by the Device Interface
24871
24872 wdiRoamOffloadScancb: callback for passing back the response
24873 of the Roam Candidate Lookup Req operation received from the
24874 device
24875
24876 pUserData: user data will be passed back with the
24877 callback
24878 @return Result of the function call
24879*/
24880WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024881WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024882(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024883 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024884 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24885 void* pUserData
24886)
24887{
24888 WDI_EventInfoType wdiEventData = {{0}};
24889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24890
24891 /*------------------------------------------------------------------------
24892 Sanity Check
24893 ------------------------------------------------------------------------*/
24894 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24895 {
24896 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24897 "WDI API call before module is initialized - Fail request");
24898
24899 return WDI_STATUS_E_NOT_ALLOWED;
24900 }
24901
24902 /*------------------------------------------------------------------------
24903 Fill in Event data and post to the Main FSM
24904 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024905 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24906 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24907 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024908 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24909 wdiEventData.pUserData = pUserData;
24910
24911 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24912}
24913
24914void
24915WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24916{
24917 switch (wdiEdType)
24918 {
24919 case WDI_ED_NONE:
24920 *EdType = eED_NONE;
24921 break;
24922 case WDI_ED_WEP40:
24923 case WDI_ED_WEP104:
24924 *EdType = eED_WEP;
24925 break;
24926 case WDI_ED_TKIP:
24927 *EdType = eED_TKIP;
24928 break;
24929 case WDI_ED_CCMP:
24930#ifdef WLAN_FEATURE_11W
24931 case WDI_ED_AES_128_CMAC:
24932#endif
24933 *EdType = eED_CCMP;
24934 break;
24935#ifdef FEATURE_WLAN_WAPI
24936 case WDI_ED_WPI:
24937 *EdType = eED_WPI;
24938 break;
24939#endif
24940 case WDI_ED_ANY:
24941 *EdType = eED_ANY;
24942 break;
24943
24944 default:
24945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24946 "%s: Unknown Encryption Type", __func__);
24947 break;
24948 }
24949}
24950
24951/**
24952 @brief Helper function to pack Start Roam Candidate Lookup
24953 Request parameters
24954
24955 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024956 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024957 from upper layers
24958 ppSendBuffer, pSize - out pointers of the packed buffer
24959 and its size
24960
24961 @return Result of the function call
24962*/
24963
24964WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024965WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024966(
24967 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024968 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024969 wpt_uint8** ppSendBuffer,
24970 wpt_uint16* pSize
24971)
24972{
24973 wpt_uint8* pSendBuffer = NULL;
24974 wpt_uint16 usDataOffset = 0;
24975 wpt_uint16 usSendSize = 0;
24976 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24977 wpt_uint8 i;
24978 /*-----------------------------------------------------------------------
24979 Get message buffer
24980 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024981 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024982 sizeof(tRoamCandidateListParams),
24983 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070024984 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024985 {
24986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024987 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024988 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024989 WDI_ASSERT(0);
24990 return WDI_STATUS_E_FAILURE;
24991 }
24992 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070024993 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024994 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024995 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024996 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024997 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024998 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024999 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025000 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025001 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025002 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025003
25004 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025005 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025006 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025007 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025008 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
25009 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025010 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
25011 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
25012 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
25013 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
25014 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080025015 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025016 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080025017 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025018 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
25019 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
25020 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
25021 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
25022 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
25023 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
25024 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
25025 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025026 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025027 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
25028 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
25029 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025030
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
25032 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
25033 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
25034 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
25035 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
25036 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080025037 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025038 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
25039 pRoamCandidateListParams->RoamScanOffloadEnabled,
25040 pRoamCandidateListParams->Command,
25041 pRoamCandidateListParams->StartScanReason,
25042 pRoamCandidateListParams->NeighborScanTimerPeriod,
25043 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
25044 pRoamCandidateListParams->NeighborScanChannelMinTime,
25045 pRoamCandidateListParams->NeighborScanChannelMaxTime,
25046 pRoamCandidateListParams->EmptyRefreshScanPeriod,
25047 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
25048 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
25049 pRoamCandidateListParams->ConnectedNetwork.authentication,
25050 pRoamCandidateListParams->ConnectedNetwork.encryption,
25051 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
25052 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
25053 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025054 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025055 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025056 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025057 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025058 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25059 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025060 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025061 pRoamCandidateListParams->us24GProbeSize);
25062 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025063 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025064 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025065 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025066 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25067 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025068 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025069 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025070 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
25071 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
25072 pRoamCandidateListParams->nProbes =
25073 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
25074 pRoamCandidateListParams->HomeAwayTime =
25075 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
25076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025077 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
25078 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025080 }
25081
25082
25083 /*Set the output values*/
25084 *ppSendBuffer = pSendBuffer;
25085 *pSize = usSendSize;
25086 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025087}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025088
25089/**
25090 @brief Process Start Roam Candidate Lookup Request function
25091
25092 @param pWDICtx: pointer to the WLAN DAL context
25093 pEventData: pointer to the event information structure
25094
25095 @return Result of the function call
25096*/
25097WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025098WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025099(
25100 WDI_ControlBlockType* pWDICtx,
25101 WDI_EventInfoType* pEventData
25102)
25103{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025104 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025105 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25106 wpt_uint8* pSendBuffer = NULL;
25107 wpt_uint16 usSendSize = 0;
25108 WDI_Status wdiStatus;
25109 /*-------------------------------------------------------------------------
25110 Sanity check
25111 -------------------------------------------------------------------------*/
25112 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025113 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025114 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
25115 {
25116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25117 "%s: Invalid parameters", __func__);
25118 WDI_ASSERT(0);
25119 return WDI_STATUS_E_FAILURE;
25120 }
25121
25122 /*-------------------------------------------------------------------------
25123 Pack the Start Roam Candidate Lookup request structure based on version
25124 -------------------------------------------------------------------------*/
25125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25126 "%s: Packing Roam Candidate Lookup request ", __func__);
25127
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025128 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025129 &pSendBuffer, &usSendSize);
25130
25131 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25132 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25133 {
25134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25135 "%s: failed to pack request parameters", __func__);
25136 WDI_ASSERT(0);
25137 return wdiStatus;
25138 }
25139
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025140 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
25141 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025142
25143 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025144 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025145 -------------------------------------------------------------------------*/
25146 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025147 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025148}
25149
25150/**
25151 @brief Process Start Roam Candidate Lookup Rsp function (called when a
25152 response is being received over the bus from HAL)
25153
25154 @param pWDICtx: pointer to the WLAN DAL context
25155 pEventData: pointer to the event information structure
25156
25157 @see
25158 @return Result of the function call
25159*/
25160WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025161WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025162(
25163 WDI_ControlBlockType* pWDICtx,
25164 WDI_EventInfoType* pEventData
25165)
25166{
25167 WDI_Status wdiStatus;
25168 eHalStatus halStatus;
25169 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25170
25171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25172
25173 /*-------------------------------------------------------------------------
25174 Sanity check
25175 -------------------------------------------------------------------------*/
25176 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25177 ( NULL == pEventData->pEventData ))
25178 {
25179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25180 "%s: Invalid parameters", __func__);
25181 WDI_ASSERT(0);
25182 return WDI_STATUS_E_FAILURE;
25183 }
25184
25185 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
25186
25187 /*-------------------------------------------------------------------------
25188 Extract response and send it to UMAC
25189 -------------------------------------------------------------------------*/
25190 halStatus = *((eHalStatus*)pEventData->pEventData);
25191 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25192
25193 /*Notify UMAC*/
25194 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
25195
25196 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025197}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025198#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025199
25200/**
25201 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070025202
25203 @param pWDICtx: pointer to the WLAN DAL context
25204 pEventData: pointer to the event information structure
25205
Jeff Johnson295189b2012-06-20 16:38:30 -070025206 @see
25207 @return Result of the function call
25208*/
25209WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025210WDI_PackUpdateScanParamsReq
25211(
25212 WDI_ControlBlockType* pWDICtx,
25213 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25214 wpt_uint8** ppSendBuffer,
25215 wpt_uint16* pSize
25216)
25217{
25218 wpt_uint8* pSendBuffer = NULL;
25219 wpt_uint16 usDataOffset = 0;
25220 wpt_uint16 usSendSize = 0;
25221 tUpdateScanParams updateScanParams = {0};
25222
25223
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080025224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025225 "Begin WDI Update Scan Parameters Old Style Params");
25226 /*-----------------------------------------------------------------------
25227 Get message buffer
25228 -----------------------------------------------------------------------*/
25229 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25230 sizeof(updateScanParams),
25231 &pSendBuffer, &usDataOffset, &usSendSize))||
25232 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25233 {
25234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025235 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025236 pwdiUpdateScanParams);
25237 WDI_ASSERT(0);
25238 return WDI_STATUS_E_FAILURE;
25239 }
25240
25241 //
25242 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25243 //
25244
25245 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25246 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25247
25248 updateScanParams.ucChannelCount =
25249 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25250 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25251 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25252 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
25253
25254 wpalMemoryCopy( updateScanParams.aChannels,
25255 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25256 updateScanParams.ucChannelCount);
25257
25258
25259 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25260 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25261 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25262 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25263 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25264
25265 wpalMemoryCopy( pSendBuffer+usDataOffset,
25266 &updateScanParams,
25267 sizeof(updateScanParams));
25268
25269 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25270 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25271
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080025272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025273 "End Update Scan Parameters Old Style");
25274
25275 /*Set the output values*/
25276 *ppSendBuffer = pSendBuffer;
25277 *pSize = usSendSize;
25278
25279 return WDI_STATUS_SUCCESS;
25280}
25281
25282/**
25283 @brief Process Update Scan Params function
25284
25285 @param pWDICtx: pointer to the WLAN DAL context
25286 pEventData: pointer to the event information structure
25287
25288 @see
25289 @return Result of the function call
25290*/
25291WDI_Status
25292WDI_PackUpdateScanParamsReqEx
25293(
25294 WDI_ControlBlockType* pWDICtx,
25295 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25296 wpt_uint8** ppSendBuffer,
25297 wpt_uint16* pSize
25298)
25299{
25300 wpt_uint8* pSendBuffer = NULL;
25301 wpt_uint16 usDataOffset = 0;
25302 wpt_uint16 usSendSize = 0;
25303 tUpdateScanParamsEx updateScanParams = {0};
25304
25305
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025306 /*-----------------------------------------------------------------------
25307 Get message buffer
25308 -----------------------------------------------------------------------*/
25309 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25310 sizeof(updateScanParams),
25311 &pSendBuffer, &usDataOffset, &usSendSize))||
25312 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25313 {
25314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025315 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025316 pwdiUpdateScanParams);
25317 WDI_ASSERT(0);
25318 return WDI_STATUS_E_FAILURE;
25319 }
25320
25321 //
25322 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25323 //
25324
25325 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25326 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25327
25328 updateScanParams.ucChannelCount =
25329 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25330 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
25331 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25332 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
25333
25334 wpalMemoryCopy( updateScanParams.aChannels,
25335 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25336 updateScanParams.ucChannelCount);
25337
25338
25339 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25340 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25341 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25342 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25343 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25344
25345 wpalMemoryCopy( pSendBuffer+usDataOffset,
25346 &updateScanParams,
25347 sizeof(updateScanParams));
25348
25349 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25350 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25351
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025352 /*Set the output values*/
25353 *ppSendBuffer = pSendBuffer;
25354 *pSize = usSendSize;
25355
25356 return WDI_STATUS_SUCCESS;
25357}
25358
25359/**
25360 @brief Process Update Scan Params function
25361
25362 @param pWDICtx: pointer to the WLAN DAL context
25363 pEventData: pointer to the event information structure
25364
25365 @see
25366 @return Result of the function call
25367*/
25368WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025369WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025370(
Jeff Johnson295189b2012-06-20 16:38:30 -070025371 WDI_ControlBlockType* pWDICtx,
25372 WDI_EventInfoType* pEventData
25373)
25374{
25375 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
25376 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025377 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025378 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025379 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025380
25381 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025382 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025383 -------------------------------------------------------------------------*/
25384 if (( NULL == pEventData ) ||
25385 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
25386 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
25387 {
25388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025389 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025390 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025391 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025392 }
25393
25394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25395 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070025396
25397 //
25398 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25399 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025400 if ( pWDICtx->wlanVersion.revision < 1 )
25401 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025402 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025403 &pSendBuffer, &usSendSize);
25404 }
25405 else
25406 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025407 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
25408 &pSendBuffer, &usSendSize);
25409 }
25410
25411 if(WDI_STATUS_SUCCESS != wdiStatus)
25412 {
25413 //memory allocation failed
25414 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025415 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025416
Jeff Johnson295189b2012-06-20 16:38:30 -070025417 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025418 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025419 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025420 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025421 wdiUpdateScanParamsCb, pEventData->pUserData,
25422 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025423}
25424
25425/**
25426 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070025427
25428 @param pWDICtx: pointer to the WLAN DAL context
25429 pEventData: pointer to the event information structure
25430
Jeff Johnson295189b2012-06-20 16:38:30 -070025431 @see
25432 @return Result of the function call
25433*/
25434WDI_Status
25435WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070025436(
Jeff Johnson295189b2012-06-20 16:38:30 -070025437 WDI_ControlBlockType* pWDICtx,
25438 WDI_EventInfoType* pEventData
25439)
25440{
Srikant Kuppa066904f2013-05-07 13:56:02 -070025441 WDI_LowLevelIndType wdiInd;
25442 tpPrefNetwFoundParams pNetwFoundParams;
25443 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025444
25445
25446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025447 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025448 -------------------------------------------------------------------------*/
25449 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25450 ( NULL == pEventData->pEventData ))
25451 {
25452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025453 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025454 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025456 }
25457
25458 /*-------------------------------------------------------------------------
25459 Extract indication and send it to UMAC
25460 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070025461 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
25462
25463 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
25464 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
25465 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
25466
25467 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
25468 {
25469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25470 "%s: fail to allocate memory", __func__);
25471 return WDI_STATUS_MEM_FAILURE;
25472 }
25473
25474 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
25475 (pNetwFoundParams->ssId.length < 32 )?
25476 pNetwFoundParams->ssId.length : 32;
25477 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
25478 pNetwFoundParams->ssId.ssId,
25479 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
25480 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
25481 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
25482 pNetwFoundParams->frameLength;
25483 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
25484 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
25485 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025486
25487 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025488 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025489
Jeff Johnson295189b2012-06-20 16:38:30 -070025490 // DEBUG
25491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang56002a22013-08-28 17:55:56 -070025492 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070025493 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070025494 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025495 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070025496 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025497 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
25498
ltimariub77f24b2013-01-24 18:54:33 -080025499 if ( pWDICtx->wdiLowLevelIndCB )
25500 {
25501 /*Notify UMAC*/
25502 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
25503 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025504
25505 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025506}
25507
25508/**
25509 @brief Process PNO Rsp function (called when a
25510 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025511
25512 @param pWDICtx: pointer to the WLAN DAL context
25513 pEventData: pointer to the event information structure
25514
Jeff Johnson295189b2012-06-20 16:38:30 -070025515 @see
25516 @return Result of the function call
25517*/
25518WDI_Status
25519WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025520(
Jeff Johnson295189b2012-06-20 16:38:30 -070025521 WDI_ControlBlockType* pWDICtx,
25522 WDI_EventInfoType* pEventData
25523)
25524{
25525 WDI_Status wdiStatus;
25526 eHalStatus halStatus;
25527 WDI_PNOScanCb wdiPNOScanCb = NULL;
25528 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25529
25530 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025531 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025532 -------------------------------------------------------------------------*/
25533 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25534 ( NULL == pEventData->pEventData ))
25535 {
25536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025537 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025538 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025540 }
25541
25542
Jeff Johnsone7245742012-09-05 17:12:55 -070025543 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025544
25545 /*-------------------------------------------------------------------------
25546 Extract response and send it to UMAC
25547 -------------------------------------------------------------------------*/
25548 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025549 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025550
25551 /*Notify UMAC*/
25552 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
25553
Jeff Johnsone7245742012-09-05 17:12:55 -070025554 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025555}/*WDI_ProcessSetPreferredNetworkRsp*/
25556
25557/**
25558 @brief Process RSSI Filter Rsp function (called when a
25559 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025560
25561 @param pWDICtx: pointer to the WLAN DAL context
25562 pEventData: pointer to the event information structure
25563
Jeff Johnson295189b2012-06-20 16:38:30 -070025564 @see
25565 @return Result of the function call
25566*/
25567WDI_Status
25568WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025569(
Jeff Johnson295189b2012-06-20 16:38:30 -070025570 WDI_ControlBlockType* pWDICtx,
25571 WDI_EventInfoType* pEventData
25572)
25573{
25574 WDI_Status wdiStatus;
25575 eHalStatus halStatus;
25576 WDI_RssiFilterCb wdiRssiFilterCb;
25577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25578
25579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025581 -------------------------------------------------------------------------*/
25582 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25583 ( NULL == pEventData->pEventData ))
25584 {
25585 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025586 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025587 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025588 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025589 }
25590
Jeff Johnsone7245742012-09-05 17:12:55 -070025591 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025592
25593 /*-------------------------------------------------------------------------
25594 Extract response and send it to UMAC
25595 -------------------------------------------------------------------------*/
25596 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025597 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025598
25599 /*Notify UMAC*/
25600 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
25601
Jeff Johnsone7245742012-09-05 17:12:55 -070025602 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025603}/*WDI_ProcessSetRssiFilterRsp*/
25604
25605/**
25606 @brief Process Update Scan Params Rsp function (called when a
25607 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025608
25609 @param pWDICtx: pointer to the WLAN DAL context
25610 pEventData: pointer to the event information structure
25611
Jeff Johnson295189b2012-06-20 16:38:30 -070025612 @see
25613 @return Result of the function call
25614*/
25615WDI_Status
25616WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025617(
Jeff Johnson295189b2012-06-20 16:38:30 -070025618 WDI_ControlBlockType* pWDICtx,
25619 WDI_EventInfoType* pEventData
25620)
25621{
25622 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070025623 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025624 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025625 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025626 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25627
25628 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025629 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025630 -------------------------------------------------------------------------*/
25631 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25632 ( NULL == pEventData->pEventData ))
25633 {
25634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025635 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025636 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025637 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025638 }
25639
25640 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025641 "%s: Process UPD scan params ptr : %p",
25642 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025643
Jeff Johnsone7245742012-09-05 17:12:55 -070025644 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025645
25646 /*-------------------------------------------------------------------------
25647 Extract response and send it to UMAC
25648 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025649 wpalMemoryCopy( (void *)&halUpdScanParams.status,
25650 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025651 sizeof(halUpdScanParams.status));
25652
25653 uStatus = halUpdScanParams.status;
25654
25655 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070025656 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070025657
25658 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025659 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070025660
Jeff Johnsone7245742012-09-05 17:12:55 -070025661 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025662
25663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025664 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025665 halUpdScanParams.status);
25666
25667 /*Notify UMAC*/
25668 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25669
Jeff Johnsone7245742012-09-05 17:12:55 -070025670 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025671}
25672#endif // FEATURE_WLAN_SCAN_PNO
25673
25674#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070025675WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025676WDI_8023MulticastListReq
25677(
25678 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
25679 WDI_8023MulticastListCb wdi8023MulticastListCallback,
25680 void* pUserData
25681)
25682{
25683 WDI_EventInfoType wdiEventData;
25684 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25685
25686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025687 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025688
25689 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025690 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025691 ------------------------------------------------------------------------*/
25692 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25693 {
25694 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25695 "WDI API call before module is initialized - Fail request");
25696
Jeff Johnsone7245742012-09-05 17:12:55 -070025697 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025698 }
25699
25700 /*------------------------------------------------------------------------
25701 Fill in Event data and post to the Main FSM
25702 ------------------------------------------------------------------------*/
25703 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025704 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025705 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025706 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025707 wdiEventData.pUserData = pUserData;
25708
25709 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25710}
25711
Jeff Johnsone7245742012-09-05 17:12:55 -070025712WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025713WDI_ReceiveFilterSetFilterReq
25714(
25715 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25716 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25717 void* pUserData
25718)
25719{
25720 WDI_EventInfoType wdiEventData;
25721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25722
25723 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025724 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025725
25726 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025727 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025728 ------------------------------------------------------------------------*/
25729 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25730 {
25731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25732 "WDI API call before module is initialized - Fail request");
25733
Jeff Johnsone7245742012-09-05 17:12:55 -070025734 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025735 }
25736
25737 /*------------------------------------------------------------------------
25738 Fill in Event data and post to the Main FSM
25739 ------------------------------------------------------------------------*/
25740 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025741 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25742 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070025743 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25744 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025745 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025746 wdiEventData.pUserData = pUserData;
25747
25748
25749 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25750}
25751
Jeff Johnsone7245742012-09-05 17:12:55 -070025752WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025753WDI_FilterMatchCountReq
25754(
25755 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25756 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25757 void* pUserData
25758)
25759{
25760 WDI_EventInfoType wdiEventData;
25761 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25762
25763 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025764 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025765
25766 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025767 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025768 ------------------------------------------------------------------------*/
25769 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25770 {
25771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25772 "WDI API call before module is initialized - Fail request");
25773
Jeff Johnsone7245742012-09-05 17:12:55 -070025774 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025775 }
25776
25777 /*------------------------------------------------------------------------
25778 Fill in Event data and post to the Main FSM
25779 ------------------------------------------------------------------------*/
25780 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025781 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025782 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025783 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025784 wdiEventData.pUserData = pUserData;
25785
25786
25787 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25788}
25789
Jeff Johnsone7245742012-09-05 17:12:55 -070025790WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025791WDI_ReceiveFilterClearFilterReq
25792(
25793 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25794 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25795 void* pUserData
25796)
25797{
25798 WDI_EventInfoType wdiEventData;
25799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25800
25801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025802 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025803
25804 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025805 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025806 ------------------------------------------------------------------------*/
25807 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25808 {
25809 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25810 "WDI API call before module is initialized - Fail request");
25811
Jeff Johnsone7245742012-09-05 17:12:55 -070025812 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025813 }
25814
25815 /*------------------------------------------------------------------------
25816 Fill in Event data and post to the Main FSM
25817 ------------------------------------------------------------------------*/
25818 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025819 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025820 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025821 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025822 wdiEventData.pUserData = pUserData;
25823
25824
25825 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25826}
25827
25828/**
25829 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025830
25831 @param pWDICtx: pointer to the WLAN DAL context
25832 pEventData: pointer to the event information structure
25833
Jeff Johnson295189b2012-06-20 16:38:30 -070025834 @see
25835 @return Result of the function call
25836*/
25837WDI_Status
25838WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025839(
Jeff Johnson295189b2012-06-20 16:38:30 -070025840 WDI_ControlBlockType* pWDICtx,
25841 WDI_EventInfoType* pEventData
25842)
25843{
25844 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25845 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025846 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025847 wpt_uint16 usDataOffset = 0;
25848 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025849 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025850 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025851 wpt_uint8 ucCurrentBSSSesIdx = 0;
25852 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025853
25854 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025855 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025856
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025857 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25858 if( NULL == pRcvFltMcAddrListType )
25859 {
25860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25861 "Failed to alloc in WDI_Process8023MulticastListReq");
25862 return WDI_STATUS_E_FAILURE;
25863 }
25864
Jeff Johnson295189b2012-06-20 16:38:30 -070025865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025866 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025867 -------------------------------------------------------------------------*/
25868 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025869 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025870 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025871 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025872 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25873 {
25874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025875 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025876 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025878 return WDI_STATUS_E_FAILURE;
25879 }
25880
25881 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25882 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25883 &pBSSSes);
25884 if ( NULL == pBSSSes )
25885 {
25886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025887 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025888 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025889 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025890 }
25891
25892 /*-----------------------------------------------------------------------
25893 Get message buffer
25894 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025895 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25896 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025897 sizeof(tHalRcvFltMcAddrListType),
25898 &pSendBuffer, &usDataOffset, &usSendSize))||
25899 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25900 {
25901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25902 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025903 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025904 pEventData, pwdiFltPktSetMcListReqParamsType,
25905 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070025906 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025907 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025908 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025909 }
25910
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025911 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025912 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025913 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025914 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025915 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025916 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25917 sizeof(tSirMacAddr));
25918 }
25919
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025920 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025921 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025922 pRcvFltMcAddrListType,
25923 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025924
25925 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025926 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025927
25928
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025929 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025931 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025932 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025933 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025934 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025935 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025936}
25937
25938/**
25939 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025940
25941 @param pWDICtx: pointer to the WLAN DAL context
25942 pEventData: pointer to the event information structure
25943
Jeff Johnson295189b2012-06-20 16:38:30 -070025944 @see
25945 @return Result of the function call
25946*/
25947WDI_Status
25948WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025949(
Jeff Johnson295189b2012-06-20 16:38:30 -070025950 WDI_ControlBlockType* pWDICtx,
25951 WDI_EventInfoType* pEventData
25952)
25953{
25954 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25955 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025956 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025957 wpt_uint16 usDataOffset = 0;
25958 wpt_uint16 usSendSize = 0;
25959 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025960 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025961 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025962 wpt_uint8 ucCurrentBSSSesIdx = 0;
25963 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025964 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25965 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025966
25967 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025968 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025969
25970 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025971 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025972 -------------------------------------------------------------------------*/
25973 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025974 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025975 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025976 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025977 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25978 {
25979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025980 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025981 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025982 return WDI_STATUS_E_FAILURE;
25983 }
25984
25985 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25986 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25987 &pBSSSes);
25988 if ( NULL == pBSSSes )
25989 {
25990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025991 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025992 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025993 }
25994
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025995 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25996 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025997
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025998 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25999 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26000 * sizeof(tHalSessionizedRcvPktFilterCfgType));
26001
26002 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
26003 usSessRcvPktFilterCfgSize);
26004
26005 if(NULL == pSessRcvPktFilterCfg)
26006 {
26007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26008 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026009 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026010 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026011 WDI_ASSERT(0);
26012 return WDI_STATUS_E_FAILURE;
26013 }
26014
26015 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
26016
26017 /*-----------------------------------------------------------------------
26018 Get message buffer
26019 -----------------------------------------------------------------------*/
26020
26021 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
26022 usSessRcvPktFilterCfgSize,
26023 &pSendBuffer, &usDataOffset, &usSendSize))||
26024 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
26025 {
26026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26027 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026028 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026029 pEventData, pwdiSetRcvPktFilterReqInfo,
26030 wdiReceiveFilterSetFilterCb);
26031 WDI_ASSERT(0);
26032 wpalMemoryFree(pSessRcvPktFilterCfg);
26033 return WDI_STATUS_E_FAILURE;
26034 }
26035
26036 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026037 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026038 usSendSize,pSessRcvPktFilterCfg);
26039
26040 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26041 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26042 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26043 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
26044
26045 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
26046
26047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26048 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
26049 pSessRcvPktFilterCfg->filterType);
26050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26051 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
26052 pSessRcvPktFilterCfg->coleasceTime);
26053
26054 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
26055 {
26056 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
26057 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26058 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
26059 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26060 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
26061 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26062 pSessRcvPktFilterCfg->paramsData[i].dataLength =
26063 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
26064
26065 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
26066 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26067 8);
26068 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
26069 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26070 8);
26071
26072 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026073 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026074 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
26075 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
26076
26077 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026078 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026079 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
26080 pSessRcvPktFilterCfg->paramsData[i].dataLength);
26081
26082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026083 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026084 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
26085 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
26086 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
26087 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
26088 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
26089 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
26090
26091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026092 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026093 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
26094 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
26095 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
26096 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
26097 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
26098 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
26099 }
26100
26101 wpalMemoryCopy( pSendBuffer+usDataOffset,
26102 pSessRcvPktFilterCfg,
26103 usSessRcvPktFilterCfgSize);
26104
26105
26106 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26107 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
26108
26109 wpalMemoryFree(pSessRcvPktFilterCfg);
26110
26111 }
26112 /*If SLM_SESSIONIZATION is not supported then do this */
26113 else
26114 {
26115 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
26116 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26117 * sizeof(tHalRcvPktFilterParams));
26118
26119 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070026120 usRcvPktFilterCfgSize);
26121
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026122 if(NULL == pRcvPktFilterCfg)
26123 {
26124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26125 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026126 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026127 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026128 WDI_ASSERT(0);
26129 return WDI_STATUS_E_FAILURE;
26130 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026131
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026132 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026133
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026134 /*-----------------------------------------------------------------------
26135 Get message buffer
26136 -----------------------------------------------------------------------*/
26137 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026138 usRcvPktFilterCfgSize,
26139 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026140 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
26141 {
26142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070026143 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026144 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026145 pEventData, pwdiSetRcvPktFilterReqInfo,
26146 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026147 WDI_ASSERT(0);
26148 wpalMemoryFree(pRcvPktFilterCfg);
26149 return WDI_STATUS_E_FAILURE;
26150 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026151
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026153 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070026154 usSendSize,usRcvPktFilterCfgSize);
26155
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026156 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26157 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26158 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26159 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070026160
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026162 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026163 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026164 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070026165 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070026166 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070026167
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026168 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
26169 {
26170 pRcvPktFilterCfg->paramsData[i].protocolLayer =
26171 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26172 pRcvPktFilterCfg->paramsData[i].cmpFlag =
26173 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26174 pRcvPktFilterCfg->paramsData[i].dataOffset =
26175 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26176 pRcvPktFilterCfg->paramsData[i].dataLength =
26177 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070026178
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026179 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026180 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26181 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026182 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070026183 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26184 8);
26185
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026187 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070026188 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070026189 pRcvPktFilterCfg->paramsData[i].cmpFlag);
26190
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026191 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026192 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026193 pRcvPktFilterCfg->paramsData[i].dataOffset,
26194 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026195
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026197 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026198 pRcvPktFilterCfg->paramsData[i].compareData[0],
26199 pRcvPktFilterCfg->paramsData[i].compareData[1],
26200 pRcvPktFilterCfg->paramsData[i].compareData[2],
26201 pRcvPktFilterCfg->paramsData[i].compareData[3],
26202 pRcvPktFilterCfg->paramsData[i].compareData[4],
26203 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070026204
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026205 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026206 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026207 pRcvPktFilterCfg->paramsData[i].dataMask[0],
26208 pRcvPktFilterCfg->paramsData[i].dataMask[1],
26209 pRcvPktFilterCfg->paramsData[i].dataMask[2],
26210 pRcvPktFilterCfg->paramsData[i].dataMask[3],
26211 pRcvPktFilterCfg->paramsData[i].dataMask[4],
26212 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
26213 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026214
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026215 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070026216 pRcvPktFilterCfg,
26217 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026218
26219
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026220 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26221 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026222
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026223 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026224 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026225 wpalMemoryFree(pRcvPktFilterCfg);
26226 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026227 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026228 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026229 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026230 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026231 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026232 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026233}
26234
26235/**
26236 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026237
26238 @param pWDICtx: pointer to the WLAN DAL context
26239 pEventData: pointer to the event information structure
26240
Jeff Johnson295189b2012-06-20 16:38:30 -070026241 @see
26242 @return Result of the function call
26243*/
26244WDI_Status
26245WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026246(
Jeff Johnson295189b2012-06-20 16:38:30 -070026247 WDI_ControlBlockType* pWDICtx,
26248 WDI_EventInfoType* pEventData
26249)
26250{
26251 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
26252 NULL;
26253 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
26254 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026255 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026256 wpt_uint16 usDataOffset = 0;
26257 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026258 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
26259 wpt_uint8 ucCurrentBSSSesIdx = 0;
26260 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026261
26262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026263 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026264
26265 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026266 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026267 -------------------------------------------------------------------------*/
26268 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026269 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026270 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026271 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026272 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
26273 {
26274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026275 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026276 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026277 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026278 }
26279
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026280 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26281 pwdiRcvFltPktMatchCntReqParamsType->bssId,
26282 &pBSSSes);
26283 if ( NULL == pBSSSes )
26284 {
26285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026286 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026287 return WDI_STATUS_E_FAILURE;
26288 }
26289
Jeff Johnson295189b2012-06-20 16:38:30 -070026290 /*-----------------------------------------------------------------------
26291 Get message buffer
26292 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026293 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26294 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026295 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026296 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026297 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026298 {
26299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26300 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026301 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026302 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
26303 wdiFilterMatchCountCb);
26304 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026306 }
26307
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026308 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
26309 wpalMemoryCopy( pSendBuffer+usDataOffset,
26310 &rcvFltPktMatchCntReqParam,
26311 sizeof(rcvFltPktMatchCntReqParam));
26312
Jeff Johnson295189b2012-06-20 16:38:30 -070026313 //
26314 // Don't need to fill send buffer other than header
26315 //
26316 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026317 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026318
26319
26320 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026321 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026322 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026323 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26324 wdiFilterMatchCountCb,
26325 pEventData->pUserData,
26326 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026327}
26328
26329/**
26330 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026331
26332 @param pWDICtx: pointer to the WLAN DAL context
26333 pEventData: pointer to the event information structure
26334
Jeff Johnson295189b2012-06-20 16:38:30 -070026335 @see
26336 @return Result of the function call
26337*/
26338WDI_Status
26339WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026340(
Jeff Johnson295189b2012-06-20 16:38:30 -070026341 WDI_ControlBlockType* pWDICtx,
26342 WDI_EventInfoType* pEventData
26343)
Jeff Johnsone7245742012-09-05 17:12:55 -070026344{
Jeff Johnson295189b2012-06-20 16:38:30 -070026345 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
26346 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026347 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026348 wpt_uint16 usDataOffset = 0;
26349 wpt_uint16 usSendSize = 0;
26350 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026351 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026352 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026353
26354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026355 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026356
26357 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026358 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026359 -------------------------------------------------------------------------*/
26360 if (( NULL == pEventData ) ||
26361 ( NULL == (pwdiRcvFltPktClearReqParamsType =
26362 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026363 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026364 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
26365 {
26366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026367 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026368 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026369 return WDI_STATUS_E_FAILURE;
26370 }
26371
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026372 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026373 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
26374 &pBSSSes);
26375 if ( NULL == pBSSSes )
26376 {
26377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026378 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026380 }
26381
26382 /*-----------------------------------------------------------------------
26383 Get message buffer
26384 -----------------------------------------------------------------------*/
26385 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026386 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026387 sizeof(tHalRcvFltPktClearParam),
26388 &pSendBuffer, &usDataOffset, &usSendSize))||
26389 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
26390 {
26391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26392 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026393 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026394 pEventData, pwdiRcvFltPktClearReqParamsType,
26395 wdiRcvFltPktClearFilterCb);
26396 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026397 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026398 }
26399
26400
26401 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026402 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070026403 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026404 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070026405
Jeff Johnsone7245742012-09-05 17:12:55 -070026406 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
26407 wpalMemoryCopy( pSendBuffer+usDataOffset,
26408 &rcvFltPktClearParam,
26409 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070026410
26411 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026412 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026413
26414
26415 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026416 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026417 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026418 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026419 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026420 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026421}
26422
26423/**
26424 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026425
26426 @param pWDICtx: pointer to the WLAN DAL context
26427 pEventData: pointer to the event information structure
26428
Jeff Johnson295189b2012-06-20 16:38:30 -070026429 @see
26430 @return Result of the function call
26431*/
26432WDI_Status
26433WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026434(
Jeff Johnson295189b2012-06-20 16:38:30 -070026435 WDI_ControlBlockType* pWDICtx,
26436 WDI_EventInfoType* pEventData
26437)
26438{
Jeff Johnson295189b2012-06-20 16:38:30 -070026439 eHalStatus halStatus;
26440 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026441 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
26442 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026443 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26444
26445 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026446 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026447
26448 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026449 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026450 -------------------------------------------------------------------------*/
26451 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26452 ( NULL == pEventData->pEventData ))
26453 {
26454 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026455 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026458 }
26459
Jeff Johnsone7245742012-09-05 17:12:55 -070026460 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026461
26462 /*-------------------------------------------------------------------------
26463 Extract response and send it to UMAC
26464 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026465 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26466 {
26467 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
26468 pEventData->pEventData,
26469 sizeof(halRcvFltPktSetMcListRsp));
26470
26471 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
26472 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
26473 wdiRcvFltPktSetMcListRspInfo.bssIdx =
26474 halRcvFltPktSetMcListRsp.bssIdx;
26475 }
26476 else
26477 {
26478 halStatus = *((eHalStatus*)pEventData->pEventData);
26479 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26480 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026481
26482 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026483 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026484
Jeff Johnsone7245742012-09-05 17:12:55 -070026485 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026486}
26487
26488/**
26489 @brief Process Set Rsp function (called when a
26490 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026491
26492 @param pWDICtx: pointer to the WLAN DAL context
26493 pEventData: pointer to the event information structure
26494
Jeff Johnson295189b2012-06-20 16:38:30 -070026495 @see
26496 @return Result of the function call
26497*/
26498WDI_Status
26499WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026500(
Jeff Johnson295189b2012-06-20 16:38:30 -070026501 WDI_ControlBlockType* pWDICtx,
26502 WDI_EventInfoType* pEventData
26503)
26504{
Jeff Johnson295189b2012-06-20 16:38:30 -070026505 eHalStatus halStatus;
26506 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026507 tHalSetPktFilterRspParams halSetPktFilterRspParams;
26508 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26510
26511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026512 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026513
26514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026515 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026516 -------------------------------------------------------------------------*/
26517 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26518 ( NULL == pEventData->pEventData ))
26519 {
26520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026521 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026522 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026524 }
26525
26526 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026527 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026528
26529 /*-------------------------------------------------------------------------
26530 Extract response and send it to UMAC
26531 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026532 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26533 {
26534 wpalMemoryCopy( &halSetPktFilterRspParams,
26535 pEventData->pEventData,
26536 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026537
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026538 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
26539 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
26540 }
26541 else
26542 {
26543 halStatus = *((eHalStatus*)pEventData->pEventData);
26544 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26545 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026546 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026547 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026548
Jeff Johnsone7245742012-09-05 17:12:55 -070026549 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026550}
26551
26552/**
26553 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026554
26555 @param pWDICtx: pointer to the WLAN DAL context
26556 pEventData: pointer to the event information structure
26557
Jeff Johnson295189b2012-06-20 16:38:30 -070026558 @see
26559 @return Result of the function call
26560*/
26561WDI_Status
26562WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026563(
Jeff Johnson295189b2012-06-20 16:38:30 -070026564 WDI_ControlBlockType* pWDICtx,
26565 WDI_EventInfoType* pEventData
26566)
26567{
Jeff Johnson295189b2012-06-20 16:38:30 -070026568 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026569 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026570 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
26571 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026572
26573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26574
26575 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026576 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026577
26578 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026579 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026580 -------------------------------------------------------------------------*/
26581 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26582 ( NULL == pEventData->pEventData ))
26583 {
26584 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026585 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026586 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026587 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026588 }
26589
Jeff Johnsone7245742012-09-05 17:12:55 -070026590 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026591
26592 /*-------------------------------------------------------------------------
26593 Extract response and send it to UMAC
26594 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026595 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26596 {
26597 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
26598 pEventData->pEventData,
26599 sizeof(halRcvFltrPktMatachRsp));
26600
26601 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
26602 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
26603 }
26604 else
26605 {
26606 halStatus = *((eHalStatus*)pEventData->pEventData);
26607 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26608 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026609
26610 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026611 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026612
Jeff Johnsone7245742012-09-05 17:12:55 -070026613 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026614}
26615
26616/**
26617 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026618
26619 @param pWDICtx: pointer to the WLAN DAL context
26620 pEventData: pointer to the event information structure
26621
Jeff Johnson295189b2012-06-20 16:38:30 -070026622 @see
26623 @return Result of the function call
26624*/
26625WDI_Status
26626WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026627(
Jeff Johnson295189b2012-06-20 16:38:30 -070026628 WDI_ControlBlockType* pWDICtx,
26629 WDI_EventInfoType* pEventData
26630)
26631{
Jeff Johnson295189b2012-06-20 16:38:30 -070026632 eHalStatus halStatus;
26633 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026634 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
26635 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026636 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26637
26638 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026639 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026640
26641 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026642 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026643 -------------------------------------------------------------------------*/
26644 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26645 ( NULL == pEventData->pEventData ))
26646 {
26647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026648 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026649 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026651 }
26652
26653 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026654 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026655
26656 /*-------------------------------------------------------------------------
26657 Extract response and send it to UMAC
26658 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026659 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26660 {
26661 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
26662 pEventData->pEventData,
26663 sizeof(halRcvFltPktClearRspMsg));
26664
26665 wdiRcvFltPktClearRspParamsType.wdiStatus =
26666 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
26667 wdiRcvFltPktClearRspParamsType.bssIdx =
26668 halRcvFltPktClearRspMsg.bssIdx;
26669 }
26670 else
26671 {
26672 halStatus = *((eHalStatus*)pEventData->pEventData);
26673 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26674 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026675
26676 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026677 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026678
Jeff Johnsone7245742012-09-05 17:12:55 -070026679 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026680}
26681#endif // WLAN_FEATURE_PACKET_FILTERING
26682
26683/**
26684 @brief Process Shutdown Rsp function
26685 There is no shutdown response comming from HAL
26686 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070026687
Jeff Johnson295189b2012-06-20 16:38:30 -070026688 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070026689 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026690
26691 @see
26692 @return Result of the function call
26693*/
26694WDI_Status
26695WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026696(
Jeff Johnson295189b2012-06-20 16:38:30 -070026697 WDI_ControlBlockType* pWDICtx,
26698 WDI_EventInfoType* pEventData
26699)
26700{
26701 /*There is no shutdown response comming from HAL - function just kept for
26702 simmetry */
26703 WDI_ASSERT(0);
26704 return WDI_STATUS_SUCCESS;
26705}/*WDI_ProcessShutdownRsp*/
26706
26707/**
26708 @brief WDI_SetPowerParamsReq
26709
Jeff Johnsone7245742012-09-05 17:12:55 -070026710 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026711 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026712
Jeff Johnson295189b2012-06-20 16:38:30 -070026713 wdiPowerParamsCb: callback for passing back the response
26714 of the Set Power Params operation received from the
26715 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026716
Jeff Johnson295189b2012-06-20 16:38:30 -070026717 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026718 callback
26719
Jeff Johnson295189b2012-06-20 16:38:30 -070026720 @return Result of the function call
26721*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026722WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026723WDI_SetPowerParamsReq
26724(
26725 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26726 WDI_SetPowerParamsCb wdiPowerParamsCb,
26727 void* pUserData
26728)
26729{
26730 WDI_EventInfoType wdiEventData;
26731 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26732
26733 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026734 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026735 ------------------------------------------------------------------------*/
26736 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26737 {
26738 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26739 "WDI API call before module is initialized - Fail request");
26740
Jeff Johnsone7245742012-09-05 17:12:55 -070026741 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026742 }
26743
26744 /*------------------------------------------------------------------------
26745 Fill in Event data and post to the Main FSM
26746 ------------------------------------------------------------------------*/
26747 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026748 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026749 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026750 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026751 wdiEventData.pUserData = pUserData;
26752
26753 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26754}/*WDI_SetPowerParamsReq*/
26755
26756/**
26757 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026758
26759 @param pWDICtx: pointer to the WLAN DAL context
26760 pEventData: pointer to the event information structure
26761
Jeff Johnson295189b2012-06-20 16:38:30 -070026762 @see
26763 @return Result of the function call
26764*/
26765WDI_Status
26766WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026767(
Jeff Johnson295189b2012-06-20 16:38:30 -070026768 WDI_ControlBlockType* pWDICtx,
26769 WDI_EventInfoType* pEventData
26770)
26771{
26772 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26773 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026774 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026775 wpt_uint16 usDataOffset = 0;
26776 wpt_uint16 usSendSize = 0;
26777 tSetPowerParamsType powerParams;
26778
26779 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026780 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026781 -------------------------------------------------------------------------*/
26782 if (( NULL == pEventData ) ||
26783 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26784 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26785 {
26786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026787 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026788 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026789 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026790 }
26791
26792 /*-----------------------------------------------------------------------
26793 Get message buffer
26794 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026795 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026796 sizeof(powerParams),
26797 &pSendBuffer, &usDataOffset, &usSendSize))||
26798 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26799 {
26800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026801 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026802 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26803 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026804 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026805 }
26806
26807 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026808 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026809 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26810
26811 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026812 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026813 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26814
26815 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026816 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026817 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26818
26819 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026820 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026821 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26822
26823 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026824 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026825 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26826
26827 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026828 powerParams.uBETInterval =
26829 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026830
Yue Mac24062f2013-05-13 17:01:29 -070026831 /* MAX LI for modulated DTIM */
26832 powerParams.uMaxLIModulatedDTIM =
26833 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026834
26835 wpalMemoryCopy( pSendBuffer+usDataOffset,
26836 &powerParams,
26837 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026838
26839 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026840 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026841
26842 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026843 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026844 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026845 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26846 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026847}
26848
26849/**
26850 @brief Process Power Params Rsp function (called when a
26851 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026852
26853 @param pWDICtx: pointer to the WLAN DAL context
26854 pEventData: pointer to the event information structure
26855
Jeff Johnson295189b2012-06-20 16:38:30 -070026856 @see
26857 @return Result of the function call
26858*/
26859WDI_Status
26860WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026861(
Jeff Johnson295189b2012-06-20 16:38:30 -070026862 WDI_ControlBlockType* pWDICtx,
26863 WDI_EventInfoType* pEventData
26864)
26865{
26866 WDI_Status wdiStatus;
26867 eHalStatus halStatus;
26868 WDI_SetPowerParamsCb wdiPowerParamsCb;
26869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26870
26871 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026872 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026873 -------------------------------------------------------------------------*/
26874 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26875 ( NULL == pEventData->pEventData ))
26876 {
26877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026878 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026881 }
26882
Jeff Johnsone7245742012-09-05 17:12:55 -070026883 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026884
26885 /*-------------------------------------------------------------------------
26886 Extract response and send it to UMAC
26887 -------------------------------------------------------------------------*/
26888 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026889 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026890
26891 /*Notify UMAC*/
26892 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26893
Jeff Johnsone7245742012-09-05 17:12:55 -070026894 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026895}/*WDI_ProcessSetPowerParamsRsp*/
26896
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053026897/**
26898 @brief WDI_dhcpStartInd
26899 Host will send an event to the FW when DHCP is initiated
26900
26901 @param
26902 WDI_DHCPInd: DHCP Indication
26903 @see
26904 @return Result of the function call
26905*/
26906WDI_Status
26907WDI_dhcpStartInd
26908(
26909 WDI_DHCPInd *wdiDHCPInd
26910)
26911{
26912 WDI_EventInfoType wdiEventData;
26913
26914 /*------------------------------------------------------------------------
26915 Sanity Check
26916 ------------------------------------------------------------------------*/
26917 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26918 {
26919 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26920 "WDI API call before module is initialized - Fail request");
26921
26922 return WDI_STATUS_E_NOT_ALLOWED;
26923 }
26924
26925 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26926 wdiEventData.pEventData = wdiDHCPInd;
26927 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26928 wdiEventData.pCBfnc = NULL;
26929 wdiEventData.pUserData = NULL;
26930
26931 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26932}
26933
26934
26935/**
26936 @brief WDI_dhcpStopInd
26937 Host will send an event to the FW when DHCP is completed
26938
26939 @param
26940 WDI_DHCPInd: DHCP Indication
26941 @see
26942 @return Result of the function call
26943*/
26944WDI_Status
26945WDI_dhcpStopInd
26946(
26947 WDI_DHCPInd *wdiDHCPInd
26948)
26949{
26950 WDI_EventInfoType wdiEventData;
26951
26952 /*------------------------------------------------------------------------
26953 Sanity Check
26954 ------------------------------------------------------------------------*/
26955 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26956 {
26957 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26958 "WDI API call before module is initialized - Fail request");
26959
26960 return WDI_STATUS_E_NOT_ALLOWED;
26961 }
26962
26963 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26964 wdiEventData.pEventData = wdiDHCPInd;
26965 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26966 wdiEventData.pCBfnc = NULL;
26967 wdiEventData.pUserData = NULL;
26968
26969 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26970}
26971
26972
26973/**
26974 @brief Process DHCP Start Indication message and post it to HAL
26975
26976 @param pWDICtx: pointer to the WLAN DAL context
26977 pEventData: pointer to the event information structure
26978
26979 @see
26980 @return Result of the function call
26981*/
26982WDI_Status
26983WDI_ProcessDHCPStartInd
26984(
26985 WDI_ControlBlockType* pWDICtx,
26986 WDI_EventInfoType* pEventData
26987)
26988{
26989 wpt_uint8* pSendBuffer = NULL;
26990 wpt_uint16 usDataOffset = 0;
26991 wpt_uint16 usSendSize = 0;
26992 wpt_uint16 usLen = 0;
26993 WDI_DHCPInd* pwdiDHCPInd = NULL;
26994 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053026995 WDI_Status wdiStatus;
26996
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053026997
26998 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26999
27000 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27001 "%s", __func__);
27002
27003 /*-------------------------------------------------------------------------
27004 Sanity check
27005 -------------------------------------------------------------------------*/
27006 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27007 {
27008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27009 "%s: Invalid parameters", __func__);
27010 WDI_ASSERT(0);
27011 return WDI_STATUS_E_FAILURE;
27012 }
27013 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27014 /*-----------------------------------------------------------------------
27015 Get message buffer
27016 -----------------------------------------------------------------------*/
27017
27018 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27019 WDI_DHCP_START_IND,
27020 sizeof(tDHCPInfo),
27021 &pSendBuffer, &usDataOffset, &usSendSize))||
27022 ( usSendSize < (usDataOffset + usLen )))
27023 {
27024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27025 "Unable to get send buffer in DHCP Start req %p ",
27026 pEventData);
27027 WDI_ASSERT(0);
27028 return WDI_STATUS_E_FAILURE;
27029 }
27030
Sandeep Puligillaee789512014-02-13 19:14:52 +053027031 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027032 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27033 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27034 WDI_MAC_ADDR_LEN);
27035
27036 pWDICtx->pReqStatusUserData = NULL;
27037 pWDICtx->pfncRspCB = NULL;
27038
27039 /*-------------------------------------------------------------------------
27040 Send DHCP Start Indication to HAL
27041 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053027042 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27043 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027044}/*WDI_ProcessDHCPStartInd*/
27045
27046/**
27047 @brief Process DHCP Stop indication message and post it to HAL
27048
27049 @param pWDICtx: pointer to the WLAN DAL context
27050 pEventData: pointer to the event information structure
27051
27052 @see
27053 @return Result of the function call
27054*/
27055WDI_Status
27056WDI_ProcessDHCPStopInd
27057(
27058 WDI_ControlBlockType* pWDICtx,
27059 WDI_EventInfoType* pEventData
27060)
27061{
27062 wpt_uint8* pSendBuffer = NULL;
27063 wpt_uint16 usDataOffset = 0;
27064 wpt_uint16 usSendSize = 0;
27065 wpt_uint16 usLen = 0;
27066 WDI_DHCPInd* pwdiDHCPInd = NULL;
27067 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053027068 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027069
27070 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27071
27072 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27073 "%s", __func__);
27074
27075 /*-------------------------------------------------------------------------
27076 Sanity check
27077 -------------------------------------------------------------------------*/
27078
27079 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27080 {
27081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27082 "%s: Invalid parameters", __func__);
27083 WDI_ASSERT(0);
27084 return WDI_STATUS_E_FAILURE;
27085 }
27086 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27087 /*-----------------------------------------------------------------------
27088 Get message buffer
27089 -----------------------------------------------------------------------*/
27090
27091 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27092 WDI_DHCP_STOP_IND,
27093 sizeof(tDHCPInfo),
27094 &pSendBuffer, &usDataOffset, &usSendSize))||
27095 ( usSendSize < (usDataOffset + usLen )))
27096 {
27097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27098 "Unable to get send buffer in DHCP Start req %p ",
27099 pEventData);
27100 WDI_ASSERT(0);
27101 return WDI_STATUS_E_FAILURE;
27102 }
27103
Sandeep Puligillaee789512014-02-13 19:14:52 +053027104 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027105 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27106 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27107 WDI_MAC_ADDR_LEN);
27108
27109 pWDICtx->pReqStatusUserData = NULL;
27110 pWDICtx->pfncRspCB = NULL;
27111 /*-------------------------------------------------------------------------
27112 Send DHCP Stop indication to HAL
27113 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053027114 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27115 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027116
27117}/*WDI_ProcessDHCPStopInd*/
27118
27119
Jeff Johnson295189b2012-06-20 16:38:30 -070027120#ifdef WLAN_FEATURE_GTK_OFFLOAD
27121/**
27122 @brief WDI_GTKOffloadReq will be called when the upper MAC
27123 wants to set GTK Rekey Counter while in power save. Upon
27124 the call of this API the WLAN DAL will pack and send a
27125 HAL GTK offload request message to the lower RIVA
27126 sub-system if DAL is in state STARTED.
27127
27128 In state BUSY this request will be queued. Request won't
27129 be allowed in any other state.
27130
27131 WDI_PostAssocReq must have been called.
27132
27133 @param pwdiGtkOffloadParams: the GTK offload as specified
27134 by the Device Interface
27135
27136 wdiGtkOffloadCb: callback for passing back the response
27137 of the GTK offload operation received from the device
27138
27139 pUserData: user data will be passed back with the
27140 callback
27141
27142 @see WDI_PostAssocReq
27143 @return Result of the function call
27144*/
27145WDI_Status
27146WDI_GTKOffloadReq
27147(
27148 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
27149 WDI_GtkOffloadCb wdiGtkOffloadCb,
27150 void* pUserData
27151)
27152{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027153 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27155
27156 /*------------------------------------------------------------------------
27157 Sanity Check
27158 ------------------------------------------------------------------------*/
27159 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27160 {
27161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27162 "WDI API call before module is initialized - Fail request");
27163
27164 return WDI_STATUS_E_NOT_ALLOWED;
27165 }
27166
27167 /*------------------------------------------------------------------------
27168 Fill in Event data and post to the Main FSM
27169 ------------------------------------------------------------------------*/
27170 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
27171 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070027172 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070027173 wdiEventData.pCBfnc = wdiGtkOffloadCb;
27174 wdiEventData.pUserData = pUserData;
27175
27176 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27177}
27178
27179
27180/**
27181 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
27182 MAC wants to get GTK Rekey Counter while in power save.
27183 Upon the call of this API the WLAN DAL will pack and
27184 send a HAL GTK offload request message to the lower RIVA
27185 sub-system if DAL is in state STARTED.
27186
27187 In state BUSY this request will be queued. Request won't
27188 be allowed in any other state.
27189
27190 WDI_PostAssocReq must have been called.
27191
27192 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
27193 Information Message as specified by the
27194 Device Interface
27195
27196 wdiGtkOffloadGetInfoCb: callback for passing back the
27197 response of the GTK offload operation received from the
27198 device
27199
27200 pUserData: user data will be passed back with the
27201 callback
27202
27203 @see WDI_PostAssocReq
27204 @return Result of the function call
27205*/
27206WDI_Status
27207WDI_GTKOffloadGetInfoReq
27208(
27209 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
27210 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
27211 void* pUserData
27212)
27213{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027214 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027215 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27216
27217 /*------------------------------------------------------------------------
27218 Sanity Check
27219 ------------------------------------------------------------------------*/
27220 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27221 {
27222 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27223 "WDI API call before module is initialized - Fail request");
27224
27225 return WDI_STATUS_E_NOT_ALLOWED;
27226 }
27227
27228 /*------------------------------------------------------------------------
27229 Fill in Event data and post to the Main FSM
27230 ------------------------------------------------------------------------*/
27231 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
27232 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
27233 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
27234 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
27235 wdiEventData.pUserData = pUserData;
27236
27237 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27238}
27239
27240
27241/**
27242 @brief Process set GTK Offload Request function
27243
27244 @param pWDICtx: pointer to the WLAN DAL context
27245 pEventData: pointer to the event information structure
27246
27247 @see
27248 @return Result of the function call
27249*/
27250WDI_Status
27251WDI_ProcessGTKOffloadReq
27252(
27253 WDI_ControlBlockType* pWDICtx,
27254 WDI_EventInfoType* pEventData
27255)
27256{
27257 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
27258 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
27259 wpt_uint8* pSendBuffer = NULL;
27260 wpt_uint16 usDataOffset = 0;
27261 wpt_uint16 usSendSize = 0;
27262 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027263 wpt_uint8 ucCurrentSessionId = 0;
27264 WDI_BSSSessionType* pBSSSes = NULL;
27265
Jeff Johnson295189b2012-06-20 16:38:30 -070027266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27267
27268 /*-------------------------------------------------------------------------
27269 Sanity check
27270 -------------------------------------------------------------------------*/
27271 if (( NULL == pEventData ) ||
27272 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
27273 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
27274 {
27275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027276 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027277 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027278 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027279 }
27280
27281 /*-----------------------------------------------------------------------
27282 Get message buffer
27283 -----------------------------------------------------------------------*/
27284 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
27285 sizeof(gtkOffloadReqParams),
27286 &pSendBuffer, &usDataOffset, &usSendSize))||
27287 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
27288 {
27289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027290 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027291 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
27292 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027293 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027294 }
27295
27296 //
27297 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
27298 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027299 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27300 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
27301 &pBSSSes);
27302 if ( NULL == pBSSSes )
27303 {
27304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027305 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027306 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027307 }
27308
27309 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
27310
Jeff Johnson295189b2012-06-20 16:38:30 -070027311 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
27312 // Copy KCK
27313 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
27314 // Copy KEK
27315 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
27316 // Copy KeyReplayCounter
27317 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
27318
27319 wpalMemoryCopy( pSendBuffer+usDataOffset,
27320 &gtkOffloadReqParams,
27321 sizeof(gtkOffloadReqParams));
27322
27323 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
27324 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
27325
27326 /*-------------------------------------------------------------------------
27327 Send Get STA Request to HAL
27328 -------------------------------------------------------------------------*/
27329 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27330 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027331
27332fail:
27333 // Release the message buffer so we don't leak
27334 wpalMemoryFree(pSendBuffer);
27335
27336failRequest:
27337 //WDA should have failure check to avoid the memory leak
27338 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027339}
27340
27341
27342/**
27343 @brief Process GTK Offload Get Information Request function
27344
27345 @param pWDICtx: pointer to the WLAN DAL context
27346 pEventData: pointer to the event information structure
27347
27348 @see
27349 @return Result of the function call
27350*/
27351WDI_Status
27352WDI_ProcessGTKOffloadGetInfoReq
27353(
27354 WDI_ControlBlockType* pWDICtx,
27355 WDI_EventInfoType* pEventData
27356)
27357{
27358 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
27359 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
27360 wpt_uint8* pSendBuffer = NULL;
27361 wpt_uint16 usDataOffset = 0;
27362 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027363 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
27364 wpt_uint8 ucCurrentSessionId = 0;
27365 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027366
27367 /*-------------------------------------------------------------------------
27368 Sanity check
27369 -------------------------------------------------------------------------*/
27370 if (( NULL == pEventData ) ||
27371 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
27372 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
27373 {
27374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027375 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027376 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027377 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027378 }
27379
27380 /*-----------------------------------------------------------------------
27381 Get message buffer
27382 -----------------------------------------------------------------------*/
27383 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027384 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027385 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027386 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027387 {
27388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027389 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027390 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
27391 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027392 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027393 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027394 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27395 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
27396 &pBSSSes);
27397 if ( NULL == pBSSSes )
27398 {
27399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027400 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027401 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027402 }
27403 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027404
27405 //
27406 // Don't need to fill send buffer other than header
27407 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027408 wpalMemoryCopy( pSendBuffer+usDataOffset,
27409 &halGtkOffloadGetInfoReqParams,
27410 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027411
27412 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
27413 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
27414
27415 /*-------------------------------------------------------------------------
27416 Send Get STA Request to HAL
27417 -------------------------------------------------------------------------*/
27418 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27419 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027420fail:
27421 // Release the message buffer so we don't leak
27422 wpalMemoryFree(pSendBuffer);
27423
27424failRequest:
27425 //WDA should have failure check to avoid the memory leak
27426 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027427}
27428
27429/**
27430 @brief Process host offload Rsp function (called when a
27431 response is being received over the bus from HAL)
27432
27433 @param pWDICtx: pointer to the WLAN DAL context
27434 pEventData: pointer to the event information structure
27435
27436 @see
27437 @return Result of the function call
27438*/
27439WDI_Status
27440WDI_ProcessGtkOffloadRsp
27441(
27442 WDI_ControlBlockType* pWDICtx,
27443 WDI_EventInfoType* pEventData
27444)
27445{
Jeff Johnson295189b2012-06-20 16:38:30 -070027446 eHalStatus halStatus;
27447 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027448 tHalGtkOffloadRspParams halGtkOffloadRspParams;
27449 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027450
27451 /*-------------------------------------------------------------------------
27452 Sanity check
27453 -------------------------------------------------------------------------*/
27454 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27455 ( NULL == pEventData->pEventData))
27456 {
27457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027458 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027459 WDI_ASSERT(0);
27460 return WDI_STATUS_E_FAILURE;
27461 }
27462
Wilson Yang00256342013-10-10 23:13:38 -070027463 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
27464
Jeff Johnson295189b2012-06-20 16:38:30 -070027465 /*-------------------------------------------------------------------------
27466 Extract response and send it to UMAC
27467 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027468 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27469 {
27470 wpalMemoryCopy( &halGtkOffloadRspParams,
27471 pEventData->pEventData,
27472 sizeof(halGtkOffloadRspParams));
27473
27474 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027475 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027476 wdiGtkOffloadRsparams.bssIdx =
27477 halGtkOffloadRspParams.bssIdx;
27478 }
27479 else
27480 {
27481 halStatus = *((eHalStatus*)pEventData->pEventData);
27482 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27483 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027484
27485 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027486 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027487
27488 return WDI_STATUS_SUCCESS;
27489}
27490
27491/**
27492 @brief Process GTK Offload Get Information Response function
27493
27494 @param pWDICtx: pointer to the WLAN DAL context
27495 pEventData: pointer to the event information structure
27496
27497 @see
27498 @return Result of the function call
27499*/
27500WDI_Status
27501WDI_ProcessGTKOffloadGetInfoRsp
27502(
27503 WDI_ControlBlockType* pWDICtx,
27504 WDI_EventInfoType* pEventData
27505)
27506{
Jeff Johnson295189b2012-06-20 16:38:30 -070027507 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027508 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027509 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
27510 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027511 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027512
Jeff Johnson295189b2012-06-20 16:38:30 -070027513
27514 /*-------------------------------------------------------------------------
27515 Sanity check
27516 -------------------------------------------------------------------------*/
27517 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27518 ( NULL == pEventData->pEventData ))
27519 {
27520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027521 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027522 WDI_ASSERT(0);
27523 return WDI_STATUS_E_FAILURE;
27524 }
27525
Wilson Yang00256342013-10-10 23:13:38 -070027526 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
27527
27528 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070027529 Extract response and send it to UMAC
27530 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027531 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27532 {
27533 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
27534 pEventData->pEventData,
27535 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027536
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027537 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027538 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027539 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
27540 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
27541 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
27542 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
27543 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
27544 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
27545 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
27546 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027547
27548 wpalMutexAcquire(&pWDICtx->wptMutex);
27549 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
27550 &pBSSSes);
27551
27552 if ( NULL == pBSSSes )
27553 {
27554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27555 "Association sequence for this BSS does not exist or "
27556 "association no longer in progress - mysterious HAL response");
27557 wpalMutexRelease(&pWDICtx->wptMutex);
27558 return WDI_STATUS_E_NOT_ALLOWED;
27559 }
27560
27561 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
27562 sizeof (wpt_macAddr));
27563 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027564 }
27565 else
27566 {
27567 halStatus = *((eHalStatus*)pEventData->pEventData);
27568 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27569 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027570 /*Notify UMAC*/
27571 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27572 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027573 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027574
27575 return WDI_STATUS_SUCCESS;
27576}
27577#endif // WLAN_FEATURE_GTK_OFFLOAD
27578
27579#ifdef WLAN_WAKEUP_EVENTS
27580WDI_Status
27581WDI_ProcessWakeReasonInd
27582(
27583 WDI_ControlBlockType* pWDICtx,
27584 WDI_EventInfoType* pEventData
27585)
27586{
27587 WDI_LowLevelIndType *pWdiInd;
27588 tpWakeReasonParams pWakeReasonParams;
27589 wpt_uint32 allocSize = 0;
27590
27591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027592 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027593
27594 /*-------------------------------------------------------------------------
27595 Sanity check
27596 -------------------------------------------------------------------------*/
27597 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27598 ( NULL == pEventData->pEventData ))
27599 {
27600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027601 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027602 WDI_ASSERT( 0 );
27603 return WDI_STATUS_E_FAILURE;
27604 }
27605
27606 /*-------------------------------------------------------------------------
27607 Extract indication and send it to UMAC
27608 -------------------------------------------------------------------------*/
27609 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
27610
27611 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
27612
27613 //Allocate memory for WDI_WakeReasonIndType structure
27614 pWdiInd = wpalMemoryAllocate(allocSize) ;
27615
27616 if(NULL == pWdiInd)
27617 {
27618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027619 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027620 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027621 WDI_ASSERT(0);
27622 return WDI_STATUS_E_FAILURE;
27623 }
27624
27625 wpalMemoryZero(pWdiInd, allocSize);
27626
27627 /* Fill in the indication parameters*/
27628 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
27629 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
27630 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
27631 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
27632 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
27633 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
27634 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
27635 &(pWakeReasonParams->aDataStart[0]),
27636 pWakeReasonParams->ulStoredDataLen);
27637
ltimariub77f24b2013-01-24 18:54:33 -080027638
27639 if ( pWDICtx->wdiLowLevelIndCB )
27640 {
27641 /*Notify UMAC*/
27642 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
27643 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027644
27645 //Free memory allocated for WDI_WakeReasonIndType structure
27646 wpalMemoryFree(pWdiInd);
27647
27648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027649 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027650
27651 return WDI_STATUS_SUCCESS;
27652}
27653#endif // WLAN_WAKEUP_EVENTS
27654
27655void WDI_GetWcnssCompiledApiVersion
27656(
27657 WDI_WlanVersionType *pWcnssApiVersion
27658)
27659{
27660 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
27661 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
27662 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
27663 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
27664}
27665
27666/**
27667 @brief Process Set TM Level Rsp function (called when a
27668 response is being received over the bus from HAL)
27669
27670 @param pWDICtx: pointer to the WLAN DAL context
27671 pEventData: pointer to the event information structure
27672
27673 @see
27674 @return Result of the function call
27675*/
27676WDI_Status
27677WDI_ProcessSetTmLevelRsp
27678(
27679 WDI_ControlBlockType* pWDICtx,
27680 WDI_EventInfoType* pEventData
27681)
27682{
27683 WDI_Status wdiStatus;
27684 eHalStatus halStatus;
27685 WDI_SetTmLevelCb wdiSetTmLevelCb;
27686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27687
27688 /*-------------------------------------------------------------------------
27689 Sanity check
27690 -------------------------------------------------------------------------*/
27691 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27692 ( NULL == pEventData->pEventData ))
27693 {
27694 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027695 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027696 WDI_ASSERT(0);
27697 return WDI_STATUS_E_FAILURE;
27698 }
27699
27700 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
27701
27702 /*-------------------------------------------------------------------------
27703 Extract response and send it to UMAC
27704 -------------------------------------------------------------------------*/
27705 halStatus = *((eHalStatus*)pEventData->pEventData);
27706 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27707
27708 /*Notify UMAC*/
27709 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
27710
27711 return WDI_STATUS_SUCCESS;
27712}/*WDI_ProcessSetTmLevelRsp*/
27713
27714/**
27715 @brief Process Set Thermal Mitigation level Changed request
27716
27717 @param pWDICtx: pointer to the WLAN DAL context
27718 pEventData: pointer to the event information structure
27719
27720 @see
27721 @return Result of the function call
27722*/
27723WDI_Status
27724WDI_ProcessSetTmLevelReq
27725(
27726 WDI_ControlBlockType* pWDICtx,
27727 WDI_EventInfoType* pEventData
27728)
27729{
27730 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
27731 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
27732 wpt_uint8* pSendBuffer = NULL;
27733 wpt_uint16 usDataOffset = 0;
27734 wpt_uint16 usSendSize = 0;
27735 tSetThermalMitgationType halTmMsg;
27736
27737 /*-------------------------------------------------------------------------
27738 Sanity check
27739 -------------------------------------------------------------------------*/
27740 if (( NULL == pEventData ) ||
27741 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
27742 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
27743 {
27744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027745 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027746 WDI_ASSERT(0);
27747 return WDI_STATUS_E_FAILURE;
27748 }
27749
27750 /*-----------------------------------------------------------------------
27751 Get message buffer
27752 -----------------------------------------------------------------------*/
27753 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
27754 sizeof(halTmMsg),
27755 &pSendBuffer, &usDataOffset, &usSendSize))||
27756 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
27757 {
27758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027759 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027760 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
27761 WDI_ASSERT(0);
27762 return WDI_STATUS_E_FAILURE;
27763 }
27764
27765 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
27766 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
27767
27768 wpalMemoryCopy( pSendBuffer+usDataOffset,
27769 &halTmMsg,
27770 sizeof(halTmMsg));
27771
27772 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
27773 pWDICtx->pfncRspCB = NULL;
27774 /*-------------------------------------------------------------------------
27775 Send Get STA Request to HAL
27776 -------------------------------------------------------------------------*/
27777 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27778 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
27779}
27780
27781/* Fill the value from the global features enabled array to the global capabilities
27782 * bitmap struct
27783 */
27784static void
27785FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
27786{
27787 wpt_int8 i;
27788 for (i=0; i<len; i++)
27789 {
27790 setFeatCaps(fCaps, enabledFeat[i]);
27791 }
27792}
27793
27794/**
27795 @brief WDI_featureCapsExchangeReq
27796 Post feature capability bitmap exchange event.
27797 Host will send its own capability to FW in this req and
27798 expect FW to send its capability back as a bitmap in Response
27799
27800 @param
27801
27802 wdiFeatureCapsExchangeCb: callback called on getting the response.
27803 It is kept to mantain similarity between WDI reqs and if needed, can
27804 be used in future. Currently, It is set to NULL
27805
27806 pUserData: user data will be passed back with the
27807 callback
27808
27809 @see
27810 @return Result of the function call
27811*/
27812WDI_Status
27813WDI_featureCapsExchangeReq
27814(
27815 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27816 void* pUserData
27817)
27818{
27819 WDI_EventInfoType wdiEventData;
27820 wpt_int32 fCapsStructSize;
27821
27822 /*------------------------------------------------------------------------
27823 Sanity Check
27824 ------------------------------------------------------------------------*/
27825 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27826 {
27827 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27828 "WDI API call before module is initialized - Fail request");
27829
27830 return WDI_STATUS_E_NOT_ALLOWED;
27831 }
27832
27833 /* Allocate memory separately for global variable carrying FW caps */
27834 fCapsStructSize = sizeof(tWlanFeatCaps);
27835 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27836 if ( NULL == gpHostWlanFeatCaps )
27837 {
27838 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027839 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070027840 WDI_ASSERT(0);
27841 return WDI_STATUS_MEM_FAILURE;
27842 }
27843
27844 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
27845
27846 /*------------------------------------------------------------------------
27847 Fill in Event data and post to the Main FSM
27848 ------------------------------------------------------------------------*/
27849 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
27850 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053027851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027852 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027853 gpHostWlanFeatCaps->featCaps[0],
27854 gpHostWlanFeatCaps->featCaps[1],
27855 gpHostWlanFeatCaps->featCaps[2],
27856 gpHostWlanFeatCaps->featCaps[3]
27857 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053027858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
27859 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027860 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
27861 wdiEventData.pEventData = gpHostWlanFeatCaps;
27862 wdiEventData.uEventDataSize = fCapsStructSize;
27863 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
27864 wdiEventData.pUserData = pUserData;
27865
27866 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27867}
27868
27869/**
Yathish9f22e662012-12-10 14:21:35 -080027870 @brief Disable Active mode offload in Host
27871
27872 @param void
27873 @see
27874 @return void
27875*/
27876void
27877WDI_disableCapablityFeature(wpt_uint8 feature_index)
27878{
27879 supportEnabledFeatures[feature_index] = 0;
27880 return;
27881}
27882
27883/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027884 @brief Process Host-FW Capability Exchange Request function
27885
27886 @param pWDICtx: pointer to the WLAN DAL context
27887 pEventData: pointer to the event information structure
27888
27889 @see
27890 @return Result of the function call
27891*/
27892WDI_Status
27893WDI_ProcessFeatureCapsExchangeReq
27894(
27895 WDI_ControlBlockType* pWDICtx,
27896 WDI_EventInfoType* pEventData
27897)
27898{
27899 wpt_uint8* pSendBuffer = NULL;
27900 wpt_uint16 usDataOffset = 0;
27901 wpt_uint16 usSendSize = 0;
27902 wpt_uint16 usLen = 0;
27903
27904 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27905
27906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027907 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027908
27909 /*-------------------------------------------------------------------------
27910 Sanity check
27911 -------------------------------------------------------------------------*/
27912 /* Call back function is NULL since not required for cap exchange req */
27913 if (( NULL == pEventData ) ||
27914 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
27915 {
27916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027917 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027918 WDI_ASSERT(0);
27919 return WDI_STATUS_E_FAILURE;
27920 }
27921
27922 /*-----------------------------------------------------------------------
27923 Get message buffer
27924 -----------------------------------------------------------------------*/
27925 usLen = sizeof(tWlanFeatCaps);
27926
27927 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27928 WDI_FEATURE_CAPS_EXCHANGE_REQ,
27929 usLen,
27930 &pSendBuffer, &usDataOffset, &usSendSize))||
27931 ( usSendSize < (usDataOffset + usLen )))
27932 {
27933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027934 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027935 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
27936 WDI_ASSERT(0);
27937 return WDI_STATUS_E_FAILURE;
27938 }
27939
27940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027941 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027942 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
27943 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
27944 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
27945 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
27946 );
27947
27948 /* Copy host caps after the offset in the send buffer */
27949 wpalMemoryCopy( pSendBuffer+usDataOffset,
27950 (tWlanFeatCaps *)pEventData->pEventData,
27951 usLen);
27952
27953 /*-------------------------------------------------------------------------
27954 Send Start Request to HAL
27955 -------------------------------------------------------------------------*/
27956 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27957 (WDI_StartRspCb)pEventData->pCBfnc,
27958 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
27959
27960}/*WDI_ProcessFeatureCapsExchangeReq*/
27961
27962/**
27963 @brief Process Host-FW Capability Exchange Response function
27964
27965 @param pWDICtx: pointer to the WLAN DAL context
27966 pEventData: pointer to the event information structure
27967
27968 @see
27969 @return Result of the function call
27970*/
27971WDI_Status
27972WDI_ProcessFeatureCapsExchangeRsp
27973(
27974 WDI_ControlBlockType* pWDICtx,
27975 WDI_EventInfoType* pEventData
27976)
27977{
27978 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
27979 wpt_int32 fCapsStructSize;
27980 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27981
27982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027983 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027984
27985 /*-------------------------------------------------------------------------
27986 Sanity check
27987 -------------------------------------------------------------------------*/
27988 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27989 ( NULL == pEventData->pEventData ))
27990 {
27991 /* It will go here when riva is old (doesn't understand this msg) and host is new */
27992 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027993 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027994 WDI_ASSERT(0);
27995 return WDI_STATUS_E_FAILURE;
27996 }
27997
27998 /* Allocate memory separately for global variable carrying FW caps */
27999 fCapsStructSize = sizeof(tWlanFeatCaps);
28000 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
28001 if ( NULL == gpFwWlanFeatCaps )
28002 {
28003 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028004 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070028005 WDI_ASSERT(0);
28006 return WDI_STATUS_MEM_FAILURE;
28007 }
28008
28009 /*-------------------------------------------------------------------------
28010 Unpack HAL Response Message - the header was already extracted by the
28011 main Response Handling procedure
28012 -------------------------------------------------------------------------*/
28013 /*-------------------------------------------------------------------------
28014 Extract response and send it to UMAC
28015 -------------------------------------------------------------------------*/
28016
28017 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
28018 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028020 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028021 gpFwWlanFeatCaps->featCaps[0],
28022 gpFwWlanFeatCaps->featCaps[1],
28023 gpFwWlanFeatCaps->featCaps[2],
28024 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028025 );
28026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
28027 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070028028 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
28029
28030 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
28031 if (wdiFeatureCapsExchangeCb != NULL)
28032 wdiFeatureCapsExchangeCb(NULL, NULL);
28033
28034 return WDI_STATUS_SUCCESS;
28035}
28036
Mohit Khanna4a70d262012-09-11 16:30:12 -070028037#ifdef WLAN_FEATURE_11AC
28038WDI_Status
28039WDI_ProcessUpdateVHTOpModeRsp
28040(
28041 WDI_ControlBlockType* pWDICtx,
28042 WDI_EventInfoType* pEventData
28043)
28044{
28045 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28046 WDI_Status wdiStatus;
28047 eHalStatus halStatus;
28048
28049 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28050
28051 /*-------------------------------------------------------------------------
28052 Sanity check
28053 -------------------------------------------------------------------------*/
28054 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28055 ( NULL == pEventData->pEventData))
28056 {
28057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028058 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028059 WDI_ASSERT(0);
28060 return WDI_STATUS_E_FAILURE;
28061 }
28062 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
28063
28064 /*-------------------------------------------------------------------------
28065 Extract response and send it to UMAC
28066 -------------------------------------------------------------------------*/
28067 halStatus = *((eHalStatus*)pEventData->pEventData);
28068 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28069
28070 /*Notify UMAC*/
28071 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
28072
28073 return WDI_STATUS_SUCCESS;
28074}
28075#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070028076/**
28077 @brief WDI_getHostWlanFeatCaps
28078 WDI API that returns whether the feature passed to it as enum value in
28079 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
28080 variable storing host capability bitmap to find this. This can be used by
28081 other moduels to decide certain things like call different APIs based on
28082 whether a particular feature is supported.
28083
28084 @param
28085
28086 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
28087
28088 @see
28089 @return
28090 0 - if the feature is NOT supported in host
28091 any non-zero value - if the feature is SUPPORTED in host.
28092*/
28093wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
28094{
28095 wpt_uint8 featSupported = 0;
28096 if (gpHostWlanFeatCaps != NULL)
28097 {
28098 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
28099 }
28100 else
28101 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028103 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028104 }
28105 return featSupported;
28106}
28107
28108/**
28109 @brief WDI_getFwWlanFeatCaps
28110 WDI API that returns whether the feature passed to it as enum value in
28111 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
28112 variable storing host capability bitmap to find this. This can be used by
28113 other moduels to decide certain things like call different APIs based on
28114 whether a particular feature is supported.
28115
28116 @param
28117
28118 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
28119 in wlan_hal_msg.h.
28120
28121 @see
28122 @return
28123 0 - if the feature is NOT supported in FW
28124 any non-zero value - if the feature is SUPPORTED in FW.
28125*/
28126wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
28127{
28128 wpt_uint8 featSupported = 0;
28129 if (gpFwWlanFeatCaps != NULL)
28130 {
28131 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
28132 }
28133 else
28134 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028136 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028137 }
28138 return featSupported;
28139}
Mohit Khanna4a70d262012-09-11 16:30:12 -070028140
28141#ifdef WLAN_FEATURE_11AC
28142WDI_Status
28143WDI_ProcessUpdateVHTOpModeReq
28144(
28145 WDI_ControlBlockType* pWDICtx,
28146 WDI_EventInfoType* pEventData
28147)
28148{
28149 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
28150 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28151 wpt_uint8* pSendBuffer = NULL;
28152 wpt_uint16 usDataOffset = 0;
28153 wpt_uint16 usSendSize = 0;
28154
28155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28156
28157 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028158 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028159
28160 /*-------------------------------------------------------------------------
28161 Sanity check
28162 -------------------------------------------------------------------------*/
28163 if (( NULL == pEventData ) ||
28164 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
28165 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
28166 {
28167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028168 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028169 WDI_ASSERT(0);
28170 return WDI_STATUS_E_FAILURE;
28171 }
28172
28173 /*-----------------------------------------------------------------------
28174 Get message buffer
28175 -----------------------------------------------------------------------*/
28176 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
28177 sizeof(WDI_UpdateVHTOpMode),
28178 &pSendBuffer, &usDataOffset, &usSendSize))||
28179 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
28180 {
28181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28182 "Unable to get send buffer in update vht opMode req");
28183 WDI_ASSERT(0);
28184 return WDI_STATUS_E_FAILURE;
28185 }
28186
28187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028188 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028189
28190 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
28191 sizeof(WDI_UpdateVHTOpMode));
28192
28193 /*-------------------------------------------------------------------------
28194 Send Start Request to HAL
28195 -------------------------------------------------------------------------*/
28196 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28197 wdiVHTOpModeCb,
28198 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
28199
28200}
28201
28202WDI_Status
28203WDI_UpdateVHTOpModeReq
28204(
28205 WDI_UpdateVHTOpMode *pData,
28206 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
28207 void* pUserData
28208)
28209{
28210 WDI_EventInfoType wdiEventData;
28211
28212 /*------------------------------------------------------------------------
28213 Sanity Check
28214 ------------------------------------------------------------------------*/
28215 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28216 {
28217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28218 "WDI API call before module is initialized - Fail request");
28219
28220 return WDI_STATUS_E_NOT_ALLOWED;
28221 }
28222
28223 /*------------------------------------------------------------------------
28224 Fill in Event data and post to the Main FSM
28225 ------------------------------------------------------------------------*/
28226 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
28227 wdiEventData.pEventData = pData;
28228 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
28229 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
28230 wdiEventData.pUserData = pUserData;
28231
28232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028233 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028234
28235 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28236
28237}
28238#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028239
28240/**
28241 @brief WDI_TransportChannelDebug -
28242 Display DXE Channel debugging information
28243 User may request to display DXE channel snapshot
28244 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028245
Jeff Johnsonb88db982012-12-10 13:34:59 -080028246 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028247 @param enableStallDetect : Enable stall detect feature
28248 This feature will take effect to data performance
28249 Not integrate till fully verification
28250 @see
28251 @return none
28252*/
28253void WDI_TransportChannelDebug
28254(
28255 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070028256 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028257)
28258{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070028259 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028260 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070028261}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028262/**
28263 @brief WDI_SsrTimerCB
28264 Callback function for SSR timer, if this is called then the graceful
28265 shutdown for Riva did not happen.
28266
28267 @param pUserData : user data to timer
28268
28269 @see
28270 @return none
28271*/
28272void
28273WDI_SsrTimerCB
28274(
28275 void *pUserData
28276)
28277{
28278 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
28279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28280
28281 if (NULL == pWDICtx )
28282 {
28283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028284 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028285 WDI_ASSERT(0);
28286 return;
28287 }
28288 wpalRivaSubystemRestart();
28289
28290 return;
28291
28292}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070028293
28294/**
28295 @brief WDI_SetEnableSSR -
28296 This API is called to enable/disable SSR on WDI timeout.
28297
28298 @param enableSSR : enable/disable SSR
28299
28300 @see
28301 @return none
28302*/
28303void WDI_SetEnableSSR(wpt_boolean enableSSR)
28304{
28305 gWDICb.bEnableSSR = enableSSR;
28306}
Leo Chang9056f462013-08-01 19:21:11 -070028307
28308
28309#ifdef FEATURE_WLAN_LPHB
28310/**
Leo Changd9df8aa2013-09-26 13:32:26 -070028311 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070028312 This function will be invoked when FW detects low power
28313 heart beat failure
28314
28315 @param pWDICtx : wdi context
28316 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070028317 @see
28318 @return Result of the function call
28319*/
28320WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070028321WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070028322(
28323 WDI_ControlBlockType* pWDICtx,
28324 WDI_EventInfoType* pEventData
28325)
28326{
28327 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070028328 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070028329 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28330
28331 /*-------------------------------------------------------------------------
28332 Sanity check
28333 -------------------------------------------------------------------------*/
28334 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28335 (NULL == pEventData->pEventData))
28336 {
28337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28338 "%s: Invalid parameters", __func__);
28339 WDI_ASSERT(0);
28340 return WDI_STATUS_E_FAILURE;
28341 }
28342
28343 /*-------------------------------------------------------------------------
28344 Extract indication and send it to UMAC
28345 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070028346 wpalMemoryCopy(&lphbIndicationParam,
28347 pEventData->pEventData,
28348 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070028349
Leo Changd9df8aa2013-09-26 13:32:26 -070028350 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070028351 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070028352 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070028353 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070028354 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070028355 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070028356 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070028357 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070028358 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070028359 /*Notify UMAC*/
28360 if (pWDICtx->wdiLowLevelIndCB)
28361 {
28362 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
28363 }
28364
28365 return WDI_STATUS_SUCCESS;
28366}
28367
28368/**
28369 @brief WDI_ProcessLphbCfgRsp -
28370 LPHB configuration response from FW
28371
28372 @param pWDICtx : wdi context
28373 pEventData : indication data
28374
28375 @see
28376 @return Result of the function call
28377*/
28378WDI_Status WDI_ProcessLphbCfgRsp
28379(
28380 WDI_ControlBlockType* pWDICtx,
28381 WDI_EventInfoType* pEventData
28382)
28383{
28384 WDI_Status wdiStatus;
28385 eHalStatus halStatus;
28386 WDI_LphbCfgCb wdiLphbCfgCb;
28387 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28388
28389 /*-------------------------------------------------------------------------
28390 Sanity check
28391 -------------------------------------------------------------------------*/
28392 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28393 (NULL == pEventData->pEventData))
28394 {
28395 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28396 "%s: Invalid parameters", __func__);
28397 WDI_ASSERT(0);
28398 return WDI_STATUS_E_FAILURE;
28399 }
28400
28401 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
28402
28403 /*-------------------------------------------------------------------------
28404 Extract response and send it to UMAC
28405 -------------------------------------------------------------------------*/
28406 halStatus = *((eHalStatus*)pEventData->pEventData);
28407 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28408
28409 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28410 "LPHB Cfg Rsp Return status %d", wdiStatus);
28411 /*Notify UMAC*/
28412 if (NULL != wdiLphbCfgCb)
28413 {
28414 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
28415 }
28416
28417 return WDI_STATUS_SUCCESS;
28418}
28419
28420/**
28421 @brief WDI_ProcessLPHBConfReq -
28422 LPHB configuration request to FW
28423
28424 @param pWDICtx : wdi context
28425 pEventData : indication data
28426
28427 @see
28428 @return none
28429*/
28430WDI_Status WDI_ProcessLPHBConfReq
28431(
28432 WDI_ControlBlockType* pWDICtx,
28433 WDI_EventInfoType* pEventData
28434)
28435{
28436 WDI_LPHBReq *pLphbReqParams;
28437 WDI_Status wdiStatus;
28438 wpt_uint8* pSendBuffer = NULL;
28439 wpt_uint16 usDataOffset = 0;
28440 wpt_uint16 usSendSize = 0;
28441 tHalLowPowerHeartBeatReq *halLphbReqRarams;
28442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28443
28444 /*-------------------------------------------------------------------------
28445 Sanity check
28446 -------------------------------------------------------------------------*/
28447 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
28448 {
28449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28450 "%s: Invalid parameters in Suspend ind",__func__);
28451 WDI_ASSERT(0);
28452 return WDI_STATUS_E_FAILURE;
28453 }
28454
28455 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
28456
28457 /*-----------------------------------------------------------------------
28458 Get message buffer
28459 -----------------------------------------------------------------------*/
28460 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
28461 WDI_LPHB_CFG_REQ,
28462 sizeof(tHalLowPowerHeartBeatReqMsg),
28463 &pSendBuffer, &usDataOffset, &usSendSize))||
28464 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
28465 {
28466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28467 "Unable to get send buffer in LPHB Ind ");
28468 WDI_ASSERT(0);
28469 return WDI_STATUS_E_FAILURE;
28470 }
28471
28472 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
28473 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
28474
28475 halLphbReqRarams->lowPowerHeartBeatCmdType =
28476 (tANI_U16)(++pLphbReqParams->cmd);
28477 switch ((tANI_U16)pLphbReqParams->cmd)
28478 {
28479 case WDI_LPHB_SET_EN_PARAMS_INDID:
28480 halLphbReqRarams->sessionIdx =
28481 pLphbReqParams->params.lphbEnableReq.session;
28482 halLphbReqRarams->options.control.heartBeatEnable =
28483 pLphbReqParams->params.lphbEnableReq.enable;
28484 halLphbReqRarams->options.control.heartBeatType =
28485 pLphbReqParams->params.lphbEnableReq.item;
28486 break;
28487
28488 case WDI_LPHB_SET_TCP_PARAMS_INDID:
28489 halLphbReqRarams->sessionIdx =
28490 pLphbReqParams->params.lphbTcpParamReq.session;
28491 halLphbReqRarams->options.tcpParams.timeOutSec =
28492 pLphbReqParams->params.lphbTcpParamReq.timeout;
28493 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
28494 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
28495 sizeof(v_U32_t));
28496 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
28497 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
28498 sizeof(v_U32_t));
28499
28500 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
28501 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
28502 WDI_MAC_ADDR_LEN);
28503
28504 halLphbReqRarams->options.tcpParams.hostPort =
28505 pLphbReqParams->params.lphbTcpParamReq.src_port;
28506 halLphbReqRarams->options.tcpParams.destPort =
28507 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070028508 halLphbReqRarams->options.tcpParams.timePeriodSec =
28509 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
28510 halLphbReqRarams->options.tcpParams.tcpSn =
28511 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070028512 break;
28513
28514 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
28515 halLphbReqRarams->sessionIdx =
28516 pLphbReqParams->params.lphbTcpFilterReq.session;
28517 halLphbReqRarams->options.tcpUdpFilter.offset =
28518 pLphbReqParams->params.lphbTcpFilterReq.offset;
28519 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28520 pLphbReqParams->params.lphbTcpFilterReq.length;
28521 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28522 pLphbReqParams->params.lphbTcpFilterReq.filter,
28523 WDI_LPHB_FILTER_LEN);
28524 break;
28525
28526 case WDI_LPHB_SET_UDP_PARAMS_INDID:
28527 halLphbReqRarams->sessionIdx =
28528 pLphbReqParams->params.lphbUdpParamReq.session;
28529 halLphbReqRarams->options.udpParams.timeOutSec =
28530 pLphbReqParams->params.lphbUdpParamReq.timeout;
28531 halLphbReqRarams->options.udpParams.timePeriodSec =
28532 pLphbReqParams->params.lphbUdpParamReq.interval;
28533 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
28534 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
28535 sizeof(v_U32_t));
28536 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
28537 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
28538 sizeof(v_U32_t));
28539
28540 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
28541 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
28542 WDI_MAC_ADDR_LEN);
28543
28544 halLphbReqRarams->options.udpParams.hostPort =
28545 pLphbReqParams->params.lphbUdpParamReq.src_port;
28546 halLphbReqRarams->options.udpParams.destPort =
28547 pLphbReqParams->params.lphbUdpParamReq.dst_port;
28548 break;
28549
28550 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
28551 halLphbReqRarams->sessionIdx =
28552 pLphbReqParams->params.lphbUdpFilterReq.session;
28553 halLphbReqRarams->options.tcpUdpFilter.offset =
28554 pLphbReqParams->params.lphbUdpFilterReq.offset;
28555 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28556 pLphbReqParams->params.lphbUdpFilterReq.length;
28557 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28558 pLphbReqParams->params.lphbUdpFilterReq.filter,
28559 WDI_LPHB_FILTER_LEN);
28560 break;
28561
28562 case WDI_LPHB_SET_NETWORK_INFO_INDID:
28563 /* NA */
28564 break;
28565
28566 default:
28567 break;
28568 }
28569
28570 /*-------------------------------------------------------------------------
28571 Send Suspend Request to HAL
28572 -------------------------------------------------------------------------*/
28573 pWDICtx->pfncRspCB = pEventData->pCBfnc;
28574 pWDICtx->pReqStatusUserData = pEventData->pUserData;
28575
28576 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
28577 usSendSize, pWDICtx->pfncRspCB,
28578 pWDICtx->pReqStatusUserData,
28579 WDI_LPHB_CFG_RESP);
28580
28581 return wdiStatus;
28582}
28583
28584/**
28585 @brief WDI_LPHBConfReq -
28586 LPHB configuration request API
28587
28588 @param lphbconfParam : configuration parameter
28589 usrData : client context
28590 lphbCfgCb : callback function pointer
28591
28592 @see
28593 @return Success or fail status code
28594*/
28595WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
28596 void *usrData, WDI_LphbCfgCb lphbCfgCb)
28597{
28598 WDI_EventInfoType wdiEventData;
28599
28600 /*------------------------------------------------------------------------
28601 Sanity Check
28602 ------------------------------------------------------------------------*/
28603 if (eWLAN_PAL_FALSE == gWDIInitialized)
28604 {
28605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28606 "WDI API call before module is initialized - Fail request");
28607
28608 return WDI_STATUS_E_NOT_ALLOWED;
28609 }
28610
28611 /*------------------------------------------------------------------------
28612 Fill in Event data and post to the Main FSM
28613 ------------------------------------------------------------------------*/
28614 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
28615 wdiEventData.pEventData = lphbconfParam;
28616 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
28617 wdiEventData.pCBfnc = lphbCfgCb;
28618 wdiEventData.pUserData = usrData;
28619
28620 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28621}
28622#endif /* FEATURE_WLAN_LPHB */
28623
Ravi Joshid2ca7c42013-07-23 08:37:49 -070028624/**
28625 @brief WDI_ProcessIbssPeerInactivityInd
28626 Process peer inactivity indication coming from HAL
28627
28628 @param pWDICtx: pointer to the WLAN DAL context
28629 pEventData: pointer to the event information structure
28630 @see
28631 @return Result of the function call
28632*/
28633WDI_Status
28634WDI_ProcessIbssPeerInactivityInd
28635(
28636 WDI_ControlBlockType* pWDICtx,
28637 WDI_EventInfoType* pEventData
28638)
28639{
28640 WDI_LowLevelIndType wdiInd;
28641 tIbssPeerInactivityIndMsg halIbssIndMsg;
28642
28643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28644
28645 /*-------------------------------------------------------------------------
28646 Sanity check
28647 -------------------------------------------------------------------------*/
28648 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28649 ( NULL == pEventData->pEventData ))
28650 {
28651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28652 "%s: Invalid parameters", __func__);
28653 WDI_ASSERT( 0 );
28654 return WDI_STATUS_E_FAILURE;
28655 }
28656
28657 /*-------------------------------------------------------------------------
28658 Extract indication and send it to UMAC
28659 -------------------------------------------------------------------------*/
28660 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
28661 pEventData->pEventData,
28662 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
28663
28664 /*Fill in the indication parameters*/
28665 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
28666
28667 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
28668 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
28669
28670 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
28671 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
28672
28673 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
28674 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
28675 sizeof(tSirMacAddr));
28676
28677 /*Notify UMAC*/
28678 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28679
28680 return WDI_STATUS_SUCCESS;
28681
28682} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053028683
Chittajit Mitraf5413a42013-10-18 14:20:08 -070028684/**
28685*@brief WDI_RateUpdateInd will be called when the upper MAC
28686 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053028687
Chittajit Mitraf5413a42013-10-18 14:20:08 -070028688
28689 @param wdiRateUpdateIndParams:
28690
28691
28692 @see
28693 @return Result of the function call
28694*/
28695WDI_Status
28696WDI_RateUpdateInd
28697(
28698 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
28699)
28700{
28701 WDI_EventInfoType wdiEventData;
28702 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28703
28704 /*------------------------------------------------------------------------
28705 Sanity Check
28706 ------------------------------------------------------------------------*/
28707 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28708 {
28709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28710 "WDI API call before module is initialized - Fail request");
28711
28712 return WDI_STATUS_E_NOT_ALLOWED;
28713 }
28714
28715 /*------------------------------------------------------------------------
28716 Fill in Event data and post to the Main FSM
28717 ------------------------------------------------------------------------*/
28718 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
28719 wdiEventData.pEventData = wdiRateUpdateIndParams;
28720 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
28721 wdiEventData.pCBfnc = NULL;
28722 wdiEventData.pUserData = NULL;
28723
28724 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28725
28726}/* WDI_RateUpdateInd */
28727
28728/**
28729 @brief Process Rate Update Indication and post it to HAL
28730
28731 @param pWDICtx: pointer to the WLAN DAL context
28732 pEventData: pointer to the event information structure
28733
28734 @see
28735 @return Result of the function call
28736*/
28737WDI_Status
28738WDI_ProcessRateUpdateInd
28739(
28740 WDI_ControlBlockType* pWDICtx,
28741 WDI_EventInfoType* pEventData
28742)
28743{
28744 wpt_uint8* pSendBuffer = NULL;
28745 wpt_uint16 usDataOffset = 0;
28746 wpt_uint16 usSendSize = 0;
28747 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
28748 tHalRateUpdateInd *pRateUpdateInd;
28749 WDI_Status wdiStatus;
28750
28751 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28752
28753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28754 "%s", __func__);
28755
28756 /*-------------------------------------------------------------------------
28757 Sanity check
28758 -------------------------------------------------------------------------*/
28759 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28760 {
28761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28762 "%s: Invalid parameters", __func__);
28763 WDI_ASSERT(0);
28764 return WDI_STATUS_E_FAILURE;
28765 }
28766 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
28767 /*-----------------------------------------------------------------------
28768 Get message buffer
28769 -----------------------------------------------------------------------*/
28770
28771 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28772 WDI_RATE_UPDATE_IND,
28773 sizeof(tHalRateUpdateParams),
28774 &pSendBuffer, &usDataOffset, &usSendSize))||
28775 ( usSendSize < (usDataOffset +
28776 sizeof(tHalRateUpdateParams) )))
28777 {
28778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28779 "Unable to get send buffer in Rate Update Indication %p ",
28780 pEventData);
28781 WDI_ASSERT(0);
28782 return WDI_STATUS_E_FAILURE;
28783 }
28784
28785 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
28786
28787 /* Copy the bssid */
28788 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
28789 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
28790
28791 /* Copy the tx flags */
28792 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
28793 pwdiRateUpdateInd->ucastDataRateTxFlag;
28794 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
28795 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
28796 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
28797 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
28798 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
28799 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
28800
28801 /* Copy the tx rates */
28802 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
28803 pwdiRateUpdateInd->ucastDataRate;
28804 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
28805 pwdiRateUpdateInd->reliableMcastDataRate;
28806 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
28807 pwdiRateUpdateInd->mcastDataRate24GHz;
28808 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
28809 pwdiRateUpdateInd->mcastDataRate5GHz;
28810
28811 /*-------------------------------------------------------------------------
28812 Send Rate Update Indication to HAL
28813 -------------------------------------------------------------------------*/
28814 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
28815 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
28816
28817 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
28818
28819 return (wdiStatus != WDI_STATUS_SUCCESS) ?
28820 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
28821
28822} /* WDI_ProcessRateUpdateInd */
28823
28824#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053028825/**
28826 @brief Process stop batch indication from WDA
28827
28828 @param pWDICtx: pointer to the WLAN DAL context
28829 pEventData: pointer to the event information structure
28830
28831 @see
28832 @return Result of the function call
28833*/
28834WDI_Status
28835WDI_ProcessStopBatchScanInd
28836(
28837 WDI_ControlBlockType* pWDICtx,
28838 WDI_EventInfoType* pEventData
28839)
28840{
28841 wpt_uint8* pSendBuffer = NULL;
28842 wpt_uint16 usDataOffset = 0;
28843 wpt_uint16 usSendSize = 0;
28844 WDI_Status wdiStatus;
28845 tHalBatchScanStopIndParam *pHalInd = NULL;
28846 WDI_StopBatchScanIndType *pWdiInd = NULL;
28847
28848
28849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28850
28851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28852 "%s", __func__);
28853
28854 /*-------------------------------------------------------------------------
28855 Sanity check
28856 -------------------------------------------------------------------------*/
28857
28858 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28859 {
28860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28861 "%s: Invalid parameters", __func__);
28862 WDI_ASSERT(0);
28863 return WDI_STATUS_E_FAILURE;
28864 }
28865 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
28866 /*-----------------------------------------------------------------------
28867 Get message buffer
28868 -----------------------------------------------------------------------*/
28869
28870 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28871 WDI_STOP_BATCH_SCAN_IND,
28872 sizeof(tHalBatchScanStopIndParam),
28873 &pSendBuffer, &usDataOffset, &usSendSize))||
28874 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
28875 {
28876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28877 "Unable to get send buffer in stop batch scan ind %p ",
28878 pEventData);
28879 WDI_ASSERT(0);
28880 return WDI_STATUS_E_FAILURE;
28881 }
28882
28883 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
28884 pHalInd->param = pWdiInd->param;
28885
28886 pWDICtx->pReqStatusUserData = NULL;
28887 pWDICtx->pfncRspCB = NULL;
28888 /*-------------------------------------------------------------------------
28889 Send Stop batch scan indication to HAL
28890 -------------------------------------------------------------------------*/
28891 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28892 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28893}
28894
28895/**
28896 @brief This API is called to trigger batch scan results from FW
28897
28898 @param pWDICtx: pointer to the WLAN DAL context
28899 pEventData: pointer to the event information structure
28900
28901 @see
28902 @return Result of the function call
28903*/
28904WDI_Status
28905WDI_ProcessTriggerBatchScanResultInd
28906(
28907 WDI_ControlBlockType* pWDICtx,
28908 WDI_EventInfoType* pEventData
28909)
28910{
28911 WDI_Status wdiStatus;
28912 wpt_uint8* pSendBuffer = NULL;
28913 wpt_uint16 usDataOffset = 0;
28914 wpt_uint16 usSendSize = 0;
28915 tHalBatchScanTriggerResultParam *pHalInd = NULL;
28916 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
28917
28918
28919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28920
28921 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28922 "%s", __func__);
28923
28924 /*-------------------------------------------------------------------------
28925 Sanity check
28926 -------------------------------------------------------------------------*/
28927
28928 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28929 {
28930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28931 "%s: Invalid parameters", __func__);
28932 WDI_ASSERT(0);
28933 return WDI_STATUS_E_FAILURE;
28934 }
28935 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
28936 /*-----------------------------------------------------------------------
28937 Get message buffer
28938 -----------------------------------------------------------------------*/
28939
28940 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28941 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
28942 sizeof(tHalBatchScanTriggerResultParam),
28943 &pSendBuffer, &usDataOffset, &usSendSize))||
28944 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
28945 {
28946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28947 "Unable to get send buffer in stop batch scan ind %p ",
28948 pEventData);
28949 WDI_ASSERT(0);
28950 return WDI_STATUS_E_FAILURE;
28951 }
28952
28953 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
28954 pHalInd->param = pWdiInd->param;
28955
28956 pWDICtx->pReqStatusUserData = NULL;
28957 pWDICtx->pfncRspCB = NULL;
28958 /*-------------------------------------------------------------------------
28959 Send trigger batch scan result indication to HAL
28960 -------------------------------------------------------------------------*/
28961 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28962 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28963}
28964
28965
28966/**
28967 @brief Process set batch scan response from FW
28968
28969 @param pWDICtx: pointer to the WLAN DAL context
28970 pEventData: pointer to the event information structure
28971
28972 @see
28973 @return Result of the function call
28974*/
28975WDI_Status
28976WDI_ProcessSetBatchScanRsp
28977(
28978 WDI_ControlBlockType* pWDICtx,
28979 WDI_EventInfoType* pEventData
28980)
28981{
28982 WDI_SetBatchScanCb wdiSetBatchScanCb;
28983 WDI_SetBatchScanRspType *pSetBatchScanRsp;
28984
28985 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
28986 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28987
28988 /*sanity check*/
28989 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28990 ( NULL == pEventData->pEventData))
28991 {
28992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28993 "%s: Invalid parameters", __func__);
28994 WDI_ASSERT(0);
28995 return WDI_STATUS_E_FAILURE;
28996 }
28997
28998 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
28999 if ( NULL == wdiSetBatchScanCb)
29000 {
29001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29002 "%s: call back function is NULL", __func__);
29003 WDI_ASSERT(0);
29004 return WDI_STATUS_E_FAILURE;
29005 }
29006
29007 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
29008
29009 if (NULL == pSetBatchScanRsp)
29010 {
29011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029012 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053029013 pWDICtx, pEventData, pEventData->pEventData);
29014 WDI_ASSERT(0);
29015 return WDI_STATUS_E_FAILURE;
29016 }
29017
29018 /*extract response and send it to UMAC*/
29019 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
29020
29021 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
29022
29023 /*Notify UMAC*/
29024 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
29025
29026 wpalMemoryFree(pSetBatchScanRsp);
29027
29028 return WDI_STATUS_SUCCESS;
29029}/*WDI_ProcessSetBatchScanRsp*/
29030
29031/**
29032 @brief Process batch scan result indication from FW
29033
29034 @param pWDICtx: pointer to the WLAN DAL context
29035 pEventData: pointer to the event information structure
29036
29037 @see
29038 @return Result of the function call
29039*/
29040WDI_Status
29041WDI_ProcessBatchScanResultInd
29042(
29043 WDI_ControlBlockType* pWDICtx,
29044 WDI_EventInfoType* pEventData
29045)
29046{
29047 void *pBatchScanResultInd;
29048 WDI_LowLevelIndType wdiInd;
29049 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29050
29051 /*sanity check*/
29052 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29053 ( NULL == pEventData->pEventData))
29054 {
29055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29056 "%s: Invalid parameters", __func__);
29057 WDI_ASSERT(0);
29058 return WDI_STATUS_E_FAILURE;
29059 }
29060
29061 /*extract response and send it to UMAC*/
29062 pBatchScanResultInd = (void *)pEventData->pEventData;
29063
29064 /*Fill in the indication parameters*/
29065 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
29066
29067 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
29068
29069 /*Notify UMAC*/
29070 if (pWDICtx->wdiLowLevelIndCB)
29071 {
29072 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29073 }
29074 else
29075 {
29076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29077 "%s: WDILowLevelIndCb is null", __func__);
29078 WDI_ASSERT(0);
29079 return WDI_STATUS_E_FAILURE;
29080 }
29081
29082 return WDI_STATUS_SUCCESS;
29083} /*End of WDI_ProcessBatchScanResultInd*/
29084
29085/**
29086 @brief WDI_ProcessSetBatchScanReq -
29087 Set batch scan request to FW
29088
29089 @param pWDICtx : wdi context
29090 pEventData : indication data
29091
29092 @see
29093 @return none
29094*/
29095WDI_Status WDI_ProcessSetBatchScanReq
29096(
29097 WDI_ControlBlockType* pWDICtx,
29098 WDI_EventInfoType* pEventData
29099)
29100{
29101 WDI_SetBatchScanReqType *pWdiReq;
29102 WDI_Status wdiStatus;
29103 wpt_uint8* pSendBuffer = NULL;
29104 wpt_uint16 usDataOffset = 0;
29105 wpt_uint16 usSendSize = 0;
29106 tHalBatchScanSetParams *pHalReq;
29107 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29108
29109 /*sanity check*/
29110 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29111 {
29112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29113 "%s: Invalid parameters in set batch scan request", __func__);
29114 WDI_ASSERT(0);
29115 return WDI_STATUS_E_FAILURE;
29116 }
29117
29118
29119 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
29120
29121
29122 /*get message buffer*/
29123 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29124 WDI_SET_BATCH_SCAN_REQ,
29125 sizeof(tHalBatchScanSetParams),
29126 &pSendBuffer, &usDataOffset, &usSendSize))||
29127 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
29128 {
29129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29130 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
29131 WDI_ASSERT(0);
29132 return WDI_STATUS_E_FAILURE;
29133 }
29134
29135 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
29136
29137 pHalReq->rtt = pWdiReq->rtt;
29138 pHalReq->rfBand = pWdiReq->rfBand;
29139 pHalReq->bestNetworks = pWdiReq->bestNetwork;
29140 pHalReq->scanInterval = pWdiReq->scanFrequency;
29141 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
29142
29143 /*send set batch scan request to fw*/
29144 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29145 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29146
29147 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29148 usSendSize, pWDICtx->pfncRspCB,
29149 pWDICtx->pReqStatusUserData,
29150 WDI_SET_BATCH_SCAN_RESP);
29151
29152 return wdiStatus;
29153}
29154
29155/**
29156 @brief WDI_SetBatchScanReq
29157 This API is called to set batch scan request in FW
29158
29159 @param pBatchScanReqParam : pointer to set batch scan re param
29160 usrData : Client context
29161 setBatchScanRspCb : set batch scan resp callback
29162 @see
29163 @return SUCCESS or FAIL
29164*/
29165WDI_Status WDI_SetBatchScanReq
29166(
29167 void *pBatchScanReqParam,
29168 void *usrData,
29169 WDI_SetBatchScanCb setBatchScanRspCb
29170)
29171{
29172 WDI_EventInfoType wdiEventData;
29173
29174 /*sanity check*/
29175 if (eWLAN_PAL_FALSE == gWDIInitialized)
29176 {
29177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29178 "WDI API call before module is initialized - Fail request");
29179
29180 return WDI_STATUS_E_NOT_ALLOWED;
29181 }
29182
29183 /* fill in event data and post to the main FSM */
29184 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
29185 wdiEventData.pEventData = pBatchScanReqParam;
29186 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
29187 wdiEventData.pCBfnc = setBatchScanRspCb;
29188 wdiEventData.pUserData = usrData;
29189
29190 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29191}
29192
29193/**
29194 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
29195
29196 @param None
29197
29198 @see
29199
29200 @return Status of the request
29201*/
29202WDI_Status
29203WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
29204{
29205 WDI_EventInfoType wdiEventData;
29206
29207 /*-------------------------------------------------------------------------
29208 Sanity Check
29209 ------------------------------------------------------------------------*/
29210 if (eWLAN_PAL_FALSE == gWDIInitialized)
29211 {
29212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29213 "WDI API call before module is initialized - Fail request!");
29214
29215 return WDI_STATUS_E_NOT_ALLOWED;
29216 }
29217
29218 /*-------------------------------------------------------------------------
29219 Fill in Event data and post to the Main FSM
29220 ------------------------------------------------------------------------*/
29221 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
29222 wdiEventData.pEventData = pWdiReq;
29223 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
29224 wdiEventData.pCBfnc = NULL;
29225 wdiEventData.pUserData = NULL;
29226
29227 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29228}
29229
29230/**
29231 @brief WDI_TriggerBatchScanResultInd
29232 This API is called to pull batch scan result from FW
29233
29234 @param pWdiReq : pointer to get batch scan ind param
29235 @see
29236 @return SUCCESS or FAIL
29237*/
29238WDI_Status WDI_TriggerBatchScanResultInd
29239(
29240 WDI_TriggerBatchScanResultIndType *pWdiReq
29241)
29242{
29243 WDI_EventInfoType wdiEventData;
29244 /*-------------------------------------------------------------------------
29245 Sanity Check
29246 ------------------------------------------------------------------------*/
29247 if (eWLAN_PAL_FALSE == gWDIInitialized)
29248 {
29249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29250 "WDI API call before module is initialized - Fail request!");
29251
29252 return WDI_STATUS_E_NOT_ALLOWED;
29253 }
29254
29255 /*-------------------------------------------------------------------------
29256 Fill in Event data and post to the Main FSM
29257 ------------------------------------------------------------------------*/
29258 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
29259 wdiEventData.pEventData = pWdiReq;
29260 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
29261 wdiEventData.pCBfnc = NULL;
29262 wdiEventData.pUserData = NULL;
29263
29264 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29265}
Rajeev79dbe4c2013-10-05 11:03:42 +053029266#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080029267
29268#ifdef FEATURE_WLAN_CH_AVOID
29269/**
29270 @brief v -WDI_ProcessChAvoidInd
29271
29272
29273 @param pWDICtx : wdi context
29274 pEventData : indication data
29275 @see
29276 @return Result of the function call
29277*/
29278WDI_Status
29279WDI_ProcessChAvoidInd
29280(
29281 WDI_ControlBlockType* pWDICtx,
29282 WDI_EventInfoType* pEventData
29283)
29284{
29285 WDI_LowLevelIndType wdiInd;
29286 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
29287 wpt_uint16 rangeLoop;
29288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29289
29290 /*-------------------------------------------------------------------------
29291 Sanity check
29292 -------------------------------------------------------------------------*/
29293 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29294 (NULL == pEventData->pEventData))
29295 {
29296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29297 "%s: Invalid parameters", __func__);
29298 WDI_ASSERT(0);
29299 return WDI_STATUS_E_FAILURE;
29300 }
29301
29302 /*-------------------------------------------------------------------------
29303 Extract indication and send it to UMAC
29304 -------------------------------------------------------------------------*/
29305 wpalMemoryCopy(&chAvoidIndicationParam,
29306 pEventData->pEventData,
29307 sizeof(tHalAvoidFreqRangeIndParams));
29308
29309 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
29310 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
29311 chAvoidIndicationParam.avoidCnt;
29312 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
29313 (void *)chAvoidIndicationParam.avoidRange,
29314 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
29315 sizeof(WDI_ChAvoidFreqType));
29316 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29317 "%s: band count %d", __func__,
29318 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
29319 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
29320 {
29321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29322 "%s: srart freq %d, end freq %d", __func__,
29323 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
29324 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
29325 }
29326
29327 /*Notify UMAC*/
29328 if (pWDICtx->wdiLowLevelIndCB)
29329 {
29330 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29331 }
29332
29333 return WDI_STATUS_SUCCESS;
29334}
29335#endif /* FEATURE_WLAN_CH_AVOID */
29336
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053029337/**
29338 @brief Process OBSS Start scan result indication
29339
29340 @param pWDICtx: pointer to the WLAN DAL context
29341 pEventData: pointer to the event information structure
29342
29343 @see
29344 @return Result of the function call
29345*/
29346WDI_Status
29347WDI_ProcessHT40OBSSScanInd
29348(
29349 WDI_ControlBlockType* pWDICtx,
29350 WDI_EventInfoType* pEventData
29351)
29352{
29353 wpt_uint8* pSendBuffer = NULL;
29354 wpt_uint16 usDataOffset = 0;
29355 wpt_uint16 usSendSize = 0;
29356 wpt_uint16 usLen = 0;
29357 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
29358 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
29359 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
29360 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
29361
29362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29363
29364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29365 "%s", __func__);
29366
29367 /*-------------------------------------------------------------------------
29368 Sanity check
29369 -------------------------------------------------------------------------*/
29370 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29371 {
29372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29373 "%s: Invalid parameters", __func__);
29374 WDI_ASSERT(0);
29375 return WDI_STATUS_E_FAILURE;
29376 }
29377 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
29378
29379 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
29380 /*-----------------------------------------------------------------------
29381 Get message buffer
29382 -----------------------------------------------------------------------*/
29383
29384 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29385 WDI_START_HT40_OBSS_SCAN_IND,
29386 sizeof(tHT40ObssScanIndType),
29387 &pSendBuffer, &usDataOffset, &usSendSize))||
29388 ( usSendSize < (usDataOffset + usLen )))
29389 {
29390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29391 "Unable to get send buffer in HT40 OBSS Start req %p ",
29392 pEventData);
29393 WDI_ASSERT(0);
29394 return WDI_STATUS_E_FAILURE;
29395 }
29396 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
29397 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
29398 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
29399 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
29400 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
29401 pHT40ObssScanInd->OBSSScanActiveDwellTime =
29402 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
29403 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
29404 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
29405 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
29406 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
29407 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
29408 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
29409 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
29410 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
29411 pHT40ObssScanInd->OBSSScanActivityThreshold =
29412 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
29413 pHT40ObssScanInd->selfStaIdx =
29414 pwdiHT40OBSSScanInd->selfStaIdx;
29415 pHT40ObssScanInd->bssIdx =
29416 pwdiHT40OBSSScanInd->bssIdx;
29417 pHT40ObssScanInd->fortyMHZIntolerent =
29418 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
29419 pHT40ObssScanInd->channelCount =
29420 pwdiHT40OBSSScanInd->channelCount;
29421
29422 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
29423 WDI_ROAM_SCAN_MAX_CHANNELS);
29424 pHT40ObssScanInd->ieFieldLen =
29425 pwdiHT40OBSSScanInd->ieFieldLen;
29426
29427 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
29428 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
29429 pWDICtx->pReqStatusUserData = NULL;
29430 pWDICtx->pfncRspCB = NULL;
29431
29432 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
29433 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
29434
29435 /*-------------------------------------------------------------------------
29436 Send OBSS Start Indication to HAL
29437 -------------------------------------------------------------------------*/
29438 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29439 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29440
29441} /*End of WDI_ProcessHT40OBSSStartScanInd*/
29442
29443
29444/**
29445 @brief wdi_HT40OBSSScanInd
29446 This API is called to start OBSS scan
29447
29448 @param pWdiReq : pointer to get ind param
29449 @see
29450 @return SUCCESS or FAIL
29451*/
29452WDI_Status WDI_HT40OBSSScanInd
29453(
29454 WDI_HT40ObssScanParamsType *pWdiReq
29455)
29456{
29457 WDI_EventInfoType wdiEventData;
29458
29459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29460 "%s", __func__);
29461 /*-------------------------------------------------------------------------
29462 Sanity Check
29463 ------------------------------------------------------------------------*/
29464 if (eWLAN_PAL_FALSE == gWDIInitialized)
29465 {
29466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29467 "WDI API call before module is initialized - Fail request!");
29468
29469 return WDI_STATUS_E_NOT_ALLOWED;
29470 }
29471
29472 /*-------------------------------------------------------------------------
29473 Fill in Event data and post to the Main FSM
29474 ------------------------------------------------------------------------*/
29475 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
29476 wdiEventData.pEventData = pWdiReq;
29477 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
29478 wdiEventData.pCBfnc = NULL;
29479 wdiEventData.pUserData = NULL;
29480
29481
29482 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29483}
29484
29485/**
29486 @brief Process OBSS Stop scan result
29487
29488 @param pWDICtx: pointer to the WLAN DAL context
29489 pEventData: pointer to the event information structure
29490
29491 @see
29492 @return Result of the function call
29493*/
29494WDI_Status
29495WDI_ProcessHT40OBSSStopScanInd
29496(
29497 WDI_ControlBlockType* pWDICtx,
29498 WDI_EventInfoType* pEventData
29499)
29500{
29501 wpt_uint8* pSendBuffer = NULL;
29502 wpt_uint16 usDataOffset = 0;
29503 wpt_uint16 usSendSize = 0;
29504 wpt_uint16 usLen = 0;
29505 wpt_uint8 *wdiBssIdx = 0;
29506 tANI_U8 *bssIdx = 0;
29507 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
29508
29509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29510
29511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29512 "%s", __func__);
29513
29514 /*-------------------------------------------------------------------------
29515 Sanity check
29516 -------------------------------------------------------------------------*/
29517 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29518 {
29519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29520 "%s: Invalid parameters", __func__);
29521 WDI_ASSERT(0);
29522 return WDI_STATUS_E_FAILURE;
29523 }
29524 bssIdx = (wpt_uint8*)pEventData->pEventData;
29525 /*-----------------------------------------------------------------------
29526 Get message buffer
29527 -----------------------------------------------------------------------*/
29528
29529 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29530 WDI_STOP_HT40_OBSS_SCAN_IND,
29531 sizeof(tANI_U8),
29532 &pSendBuffer, &usDataOffset, &usSendSize))||
29533 ( usSendSize < (usDataOffset + usLen )))
29534 {
29535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29536 "Unable to get send buffer in HT40 OBSS Start req %p ",
29537 pEventData);
29538 WDI_ASSERT(0);
29539 return WDI_STATUS_E_FAILURE;
29540 }
29541
29542 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
29543 bssIdx = wdiBssIdx;
29544
29545 pWDICtx->pReqStatusUserData = NULL;
29546 pWDICtx->pfncRspCB = NULL;
29547
29548 /*-------------------------------------------------------------------------
29549 Send DHCP Start Indication to HAL
29550 -------------------------------------------------------------------------*/
29551 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29552 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29553} /*End of WDI_ProcessHT40OBSSStopScanInd*/
29554
29555/**
29556 @brief WDI_HT40OBSSStopScanInd
29557 This API is called to start OBSS scan
29558 @param pWdiReq : pointer to get ind param
29559 @see
29560 @return SUCCESS or FAIL
29561*/
29562WDI_Status WDI_HT40OBSSStopScanInd
29563(
29564 wpt_uint8 bssIdx
29565)
29566{
29567 WDI_EventInfoType wdiEventData;
29568
29569 /*-------------------------------------------------------------------------
29570 Sanity Check
29571 ------------------------------------------------------------------------*/
29572 if (eWLAN_PAL_FALSE == gWDIInitialized)
29573 {
29574 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29575 "WDI API call before module is initialized - Fail request!");
29576
29577 return WDI_STATUS_E_NOT_ALLOWED;
29578 }
29579
29580 /*-------------------------------------------------------------------------
29581 Fill in Event data and post to the Main FSM
29582 ------------------------------------------------------------------------*/
29583 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
29584 wdiEventData.pEventData = &bssIdx;
29585 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
29586 wdiEventData.pCBfnc = NULL;
29587 wdiEventData.pUserData = NULL;
29588
29589 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29590}
29591