GFS2: Check for glock already held in gfs2_getxattr
[deliverable/linux.git] / drivers / staging / csr / csr_wifi_sme_lib.h
1 /*****************************************************************************
2
3 (c) Cambridge Silicon Radio Limited 2012
4 All rights reserved and confidential information of CSR
5
6 Refer to LICENSE.txt included with this source for details
7 on the license terms.
8
9 *****************************************************************************/
10
11 /* Note: this is an auto-generated file. */
12
13 #ifndef CSR_WIFI_SME_LIB_H__
14 #define CSR_WIFI_SME_LIB_H__
15
16 #include "csr_sched.h"
17 #include "csr_macro.h"
18 #include "csr_msg_transport.h"
19
20 #include "csr_wifi_lib.h"
21
22 #include "csr_wifi_sme_prim.h"
23 #include "csr_wifi_sme_task.h"
24
25
26 #ifndef CSR_WIFI_SME_LIB_DESTINATION_QUEUE
27 # ifdef CSR_WIFI_NME_ENABLE
28 # include "csr_wifi_nme_task.h"
29 # define CSR_WIFI_SME_LIB_DESTINATION_QUEUE CSR_WIFI_NME_IFACEQUEUE
30 # else
31 # define CSR_WIFI_SME_LIB_DESTINATION_QUEUE CSR_WIFI_SME_IFACEQUEUE
32 # endif
33 #endif
34
35 /*----------------------------------------------------------------------------*
36 * CsrWifiSmeFreeUpstreamMessageContents
37 *
38 * DESCRIPTION
39 * Free the allocated memory in a CSR_WIFI_SME upstream message. Does not
40 * free the message itself, and can only be used for upstream messages.
41 *
42 * PARAMETERS
43 * Deallocates the resources in a CSR_WIFI_SME upstream message
44 *----------------------------------------------------------------------------*/
45 void CsrWifiSmeFreeUpstreamMessageContents(u16 eventClass, void *message);
46
47 /*----------------------------------------------------------------------------*
48 * CsrWifiSmeFreeDownstreamMessageContents
49 *
50 * DESCRIPTION
51 * Free the allocated memory in a CSR_WIFI_SME downstream message. Does not
52 * free the message itself, and can only be used for downstream messages.
53 *
54 * PARAMETERS
55 * Deallocates the resources in a CSR_WIFI_SME downstream message
56 *----------------------------------------------------------------------------*/
57 void CsrWifiSmeFreeDownstreamMessageContents(u16 eventClass, void *message);
58
59 /*----------------------------------------------------------------------------*
60 * Enum to string functions
61 *----------------------------------------------------------------------------*/
62 const char* CsrWifiSme80211NetworkTypeToString(CsrWifiSme80211NetworkType value);
63 const char* CsrWifiSme80211PrivacyModeToString(CsrWifiSme80211PrivacyMode value);
64 const char* CsrWifiSme80211dTrustLevelToString(CsrWifiSme80211dTrustLevel value);
65 const char* CsrWifiSmeAmpStatusToString(CsrWifiSmeAmpStatus value);
66 const char* CsrWifiSmeAuthModeToString(CsrWifiSmeAuthMode value);
67 const char* CsrWifiSmeBasicUsabilityToString(CsrWifiSmeBasicUsability value);
68 const char* CsrWifiSmeBssTypeToString(CsrWifiSmeBssType value);
69 const char* CsrWifiSmeCoexSchemeToString(CsrWifiSmeCoexScheme value);
70 const char* CsrWifiSmeControlIndicationToString(CsrWifiSmeControlIndication value);
71 const char* CsrWifiSmeCtsProtectionTypeToString(CsrWifiSmeCtsProtectionType value);
72 const char* CsrWifiSmeD3AutoScanModeToString(CsrWifiSmeD3AutoScanMode value);
73 const char* CsrWifiSmeEncryptionToString(CsrWifiSmeEncryption value);
74 const char* CsrWifiSmeFirmwareDriverInterfaceToString(CsrWifiSmeFirmwareDriverInterface value);
75 const char* CsrWifiSmeHostPowerModeToString(CsrWifiSmeHostPowerMode value);
76 const char* CsrWifiSmeIEEE80211ReasonToString(CsrWifiSmeIEEE80211Reason value);
77 const char* CsrWifiSmeIEEE80211ResultToString(CsrWifiSmeIEEE80211Result value);
78 const char* CsrWifiSmeIndicationsToString(CsrWifiSmeIndications value);
79 const char* CsrWifiSmeKeyTypeToString(CsrWifiSmeKeyType value);
80 const char* CsrWifiSmeListActionToString(CsrWifiSmeListAction value);
81 const char* CsrWifiSmeMediaStatusToString(CsrWifiSmeMediaStatus value);
82 const char* CsrWifiSmeP2pCapabilityToString(CsrWifiSmeP2pCapability value);
83 const char* CsrWifiSmeP2pGroupCapabilityToString(CsrWifiSmeP2pGroupCapability value);
84 const char* CsrWifiSmeP2pNoaConfigMethodToString(CsrWifiSmeP2pNoaConfigMethod value);
85 const char* CsrWifiSmeP2pRoleToString(CsrWifiSmeP2pRole value);
86 const char* CsrWifiSmeP2pStatusToString(CsrWifiSmeP2pStatus value);
87 const char* CsrWifiSmePacketFilterModeToString(CsrWifiSmePacketFilterMode value);
88 const char* CsrWifiSmePowerSaveLevelToString(CsrWifiSmePowerSaveLevel value);
89 const char* CsrWifiSmePreambleTypeToString(CsrWifiSmePreambleType value);
90 const char* CsrWifiSmeRadioIFToString(CsrWifiSmeRadioIF value);
91 const char* CsrWifiSmeRegulatoryDomainToString(CsrWifiSmeRegulatoryDomain value);
92 const char* CsrWifiSmeRoamReasonToString(CsrWifiSmeRoamReason value);
93 const char* CsrWifiSmeScanTypeToString(CsrWifiSmeScanType value);
94 const char* CsrWifiSmeTrafficTypeToString(CsrWifiSmeTrafficType value);
95 const char* CsrWifiSmeTspecCtrlToString(CsrWifiSmeTspecCtrl value);
96 const char* CsrWifiSmeTspecResultCodeToString(CsrWifiSmeTspecResultCode value);
97 const char* CsrWifiSmeWepAuthModeToString(CsrWifiSmeWepAuthMode value);
98 const char* CsrWifiSmeWepCredentialTypeToString(CsrWifiSmeWepCredentialType value);
99 const char* CsrWifiSmeWmmModeToString(CsrWifiSmeWmmMode value);
100 const char* CsrWifiSmeWmmQosInfoToString(CsrWifiSmeWmmQosInfo value);
101 const char* CsrWifiSmeWpsConfigTypeToString(CsrWifiSmeWpsConfigType value);
102 const char* CsrWifiSmeWpsDeviceCategoryToString(CsrWifiSmeWpsDeviceCategory value);
103 const char* CsrWifiSmeWpsDeviceSubCategoryToString(CsrWifiSmeWpsDeviceSubCategory value);
104 const char* CsrWifiSmeWpsDpidToString(CsrWifiSmeWpsDpid value);
105 const char* CsrWifiSmeWpsRegistrationToString(CsrWifiSmeWpsRegistration value);
106
107
108 /*----------------------------------------------------------------------------*
109 * CsrPrim Type toString function.
110 * Converts a message type to the String name of the Message
111 *----------------------------------------------------------------------------*/
112 const char* CsrWifiSmePrimTypeToString(CsrPrim msgType);
113
114 /*----------------------------------------------------------------------------*
115 * Lookup arrays for PrimType name Strings
116 *----------------------------------------------------------------------------*/
117 extern const char *CsrWifiSmeUpstreamPrimNames[CSR_WIFI_SME_PRIM_UPSTREAM_COUNT];
118 extern const char *CsrWifiSmeDownstreamPrimNames[CSR_WIFI_SME_PRIM_DOWNSTREAM_COUNT];
119
120 /*******************************************************************************
121
122 NAME
123 CsrWifiSmeActivateReqSend
124
125 DESCRIPTION
126 The WMA sends this primitive to activate the SME.
127 The WMA must activate the SME before it can send any other primitive.
128
129 PARAMETERS
130 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
131
132 *******************************************************************************/
133 #define CsrWifiSmeActivateReqCreate(msg__, dst__, src__) \
134 msg__ = kmalloc(sizeof(CsrWifiSmeActivateReq), GFP_KERNEL); \
135 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_ACTIVATE_REQ, dst__, src__);
136
137 #define CsrWifiSmeActivateReqSendTo(dst__, src__) \
138 { \
139 CsrWifiSmeActivateReq *msg__; \
140 CsrWifiSmeActivateReqCreate(msg__, dst__, src__); \
141 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
142 }
143
144 #define CsrWifiSmeActivateReqSend(src__) \
145 CsrWifiSmeActivateReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__)
146
147 /*******************************************************************************
148
149 NAME
150 CsrWifiSmeActivateCfmSend
151
152 DESCRIPTION
153 The SME sends this primitive when the activation is complete.
154
155 PARAMETERS
156 queue - Destination Task Queue
157 status - Reports the result of the request
158
159 *******************************************************************************/
160 #define CsrWifiSmeActivateCfmCreate(msg__, dst__, src__, status__) \
161 msg__ = kmalloc(sizeof(CsrWifiSmeActivateCfm), GFP_KERNEL); \
162 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_ACTIVATE_CFM, dst__, src__); \
163 msg__->status = (status__);
164
165 #define CsrWifiSmeActivateCfmSendTo(dst__, src__, status__) \
166 { \
167 CsrWifiSmeActivateCfm *msg__; \
168 CsrWifiSmeActivateCfmCreate(msg__, dst__, src__, status__); \
169 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
170 }
171
172 #define CsrWifiSmeActivateCfmSend(dst__, status__) \
173 CsrWifiSmeActivateCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__)
174
175 /*******************************************************************************
176
177 NAME
178 CsrWifiSmeAdhocConfigGetReqSend
179
180 DESCRIPTION
181 This primitive gets the value of the adHocConfig parameter.
182
183 PARAMETERS
184 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
185
186 *******************************************************************************/
187 #define CsrWifiSmeAdhocConfigGetReqCreate(msg__, dst__, src__) \
188 msg__ = kmalloc(sizeof(CsrWifiSmeAdhocConfigGetReq), GFP_KERNEL); \
189 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_ADHOC_CONFIG_GET_REQ, dst__, src__);
190
191 #define CsrWifiSmeAdhocConfigGetReqSendTo(dst__, src__) \
192 { \
193 CsrWifiSmeAdhocConfigGetReq *msg__; \
194 CsrWifiSmeAdhocConfigGetReqCreate(msg__, dst__, src__); \
195 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
196 }
197
198 #define CsrWifiSmeAdhocConfigGetReqSend(src__) \
199 CsrWifiSmeAdhocConfigGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__)
200
201 /*******************************************************************************
202
203 NAME
204 CsrWifiSmeAdhocConfigGetCfmSend
205
206 DESCRIPTION
207 This primitive reports the result of the request.
208
209 PARAMETERS
210 queue - Destination Task Queue
211 status - Reports the result of the request
212 adHocConfig - Contains the values used when starting an Ad-hoc (IBSS)
213 connection.
214
215 *******************************************************************************/
216 #define CsrWifiSmeAdhocConfigGetCfmCreate(msg__, dst__, src__, status__, adHocConfig__) \
217 msg__ = kmalloc(sizeof(CsrWifiSmeAdhocConfigGetCfm), GFP_KERNEL); \
218 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_ADHOC_CONFIG_GET_CFM, dst__, src__); \
219 msg__->status = (status__); \
220 msg__->adHocConfig = (adHocConfig__);
221
222 #define CsrWifiSmeAdhocConfigGetCfmSendTo(dst__, src__, status__, adHocConfig__) \
223 { \
224 CsrWifiSmeAdhocConfigGetCfm *msg__; \
225 CsrWifiSmeAdhocConfigGetCfmCreate(msg__, dst__, src__, status__, adHocConfig__); \
226 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
227 }
228
229 #define CsrWifiSmeAdhocConfigGetCfmSend(dst__, status__, adHocConfig__) \
230 CsrWifiSmeAdhocConfigGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__, adHocConfig__)
231
232 /*******************************************************************************
233
234 NAME
235 CsrWifiSmeAdhocConfigSetReqSend
236
237 DESCRIPTION
238 This primitive sets the value of the adHocConfig parameter.
239
240 PARAMETERS
241 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
242 adHocConfig - Sets the values to use when starting an ad hoc network.
243
244 *******************************************************************************/
245 #define CsrWifiSmeAdhocConfigSetReqCreate(msg__, dst__, src__, adHocConfig__) \
246 msg__ = kmalloc(sizeof(CsrWifiSmeAdhocConfigSetReq), GFP_KERNEL); \
247 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_ADHOC_CONFIG_SET_REQ, dst__, src__); \
248 msg__->adHocConfig = (adHocConfig__);
249
250 #define CsrWifiSmeAdhocConfigSetReqSendTo(dst__, src__, adHocConfig__) \
251 { \
252 CsrWifiSmeAdhocConfigSetReq *msg__; \
253 CsrWifiSmeAdhocConfigSetReqCreate(msg__, dst__, src__, adHocConfig__); \
254 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
255 }
256
257 #define CsrWifiSmeAdhocConfigSetReqSend(src__, adHocConfig__) \
258 CsrWifiSmeAdhocConfigSetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, adHocConfig__)
259
260 /*******************************************************************************
261
262 NAME
263 CsrWifiSmeAdhocConfigSetCfmSend
264
265 DESCRIPTION
266 This primitive reports the result of the request.
267
268 PARAMETERS
269 queue - Destination Task Queue
270 status - Reports the result of the request
271
272 *******************************************************************************/
273 #define CsrWifiSmeAdhocConfigSetCfmCreate(msg__, dst__, src__, status__) \
274 msg__ = kmalloc(sizeof(CsrWifiSmeAdhocConfigSetCfm), GFP_KERNEL); \
275 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_ADHOC_CONFIG_SET_CFM, dst__, src__); \
276 msg__->status = (status__);
277
278 #define CsrWifiSmeAdhocConfigSetCfmSendTo(dst__, src__, status__) \
279 { \
280 CsrWifiSmeAdhocConfigSetCfm *msg__; \
281 CsrWifiSmeAdhocConfigSetCfmCreate(msg__, dst__, src__, status__); \
282 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
283 }
284
285 #define CsrWifiSmeAdhocConfigSetCfmSend(dst__, status__) \
286 CsrWifiSmeAdhocConfigSetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__)
287
288 /*******************************************************************************
289
290 NAME
291 CsrWifiSmeAmpStatusChangeIndSend
292
293 DESCRIPTION
294 Indication of change to AMP activity.
295
296 PARAMETERS
297 queue - Destination Task Queue
298 interfaceTag - Interface on which the AMP activity changed.
299 ampStatus - The new status of AMP activity.Range: {AMP_ACTIVE,
300 AMP_INACTIVE}.
301
302 *******************************************************************************/
303 #define CsrWifiSmeAmpStatusChangeIndCreate(msg__, dst__, src__, interfaceTag__, ampStatus__) \
304 msg__ = kmalloc(sizeof(CsrWifiSmeAmpStatusChangeInd), GFP_KERNEL); \
305 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_AMP_STATUS_CHANGE_IND, dst__, src__); \
306 msg__->interfaceTag = (interfaceTag__); \
307 msg__->ampStatus = (ampStatus__);
308
309 #define CsrWifiSmeAmpStatusChangeIndSendTo(dst__, src__, interfaceTag__, ampStatus__) \
310 { \
311 CsrWifiSmeAmpStatusChangeInd *msg__; \
312 CsrWifiSmeAmpStatusChangeIndCreate(msg__, dst__, src__, interfaceTag__, ampStatus__); \
313 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
314 }
315
316 #define CsrWifiSmeAmpStatusChangeIndSend(dst__, interfaceTag__, ampStatus__) \
317 CsrWifiSmeAmpStatusChangeIndSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, ampStatus__)
318
319 /*******************************************************************************
320
321 NAME
322 CsrWifiSmeAssociationCompleteIndSend
323
324 DESCRIPTION
325 The SME will send this primitive to all the tasks that have registered to
326 receive it whenever it completes an attempt to associate with an AP. If
327 the association was successful, status will be set to
328 CSR_WIFI_SME_STATUS_SUCCESS, otherwise status and deauthReason shall be
329 set to appropriate error codes.
330
331 PARAMETERS
332 queue - Destination Task Queue
333 interfaceTag - Interface Identifier; unique identifier of an interface
334 status - Reports the result of the association procedure
335 connectionInfo - This parameter is relevant only if result is
336 CSR_WIFI_SME_STATUS_SUCCESS:
337 it points to the connection information for the new network
338 deauthReason - This parameter is relevant only if result is not
339 CSR_WIFI_SME_STATUS_SUCCESS:
340 if the AP deauthorised the station, it gives the reason of
341 the deauthorization
342
343 *******************************************************************************/
344 #define CsrWifiSmeAssociationCompleteIndCreate(msg__, dst__, src__, interfaceTag__, status__, connectionInfo__, deauthReason__) \
345 msg__ = kmalloc(sizeof(CsrWifiSmeAssociationCompleteInd), GFP_KERNEL); \
346 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_ASSOCIATION_COMPLETE_IND, dst__, src__); \
347 msg__->interfaceTag = (interfaceTag__); \
348 msg__->status = (status__); \
349 msg__->connectionInfo = (connectionInfo__); \
350 msg__->deauthReason = (deauthReason__);
351
352 #define CsrWifiSmeAssociationCompleteIndSendTo(dst__, src__, interfaceTag__, status__, connectionInfo__, deauthReason__) \
353 { \
354 CsrWifiSmeAssociationCompleteInd *msg__; \
355 CsrWifiSmeAssociationCompleteIndCreate(msg__, dst__, src__, interfaceTag__, status__, connectionInfo__, deauthReason__); \
356 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
357 }
358
359 #define CsrWifiSmeAssociationCompleteIndSend(dst__, interfaceTag__, status__, connectionInfo__, deauthReason__) \
360 CsrWifiSmeAssociationCompleteIndSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, status__, connectionInfo__, deauthReason__)
361
362 /*******************************************************************************
363
364 NAME
365 CsrWifiSmeAssociationStartIndSend
366
367 DESCRIPTION
368 The SME will send this primitive to all the tasks that have registered to
369 receive it whenever it begins an attempt to associate with an AP.
370
371 PARAMETERS
372 queue - Destination Task Queue
373 interfaceTag - Interface Identifier; unique identifier of an interface
374 address - BSSID of the associating network
375 ssid - Service Set identifier of the associating network
376
377 *******************************************************************************/
378 #define CsrWifiSmeAssociationStartIndCreate(msg__, dst__, src__, interfaceTag__, address__, ssid__) \
379 msg__ = kmalloc(sizeof(CsrWifiSmeAssociationStartInd), GFP_KERNEL); \
380 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_ASSOCIATION_START_IND, dst__, src__); \
381 msg__->interfaceTag = (interfaceTag__); \
382 msg__->address = (address__); \
383 msg__->ssid = (ssid__);
384
385 #define CsrWifiSmeAssociationStartIndSendTo(dst__, src__, interfaceTag__, address__, ssid__) \
386 { \
387 CsrWifiSmeAssociationStartInd *msg__; \
388 CsrWifiSmeAssociationStartIndCreate(msg__, dst__, src__, interfaceTag__, address__, ssid__); \
389 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
390 }
391
392 #define CsrWifiSmeAssociationStartIndSend(dst__, interfaceTag__, address__, ssid__) \
393 CsrWifiSmeAssociationStartIndSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, address__, ssid__)
394
395 /*******************************************************************************
396
397 NAME
398 CsrWifiSmeBlacklistReqSend
399
400 DESCRIPTION
401 The wireless manager application should call this primitive to notify the
402 driver of any networks that should not be connected to. The interface
403 allows the wireless manager application to query, add, remove, and flush
404 the BSSIDs that the driver may not connect or roam to.
405 When this primitive adds to the black list the BSSID to which the SME is
406 currently connected, the SME will try to roam, if applicable, to another
407 BSSID in the same ESS; if the roaming procedure fails, the SME will
408 disconnect.
409
410 PARAMETERS
411 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
412 interfaceTag - Interface Identifier; unique identifier of an interface
413 action - The value of the CsrWifiSmeListAction parameter instructs
414 the driver to modify or provide the list of blacklisted
415 networks.
416 setAddressCount - Number of BSSIDs sent with this primitive
417 setAddresses - Pointer to the list of BBSIDs sent with the primitive, set
418 to NULL if none is sent.
419
420 *******************************************************************************/
421 #define CsrWifiSmeBlacklistReqCreate(msg__, dst__, src__, interfaceTag__, action__, setAddressCount__, setAddresses__) \
422 msg__ = kmalloc(sizeof(CsrWifiSmeBlacklistReq), GFP_KERNEL); \
423 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_BLACKLIST_REQ, dst__, src__); \
424 msg__->interfaceTag = (interfaceTag__); \
425 msg__->action = (action__); \
426 msg__->setAddressCount = (setAddressCount__); \
427 msg__->setAddresses = (setAddresses__);
428
429 #define CsrWifiSmeBlacklistReqSendTo(dst__, src__, interfaceTag__, action__, setAddressCount__, setAddresses__) \
430 { \
431 CsrWifiSmeBlacklistReq *msg__; \
432 CsrWifiSmeBlacklistReqCreate(msg__, dst__, src__, interfaceTag__, action__, setAddressCount__, setAddresses__); \
433 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
434 }
435
436 #define CsrWifiSmeBlacklistReqSend(src__, interfaceTag__, action__, setAddressCount__, setAddresses__) \
437 CsrWifiSmeBlacklistReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, interfaceTag__, action__, setAddressCount__, setAddresses__)
438
439 /*******************************************************************************
440
441 NAME
442 CsrWifiSmeBlacklistCfmSend
443
444 DESCRIPTION
445 The SME will call this primitive when the action on the blacklist has
446 completed. For a GET action, this primitive also reports the list of
447 BBSIDs in the blacklist.
448
449 PARAMETERS
450 queue - Destination Task Queue
451 interfaceTag - Interface Identifier; unique identifier of an interface
452 status - Reports the result of the request
453 action - Action in the request
454 getAddressCount - This parameter is only relevant if action is
455 CSR_WIFI_SME_LIST_ACTION_GET:
456 number of BSSIDs sent with this primitive
457 getAddresses - Pointer to the list of BBSIDs sent with the primitive, set
458 to NULL if none is sent.
459
460 *******************************************************************************/
461 #define CsrWifiSmeBlacklistCfmCreate(msg__, dst__, src__, interfaceTag__, status__, action__, getAddressCount__, getAddresses__) \
462 msg__ = kmalloc(sizeof(CsrWifiSmeBlacklistCfm), GFP_KERNEL); \
463 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_BLACKLIST_CFM, dst__, src__); \
464 msg__->interfaceTag = (interfaceTag__); \
465 msg__->status = (status__); \
466 msg__->action = (action__); \
467 msg__->getAddressCount = (getAddressCount__); \
468 msg__->getAddresses = (getAddresses__);
469
470 #define CsrWifiSmeBlacklistCfmSendTo(dst__, src__, interfaceTag__, status__, action__, getAddressCount__, getAddresses__) \
471 { \
472 CsrWifiSmeBlacklistCfm *msg__; \
473 CsrWifiSmeBlacklistCfmCreate(msg__, dst__, src__, interfaceTag__, status__, action__, getAddressCount__, getAddresses__); \
474 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
475 }
476
477 #define CsrWifiSmeBlacklistCfmSend(dst__, interfaceTag__, status__, action__, getAddressCount__, getAddresses__) \
478 CsrWifiSmeBlacklistCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, status__, action__, getAddressCount__, getAddresses__)
479
480 /*******************************************************************************
481
482 NAME
483 CsrWifiSmeCalibrationDataGetReqSend
484
485 DESCRIPTION
486 This primitive retrieves the Wi-Fi radio calibration data.
487
488 PARAMETERS
489 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
490
491 *******************************************************************************/
492 #define CsrWifiSmeCalibrationDataGetReqCreate(msg__, dst__, src__) \
493 msg__ = kmalloc(sizeof(CsrWifiSmeCalibrationDataGetReq), GFP_KERNEL); \
494 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_CALIBRATION_DATA_GET_REQ, dst__, src__);
495
496 #define CsrWifiSmeCalibrationDataGetReqSendTo(dst__, src__) \
497 { \
498 CsrWifiSmeCalibrationDataGetReq *msg__; \
499 CsrWifiSmeCalibrationDataGetReqCreate(msg__, dst__, src__); \
500 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
501 }
502
503 #define CsrWifiSmeCalibrationDataGetReqSend(src__) \
504 CsrWifiSmeCalibrationDataGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__)
505
506 /*******************************************************************************
507
508 NAME
509 CsrWifiSmeCalibrationDataGetCfmSend
510
511 DESCRIPTION
512 This primitive reports the result of the request.
513
514 PARAMETERS
515 queue - Destination Task Queue
516 status - Reports the result of the request
517 calibrationDataLength - Number of bytes in the buffer pointed by
518 calibrationData
519 calibrationData - Pointer to a buffer of length calibrationDataLength
520 containing the calibration data
521
522 *******************************************************************************/
523 #define CsrWifiSmeCalibrationDataGetCfmCreate(msg__, dst__, src__, status__, calibrationDataLength__, calibrationData__) \
524 msg__ = kmalloc(sizeof(CsrWifiSmeCalibrationDataGetCfm), GFP_KERNEL); \
525 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_CALIBRATION_DATA_GET_CFM, dst__, src__); \
526 msg__->status = (status__); \
527 msg__->calibrationDataLength = (calibrationDataLength__); \
528 msg__->calibrationData = (calibrationData__);
529
530 #define CsrWifiSmeCalibrationDataGetCfmSendTo(dst__, src__, status__, calibrationDataLength__, calibrationData__) \
531 { \
532 CsrWifiSmeCalibrationDataGetCfm *msg__; \
533 CsrWifiSmeCalibrationDataGetCfmCreate(msg__, dst__, src__, status__, calibrationDataLength__, calibrationData__); \
534 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
535 }
536
537 #define CsrWifiSmeCalibrationDataGetCfmSend(dst__, status__, calibrationDataLength__, calibrationData__) \
538 CsrWifiSmeCalibrationDataGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__, calibrationDataLength__, calibrationData__)
539
540 /*******************************************************************************
541
542 NAME
543 CsrWifiSmeCalibrationDataSetReqSend
544
545 DESCRIPTION
546 This primitive sets the Wi-Fi radio calibration data.
547 The usage of the primitive with proper calibration data will avoid
548 time-consuming configuration after power-up.
549
550 PARAMETERS
551 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
552 calibrationDataLength - Number of bytes in the buffer pointed by
553 calibrationData
554 calibrationData - Pointer to a buffer of length calibrationDataLength
555 containing the calibration data
556
557 *******************************************************************************/
558 #define CsrWifiSmeCalibrationDataSetReqCreate(msg__, dst__, src__, calibrationDataLength__, calibrationData__) \
559 msg__ = kmalloc(sizeof(CsrWifiSmeCalibrationDataSetReq), GFP_KERNEL); \
560 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_CALIBRATION_DATA_SET_REQ, dst__, src__); \
561 msg__->calibrationDataLength = (calibrationDataLength__); \
562 msg__->calibrationData = (calibrationData__);
563
564 #define CsrWifiSmeCalibrationDataSetReqSendTo(dst__, src__, calibrationDataLength__, calibrationData__) \
565 { \
566 CsrWifiSmeCalibrationDataSetReq *msg__; \
567 CsrWifiSmeCalibrationDataSetReqCreate(msg__, dst__, src__, calibrationDataLength__, calibrationData__); \
568 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
569 }
570
571 #define CsrWifiSmeCalibrationDataSetReqSend(src__, calibrationDataLength__, calibrationData__) \
572 CsrWifiSmeCalibrationDataSetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, calibrationDataLength__, calibrationData__)
573
574 /*******************************************************************************
575
576 NAME
577 CsrWifiSmeCalibrationDataSetCfmSend
578
579 DESCRIPTION
580 This primitive reports the result of the request.
581
582 PARAMETERS
583 queue - Destination Task Queue
584 status - Reports the result of the request
585
586 *******************************************************************************/
587 #define CsrWifiSmeCalibrationDataSetCfmCreate(msg__, dst__, src__, status__) \
588 msg__ = kmalloc(sizeof(CsrWifiSmeCalibrationDataSetCfm), GFP_KERNEL); \
589 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_CALIBRATION_DATA_SET_CFM, dst__, src__); \
590 msg__->status = (status__);
591
592 #define CsrWifiSmeCalibrationDataSetCfmSendTo(dst__, src__, status__) \
593 { \
594 CsrWifiSmeCalibrationDataSetCfm *msg__; \
595 CsrWifiSmeCalibrationDataSetCfmCreate(msg__, dst__, src__, status__); \
596 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
597 }
598
599 #define CsrWifiSmeCalibrationDataSetCfmSend(dst__, status__) \
600 CsrWifiSmeCalibrationDataSetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__)
601
602 /*******************************************************************************
603
604 NAME
605 CsrWifiSmeCcxConfigGetReqSend
606
607 DESCRIPTION
608 This primitive gets the value of the CcxConfig parameter.
609 CURRENTLY NOT SUPPORTED.
610
611 PARAMETERS
612 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
613 interfaceTag - Interface Identifier; unique identifier of an interface
614
615 *******************************************************************************/
616 #define CsrWifiSmeCcxConfigGetReqCreate(msg__, dst__, src__, interfaceTag__) \
617 msg__ = kmalloc(sizeof(CsrWifiSmeCcxConfigGetReq), GFP_KERNEL); \
618 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_CCX_CONFIG_GET_REQ, dst__, src__); \
619 msg__->interfaceTag = (interfaceTag__);
620
621 #define CsrWifiSmeCcxConfigGetReqSendTo(dst__, src__, interfaceTag__) \
622 { \
623 CsrWifiSmeCcxConfigGetReq *msg__; \
624 CsrWifiSmeCcxConfigGetReqCreate(msg__, dst__, src__, interfaceTag__); \
625 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
626 }
627
628 #define CsrWifiSmeCcxConfigGetReqSend(src__, interfaceTag__) \
629 CsrWifiSmeCcxConfigGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, interfaceTag__)
630
631 /*******************************************************************************
632
633 NAME
634 CsrWifiSmeCcxConfigGetCfmSend
635
636 DESCRIPTION
637 This primitive reports the result of the request.
638
639 PARAMETERS
640 queue - Destination Task Queue
641 interfaceTag - Interface Identifier; unique identifier of an interface
642 status - Reports the result of the request
643 ccxConfig - Currently not supported
644
645 *******************************************************************************/
646 #define CsrWifiSmeCcxConfigGetCfmCreate(msg__, dst__, src__, interfaceTag__, status__, ccxConfig__) \
647 msg__ = kmalloc(sizeof(CsrWifiSmeCcxConfigGetCfm), GFP_KERNEL); \
648 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_CCX_CONFIG_GET_CFM, dst__, src__); \
649 msg__->interfaceTag = (interfaceTag__); \
650 msg__->status = (status__); \
651 msg__->ccxConfig = (ccxConfig__);
652
653 #define CsrWifiSmeCcxConfigGetCfmSendTo(dst__, src__, interfaceTag__, status__, ccxConfig__) \
654 { \
655 CsrWifiSmeCcxConfigGetCfm *msg__; \
656 CsrWifiSmeCcxConfigGetCfmCreate(msg__, dst__, src__, interfaceTag__, status__, ccxConfig__); \
657 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
658 }
659
660 #define CsrWifiSmeCcxConfigGetCfmSend(dst__, interfaceTag__, status__, ccxConfig__) \
661 CsrWifiSmeCcxConfigGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, status__, ccxConfig__)
662
663 /*******************************************************************************
664
665 NAME
666 CsrWifiSmeCcxConfigSetReqSend
667
668 DESCRIPTION
669 This primitive sets the value of the CcxConfig parameter.
670 CURRENTLY NOT SUPPORTED.
671
672 PARAMETERS
673 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
674 interfaceTag - Interface Identifier; unique identifier of an interface
675 ccxConfig - Currently not supported
676
677 *******************************************************************************/
678 #define CsrWifiSmeCcxConfigSetReqCreate(msg__, dst__, src__, interfaceTag__, ccxConfig__) \
679 msg__ = kmalloc(sizeof(CsrWifiSmeCcxConfigSetReq), GFP_KERNEL); \
680 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_CCX_CONFIG_SET_REQ, dst__, src__); \
681 msg__->interfaceTag = (interfaceTag__); \
682 msg__->ccxConfig = (ccxConfig__);
683
684 #define CsrWifiSmeCcxConfigSetReqSendTo(dst__, src__, interfaceTag__, ccxConfig__) \
685 { \
686 CsrWifiSmeCcxConfigSetReq *msg__; \
687 CsrWifiSmeCcxConfigSetReqCreate(msg__, dst__, src__, interfaceTag__, ccxConfig__); \
688 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
689 }
690
691 #define CsrWifiSmeCcxConfigSetReqSend(src__, interfaceTag__, ccxConfig__) \
692 CsrWifiSmeCcxConfigSetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, interfaceTag__, ccxConfig__)
693
694 /*******************************************************************************
695
696 NAME
697 CsrWifiSmeCcxConfigSetCfmSend
698
699 DESCRIPTION
700 This primitive reports the result of the request.
701
702 PARAMETERS
703 queue - Destination Task Queue
704 interfaceTag - Interface Identifier; unique identifier of an interface
705 status - Reports the result of the request
706
707 *******************************************************************************/
708 #define CsrWifiSmeCcxConfigSetCfmCreate(msg__, dst__, src__, interfaceTag__, status__) \
709 msg__ = kmalloc(sizeof(CsrWifiSmeCcxConfigSetCfm), GFP_KERNEL); \
710 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_CCX_CONFIG_SET_CFM, dst__, src__); \
711 msg__->interfaceTag = (interfaceTag__); \
712 msg__->status = (status__);
713
714 #define CsrWifiSmeCcxConfigSetCfmSendTo(dst__, src__, interfaceTag__, status__) \
715 { \
716 CsrWifiSmeCcxConfigSetCfm *msg__; \
717 CsrWifiSmeCcxConfigSetCfmCreate(msg__, dst__, src__, interfaceTag__, status__); \
718 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
719 }
720
721 #define CsrWifiSmeCcxConfigSetCfmSend(dst__, interfaceTag__, status__) \
722 CsrWifiSmeCcxConfigSetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, status__)
723
724 /*******************************************************************************
725
726 NAME
727 CsrWifiSmeCloakedSsidsGetReqSend
728
729 DESCRIPTION
730 This primitive gets the value of the CloakedSsids parameter.
731
732 PARAMETERS
733 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
734
735 *******************************************************************************/
736 #define CsrWifiSmeCloakedSsidsGetReqCreate(msg__, dst__, src__) \
737 msg__ = kmalloc(sizeof(CsrWifiSmeCloakedSsidsGetReq), GFP_KERNEL); \
738 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_CLOAKED_SSIDS_GET_REQ, dst__, src__);
739
740 #define CsrWifiSmeCloakedSsidsGetReqSendTo(dst__, src__) \
741 { \
742 CsrWifiSmeCloakedSsidsGetReq *msg__; \
743 CsrWifiSmeCloakedSsidsGetReqCreate(msg__, dst__, src__); \
744 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
745 }
746
747 #define CsrWifiSmeCloakedSsidsGetReqSend(src__) \
748 CsrWifiSmeCloakedSsidsGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__)
749
750 /*******************************************************************************
751
752 NAME
753 CsrWifiSmeCloakedSsidsGetCfmSend
754
755 DESCRIPTION
756 This primitive reports the result of the request.
757
758 PARAMETERS
759 queue - Destination Task Queue
760 status - Reports the result of the request
761 cloakedSsids - Reports list of cloaked SSIDs that are explicitly scanned for
762 by the driver
763
764 *******************************************************************************/
765 #define CsrWifiSmeCloakedSsidsGetCfmCreate(msg__, dst__, src__, status__, cloakedSsids__) \
766 msg__ = kmalloc(sizeof(CsrWifiSmeCloakedSsidsGetCfm), GFP_KERNEL); \
767 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_CLOAKED_SSIDS_GET_CFM, dst__, src__); \
768 msg__->status = (status__); \
769 msg__->cloakedSsids = (cloakedSsids__);
770
771 #define CsrWifiSmeCloakedSsidsGetCfmSendTo(dst__, src__, status__, cloakedSsids__) \
772 { \
773 CsrWifiSmeCloakedSsidsGetCfm *msg__; \
774 CsrWifiSmeCloakedSsidsGetCfmCreate(msg__, dst__, src__, status__, cloakedSsids__); \
775 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
776 }
777
778 #define CsrWifiSmeCloakedSsidsGetCfmSend(dst__, status__, cloakedSsids__) \
779 CsrWifiSmeCloakedSsidsGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__, cloakedSsids__)
780
781 /*******************************************************************************
782
783 NAME
784 CsrWifiSmeCloakedSsidsSetReqSend
785
786 DESCRIPTION
787 This primitive sets the list of cloaked SSIDs for which the WMA possesses
788 profiles.
789 When the driver detects a cloaked AP, the SME will explicitly scan for it
790 using the list of cloaked SSIDs provided it, and, if the scan succeeds,
791 it will report the AP to the WMA either via CSR_WIFI_SME_SCAN_RESULT_IND
792 (if registered) or via CSR_WIFI_SCAN_RESULT_GET_CFM.
793
794 PARAMETERS
795 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
796 cloakedSsids - Sets the list of cloaked SSIDs
797
798 *******************************************************************************/
799 #define CsrWifiSmeCloakedSsidsSetReqCreate(msg__, dst__, src__, cloakedSsids__) \
800 msg__ = kmalloc(sizeof(CsrWifiSmeCloakedSsidsSetReq), GFP_KERNEL); \
801 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_CLOAKED_SSIDS_SET_REQ, dst__, src__); \
802 msg__->cloakedSsids = (cloakedSsids__);
803
804 #define CsrWifiSmeCloakedSsidsSetReqSendTo(dst__, src__, cloakedSsids__) \
805 { \
806 CsrWifiSmeCloakedSsidsSetReq *msg__; \
807 CsrWifiSmeCloakedSsidsSetReqCreate(msg__, dst__, src__, cloakedSsids__); \
808 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
809 }
810
811 #define CsrWifiSmeCloakedSsidsSetReqSend(src__, cloakedSsids__) \
812 CsrWifiSmeCloakedSsidsSetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, cloakedSsids__)
813
814 /*******************************************************************************
815
816 NAME
817 CsrWifiSmeCloakedSsidsSetCfmSend
818
819 DESCRIPTION
820 This primitive reports the result of the request.
821
822 PARAMETERS
823 queue - Destination Task Queue
824 status - Reports the result of the request
825
826 *******************************************************************************/
827 #define CsrWifiSmeCloakedSsidsSetCfmCreate(msg__, dst__, src__, status__) \
828 msg__ = kmalloc(sizeof(CsrWifiSmeCloakedSsidsSetCfm), GFP_KERNEL); \
829 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_CLOAKED_SSIDS_SET_CFM, dst__, src__); \
830 msg__->status = (status__);
831
832 #define CsrWifiSmeCloakedSsidsSetCfmSendTo(dst__, src__, status__) \
833 { \
834 CsrWifiSmeCloakedSsidsSetCfm *msg__; \
835 CsrWifiSmeCloakedSsidsSetCfmCreate(msg__, dst__, src__, status__); \
836 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
837 }
838
839 #define CsrWifiSmeCloakedSsidsSetCfmSend(dst__, status__) \
840 CsrWifiSmeCloakedSsidsSetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__)
841
842 /*******************************************************************************
843
844 NAME
845 CsrWifiSmeCoexConfigGetReqSend
846
847 DESCRIPTION
848 This primitive gets the value of the CoexConfig parameter.
849
850 PARAMETERS
851 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
852
853 *******************************************************************************/
854 #define CsrWifiSmeCoexConfigGetReqCreate(msg__, dst__, src__) \
855 msg__ = kmalloc(sizeof(CsrWifiSmeCoexConfigGetReq), GFP_KERNEL); \
856 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_COEX_CONFIG_GET_REQ, dst__, src__);
857
858 #define CsrWifiSmeCoexConfigGetReqSendTo(dst__, src__) \
859 { \
860 CsrWifiSmeCoexConfigGetReq *msg__; \
861 CsrWifiSmeCoexConfigGetReqCreate(msg__, dst__, src__); \
862 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
863 }
864
865 #define CsrWifiSmeCoexConfigGetReqSend(src__) \
866 CsrWifiSmeCoexConfigGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__)
867
868 /*******************************************************************************
869
870 NAME
871 CsrWifiSmeCoexConfigGetCfmSend
872
873 DESCRIPTION
874 This primitive reports the result of the request.
875
876 PARAMETERS
877 queue - Destination Task Queue
878 status - Reports the result of the request
879 coexConfig - Reports the parameters used to configure the coexistence
880 behaviour
881
882 *******************************************************************************/
883 #define CsrWifiSmeCoexConfigGetCfmCreate(msg__, dst__, src__, status__, coexConfig__) \
884 msg__ = kmalloc(sizeof(CsrWifiSmeCoexConfigGetCfm), GFP_KERNEL); \
885 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_COEX_CONFIG_GET_CFM, dst__, src__); \
886 msg__->status = (status__); \
887 msg__->coexConfig = (coexConfig__);
888
889 #define CsrWifiSmeCoexConfigGetCfmSendTo(dst__, src__, status__, coexConfig__) \
890 { \
891 CsrWifiSmeCoexConfigGetCfm *msg__; \
892 CsrWifiSmeCoexConfigGetCfmCreate(msg__, dst__, src__, status__, coexConfig__); \
893 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
894 }
895
896 #define CsrWifiSmeCoexConfigGetCfmSend(dst__, status__, coexConfig__) \
897 CsrWifiSmeCoexConfigGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__, coexConfig__)
898
899 /*******************************************************************************
900
901 NAME
902 CsrWifiSmeCoexConfigSetReqSend
903
904 DESCRIPTION
905 This primitive sets the value of the CoexConfig parameter.
906
907 PARAMETERS
908 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
909 coexConfig - Configures the coexistence behaviour
910
911 *******************************************************************************/
912 #define CsrWifiSmeCoexConfigSetReqCreate(msg__, dst__, src__, coexConfig__) \
913 msg__ = kmalloc(sizeof(CsrWifiSmeCoexConfigSetReq), GFP_KERNEL); \
914 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_COEX_CONFIG_SET_REQ, dst__, src__); \
915 msg__->coexConfig = (coexConfig__);
916
917 #define CsrWifiSmeCoexConfigSetReqSendTo(dst__, src__, coexConfig__) \
918 { \
919 CsrWifiSmeCoexConfigSetReq *msg__; \
920 CsrWifiSmeCoexConfigSetReqCreate(msg__, dst__, src__, coexConfig__); \
921 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
922 }
923
924 #define CsrWifiSmeCoexConfigSetReqSend(src__, coexConfig__) \
925 CsrWifiSmeCoexConfigSetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, coexConfig__)
926
927 /*******************************************************************************
928
929 NAME
930 CsrWifiSmeCoexConfigSetCfmSend
931
932 DESCRIPTION
933 This primitive reports the result of the request.
934
935 PARAMETERS
936 queue - Destination Task Queue
937 status - Reports the result of the request
938
939 *******************************************************************************/
940 #define CsrWifiSmeCoexConfigSetCfmCreate(msg__, dst__, src__, status__) \
941 msg__ = kmalloc(sizeof(CsrWifiSmeCoexConfigSetCfm), GFP_KERNEL); \
942 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_COEX_CONFIG_SET_CFM, dst__, src__); \
943 msg__->status = (status__);
944
945 #define CsrWifiSmeCoexConfigSetCfmSendTo(dst__, src__, status__) \
946 { \
947 CsrWifiSmeCoexConfigSetCfm *msg__; \
948 CsrWifiSmeCoexConfigSetCfmCreate(msg__, dst__, src__, status__); \
949 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
950 }
951
952 #define CsrWifiSmeCoexConfigSetCfmSend(dst__, status__) \
953 CsrWifiSmeCoexConfigSetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__)
954
955 /*******************************************************************************
956
957 NAME
958 CsrWifiSmeCoexInfoGetReqSend
959
960 DESCRIPTION
961 This primitive gets the value of the CoexInfo parameter.
962
963 PARAMETERS
964 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
965
966 *******************************************************************************/
967 #define CsrWifiSmeCoexInfoGetReqCreate(msg__, dst__, src__) \
968 msg__ = kmalloc(sizeof(CsrWifiSmeCoexInfoGetReq), GFP_KERNEL); \
969 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_COEX_INFO_GET_REQ, dst__, src__);
970
971 #define CsrWifiSmeCoexInfoGetReqSendTo(dst__, src__) \
972 { \
973 CsrWifiSmeCoexInfoGetReq *msg__; \
974 CsrWifiSmeCoexInfoGetReqCreate(msg__, dst__, src__); \
975 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
976 }
977
978 #define CsrWifiSmeCoexInfoGetReqSend(src__) \
979 CsrWifiSmeCoexInfoGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__)
980
981 /*******************************************************************************
982
983 NAME
984 CsrWifiSmeCoexInfoGetCfmSend
985
986 DESCRIPTION
987 This primitive reports the result of the request.
988
989 PARAMETERS
990 queue - Destination Task Queue
991 status - Reports the result of the request
992 coexInfo - Reports information and state related to coexistence.
993
994 *******************************************************************************/
995 #define CsrWifiSmeCoexInfoGetCfmCreate(msg__, dst__, src__, status__, coexInfo__) \
996 msg__ = kmalloc(sizeof(CsrWifiSmeCoexInfoGetCfm), GFP_KERNEL); \
997 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_COEX_INFO_GET_CFM, dst__, src__); \
998 msg__->status = (status__); \
999 msg__->coexInfo = (coexInfo__);
1000
1001 #define CsrWifiSmeCoexInfoGetCfmSendTo(dst__, src__, status__, coexInfo__) \
1002 { \
1003 CsrWifiSmeCoexInfoGetCfm *msg__; \
1004 CsrWifiSmeCoexInfoGetCfmCreate(msg__, dst__, src__, status__, coexInfo__); \
1005 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
1006 }
1007
1008 #define CsrWifiSmeCoexInfoGetCfmSend(dst__, status__, coexInfo__) \
1009 CsrWifiSmeCoexInfoGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__, coexInfo__)
1010
1011 /*******************************************************************************
1012
1013 NAME
1014 CsrWifiSmeConnectReqSend
1015
1016 DESCRIPTION
1017 The wireless manager application calls this primitive to start the
1018 process of joining an 802.11 wireless network or to start an ad hoc
1019 network.
1020 The structure pointed by connectionConfig contains parameters describing
1021 the network to join or, in case of an ad hoc network, to host or join.
1022 The SME will select a network, perform the IEEE 802.11 Join, Authenticate
1023 and Associate exchanges.
1024 The SME selects the networks from the current scan list that match both
1025 the SSID and BSSID, however either or both of these may be the wildcard
1026 value. Using this rule, the following operations are possible:
1027 * To connect to a network by name, specify the SSID and set the BSSID to
1028 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF. If there are two or more networks visible,
1029 the SME will select the one with the strongest signal.
1030 * To connect to a specific network, specify the BSSID. The SSID is
1031 optional, but if given it must match the SSID of the network. An empty
1032 SSID may be specified by setting the SSID length to zero. Please note
1033 that if the BSSID is specified (i.e. not equal to 0xFF 0xFF 0xFF 0xFF
1034 0xFF 0xFF), the SME will not attempt to roam if signal conditions become
1035 poor, even if there is an alternative AP with an SSID that matches the
1036 current network SSID.
1037 * To connect to any network matching the other parameters (i.e. security,
1038 etc), set the SSID length to zero and set the BSSID to 0xFF 0xFF 0xFF
1039 0xFF 0xFF 0xFF. In this case, the SME will order all available networks
1040 by their signal strengths and will iterate through this list until it
1041 successfully connects.
1042 NOTE: Specifying the BSSID will restrict the selection to one specific
1043 network. If SSID and BSSID are given, they must both match the network
1044 for it to be selected. To select a network based on the SSID only, the
1045 wireless manager application must set the BSSID to 0xFF 0xFF 0xFF 0xFF
1046 0xFF 0xFF.
1047 The SME will try to connect to each network that matches the provided
1048 parameters, one by one, until it succeeds or has tried unsuccessfully
1049 with all the matching networks.
1050 If there is no network that matches the parameters and the request allows
1051 to host an ad hoc network, the SME will advertise a new ad hoc network
1052 instead.
1053 If the SME cannot connect, it will notify the failure in the confirm.
1054
1055 PARAMETERS
1056 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
1057 interfaceTag - Interface Identifier; unique identifier of an interface
1058 connectionConfig - Describes the candidate network to join or to host.
1059
1060 *******************************************************************************/
1061 #define CsrWifiSmeConnectReqCreate(msg__, dst__, src__, interfaceTag__, connectionConfig__) \
1062 msg__ = kmalloc(sizeof(CsrWifiSmeConnectReq), GFP_KERNEL); \
1063 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_CONNECT_REQ, dst__, src__); \
1064 msg__->interfaceTag = (interfaceTag__); \
1065 msg__->connectionConfig = (connectionConfig__);
1066
1067 #define CsrWifiSmeConnectReqSendTo(dst__, src__, interfaceTag__, connectionConfig__) \
1068 { \
1069 CsrWifiSmeConnectReq *msg__; \
1070 CsrWifiSmeConnectReqCreate(msg__, dst__, src__, interfaceTag__, connectionConfig__); \
1071 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
1072 }
1073
1074 #define CsrWifiSmeConnectReqSend(src__, interfaceTag__, connectionConfig__) \
1075 CsrWifiSmeConnectReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, interfaceTag__, connectionConfig__)
1076
1077 /*******************************************************************************
1078
1079 NAME
1080 CsrWifiSmeConnectCfmSend
1081
1082 DESCRIPTION
1083 The SME calls this primitive when the connection exchange is complete or
1084 all connection attempts fail.
1085
1086 PARAMETERS
1087 queue - Destination Task Queue
1088 interfaceTag - Interface Identifier; unique identifier of an interface
1089 status - Reports the result of the request.
1090 CSR_WIFI_SME_STATUS_NOT_FOUND: all attempts by the SME to
1091 locate the requested AP failed
1092
1093 *******************************************************************************/
1094 #define CsrWifiSmeConnectCfmCreate(msg__, dst__, src__, interfaceTag__, status__) \
1095 msg__ = kmalloc(sizeof(CsrWifiSmeConnectCfm), GFP_KERNEL); \
1096 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_CONNECT_CFM, dst__, src__); \
1097 msg__->interfaceTag = (interfaceTag__); \
1098 msg__->status = (status__);
1099
1100 #define CsrWifiSmeConnectCfmSendTo(dst__, src__, interfaceTag__, status__) \
1101 { \
1102 CsrWifiSmeConnectCfm *msg__; \
1103 CsrWifiSmeConnectCfmCreate(msg__, dst__, src__, interfaceTag__, status__); \
1104 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
1105 }
1106
1107 #define CsrWifiSmeConnectCfmSend(dst__, interfaceTag__, status__) \
1108 CsrWifiSmeConnectCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, status__)
1109
1110 /*******************************************************************************
1111
1112 NAME
1113 CsrWifiSmeConnectionConfigGetReqSend
1114
1115 DESCRIPTION
1116 This primitive gets the value of the ConnectionConfig parameter.
1117
1118 PARAMETERS
1119 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
1120 interfaceTag - Interface Identifier; unique identifier of an interface
1121
1122 *******************************************************************************/
1123 #define CsrWifiSmeConnectionConfigGetReqCreate(msg__, dst__, src__, interfaceTag__) \
1124 msg__ = kmalloc(sizeof(CsrWifiSmeConnectionConfigGetReq), GFP_KERNEL); \
1125 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_CONNECTION_CONFIG_GET_REQ, dst__, src__); \
1126 msg__->interfaceTag = (interfaceTag__);
1127
1128 #define CsrWifiSmeConnectionConfigGetReqSendTo(dst__, src__, interfaceTag__) \
1129 { \
1130 CsrWifiSmeConnectionConfigGetReq *msg__; \
1131 CsrWifiSmeConnectionConfigGetReqCreate(msg__, dst__, src__, interfaceTag__); \
1132 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
1133 }
1134
1135 #define CsrWifiSmeConnectionConfigGetReqSend(src__, interfaceTag__) \
1136 CsrWifiSmeConnectionConfigGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, interfaceTag__)
1137
1138 /*******************************************************************************
1139
1140 NAME
1141 CsrWifiSmeConnectionConfigGetCfmSend
1142
1143 DESCRIPTION
1144 This primitive reports the result of the request.
1145
1146 PARAMETERS
1147 queue - Destination Task Queue
1148 interfaceTag - Interface Identifier; unique identifier of an interface
1149 status - Reports the result of the request
1150 connectionConfig - Parameters used by the SME for selecting a network
1151
1152 *******************************************************************************/
1153 #define CsrWifiSmeConnectionConfigGetCfmCreate(msg__, dst__, src__, interfaceTag__, status__, connectionConfig__) \
1154 msg__ = kmalloc(sizeof(CsrWifiSmeConnectionConfigGetCfm), GFP_KERNEL); \
1155 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_CONNECTION_CONFIG_GET_CFM, dst__, src__); \
1156 msg__->interfaceTag = (interfaceTag__); \
1157 msg__->status = (status__); \
1158 msg__->connectionConfig = (connectionConfig__);
1159
1160 #define CsrWifiSmeConnectionConfigGetCfmSendTo(dst__, src__, interfaceTag__, status__, connectionConfig__) \
1161 { \
1162 CsrWifiSmeConnectionConfigGetCfm *msg__; \
1163 CsrWifiSmeConnectionConfigGetCfmCreate(msg__, dst__, src__, interfaceTag__, status__, connectionConfig__); \
1164 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
1165 }
1166
1167 #define CsrWifiSmeConnectionConfigGetCfmSend(dst__, interfaceTag__, status__, connectionConfig__) \
1168 CsrWifiSmeConnectionConfigGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, status__, connectionConfig__)
1169
1170 /*******************************************************************************
1171
1172 NAME
1173 CsrWifiSmeConnectionInfoGetReqSend
1174
1175 DESCRIPTION
1176 This primitive gets the value of the ConnectionInfo parameter.
1177
1178 PARAMETERS
1179 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
1180 interfaceTag - Interface Identifier; unique identifier of an interface
1181
1182 *******************************************************************************/
1183 #define CsrWifiSmeConnectionInfoGetReqCreate(msg__, dst__, src__, interfaceTag__) \
1184 msg__ = kmalloc(sizeof(CsrWifiSmeConnectionInfoGetReq), GFP_KERNEL); \
1185 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_CONNECTION_INFO_GET_REQ, dst__, src__); \
1186 msg__->interfaceTag = (interfaceTag__);
1187
1188 #define CsrWifiSmeConnectionInfoGetReqSendTo(dst__, src__, interfaceTag__) \
1189 { \
1190 CsrWifiSmeConnectionInfoGetReq *msg__; \
1191 CsrWifiSmeConnectionInfoGetReqCreate(msg__, dst__, src__, interfaceTag__); \
1192 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
1193 }
1194
1195 #define CsrWifiSmeConnectionInfoGetReqSend(src__, interfaceTag__) \
1196 CsrWifiSmeConnectionInfoGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, interfaceTag__)
1197
1198 /*******************************************************************************
1199
1200 NAME
1201 CsrWifiSmeConnectionInfoGetCfmSend
1202
1203 DESCRIPTION
1204 This primitive reports the result of the request.
1205
1206 PARAMETERS
1207 queue - Destination Task Queue
1208 interfaceTag - Interface Identifier; unique identifier of an interface
1209 status - Reports the result of the request
1210 connectionInfo - Information about the current connection
1211
1212 *******************************************************************************/
1213 #define CsrWifiSmeConnectionInfoGetCfmCreate(msg__, dst__, src__, interfaceTag__, status__, connectionInfo__) \
1214 msg__ = kmalloc(sizeof(CsrWifiSmeConnectionInfoGetCfm), GFP_KERNEL); \
1215 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_CONNECTION_INFO_GET_CFM, dst__, src__); \
1216 msg__->interfaceTag = (interfaceTag__); \
1217 msg__->status = (status__); \
1218 msg__->connectionInfo = (connectionInfo__);
1219
1220 #define CsrWifiSmeConnectionInfoGetCfmSendTo(dst__, src__, interfaceTag__, status__, connectionInfo__) \
1221 { \
1222 CsrWifiSmeConnectionInfoGetCfm *msg__; \
1223 CsrWifiSmeConnectionInfoGetCfmCreate(msg__, dst__, src__, interfaceTag__, status__, connectionInfo__); \
1224 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
1225 }
1226
1227 #define CsrWifiSmeConnectionInfoGetCfmSend(dst__, interfaceTag__, status__, connectionInfo__) \
1228 CsrWifiSmeConnectionInfoGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, status__, connectionInfo__)
1229
1230 /*******************************************************************************
1231
1232 NAME
1233 CsrWifiSmeConnectionQualityIndSend
1234
1235 DESCRIPTION
1236 The SME sends this primitive to all the tasks that have registered to
1237 receive it whenever the value of the current connection quality
1238 parameters change by more than a certain configurable amount.
1239 The wireless manager application may configure the trigger thresholds for
1240 this indication using the field in smeConfig parameter of
1241 CSR_WIFI_SME_SME_CONFIG_SET_REQ.
1242 Connection quality messages can be suppressed by setting both thresholds
1243 to zero.
1244
1245 PARAMETERS
1246 queue - Destination Task Queue
1247 interfaceTag - Interface Identifier; unique identifier of an interface
1248 linkQuality - Indicates the quality of the link
1249
1250 *******************************************************************************/
1251 #define CsrWifiSmeConnectionQualityIndCreate(msg__, dst__, src__, interfaceTag__, linkQuality__) \
1252 msg__ = kmalloc(sizeof(CsrWifiSmeConnectionQualityInd), GFP_KERNEL); \
1253 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_CONNECTION_QUALITY_IND, dst__, src__); \
1254 msg__->interfaceTag = (interfaceTag__); \
1255 msg__->linkQuality = (linkQuality__);
1256
1257 #define CsrWifiSmeConnectionQualityIndSendTo(dst__, src__, interfaceTag__, linkQuality__) \
1258 { \
1259 CsrWifiSmeConnectionQualityInd *msg__; \
1260 CsrWifiSmeConnectionQualityIndCreate(msg__, dst__, src__, interfaceTag__, linkQuality__); \
1261 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
1262 }
1263
1264 #define CsrWifiSmeConnectionQualityIndSend(dst__, interfaceTag__, linkQuality__) \
1265 CsrWifiSmeConnectionQualityIndSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, linkQuality__)
1266
1267 /*******************************************************************************
1268
1269 NAME
1270 CsrWifiSmeConnectionStatsGetReqSend
1271
1272 DESCRIPTION
1273 This primitive gets the value of the ConnectionStats parameter.
1274
1275 PARAMETERS
1276 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
1277 interfaceTag - Interface Identifier; unique identifier of an interface
1278
1279 *******************************************************************************/
1280 #define CsrWifiSmeConnectionStatsGetReqCreate(msg__, dst__, src__, interfaceTag__) \
1281 msg__ = kmalloc(sizeof(CsrWifiSmeConnectionStatsGetReq), GFP_KERNEL); \
1282 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_CONNECTION_STATS_GET_REQ, dst__, src__); \
1283 msg__->interfaceTag = (interfaceTag__);
1284
1285 #define CsrWifiSmeConnectionStatsGetReqSendTo(dst__, src__, interfaceTag__) \
1286 { \
1287 CsrWifiSmeConnectionStatsGetReq *msg__; \
1288 CsrWifiSmeConnectionStatsGetReqCreate(msg__, dst__, src__, interfaceTag__); \
1289 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
1290 }
1291
1292 #define CsrWifiSmeConnectionStatsGetReqSend(src__, interfaceTag__) \
1293 CsrWifiSmeConnectionStatsGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, interfaceTag__)
1294
1295 /*******************************************************************************
1296
1297 NAME
1298 CsrWifiSmeConnectionStatsGetCfmSend
1299
1300 DESCRIPTION
1301 This primitive reports the result of the request.
1302
1303 PARAMETERS
1304 queue - Destination Task Queue
1305 interfaceTag - Interface Identifier; unique identifier of an interface
1306 status - Reports the result of the request
1307 connectionStats - Statistics for current connection.
1308
1309 *******************************************************************************/
1310 #define CsrWifiSmeConnectionStatsGetCfmCreate(msg__, dst__, src__, interfaceTag__, status__, connectionStats__) \
1311 msg__ = kmalloc(sizeof(CsrWifiSmeConnectionStatsGetCfm), GFP_KERNEL); \
1312 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_CONNECTION_STATS_GET_CFM, dst__, src__); \
1313 msg__->interfaceTag = (interfaceTag__); \
1314 msg__->status = (status__); \
1315 msg__->connectionStats = (connectionStats__);
1316
1317 #define CsrWifiSmeConnectionStatsGetCfmSendTo(dst__, src__, interfaceTag__, status__, connectionStats__) \
1318 { \
1319 CsrWifiSmeConnectionStatsGetCfm *msg__; \
1320 CsrWifiSmeConnectionStatsGetCfmCreate(msg__, dst__, src__, interfaceTag__, status__, connectionStats__); \
1321 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
1322 }
1323
1324 #define CsrWifiSmeConnectionStatsGetCfmSend(dst__, interfaceTag__, status__, connectionStats__) \
1325 CsrWifiSmeConnectionStatsGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, status__, connectionStats__)
1326
1327 /*******************************************************************************
1328
1329 NAME
1330 CsrWifiSmeCoreDumpIndSend
1331
1332 DESCRIPTION
1333 The SME will send this primitive to all the tasks that have registered to
1334 receive Wi-Fi Chip core dump data.
1335 The core dump data may be fragmented and sent using more than one
1336 indication.
1337 To indicate that all the data has been sent, the last indication contains
1338 a 'length' of 0 and 'data' of NULL.
1339
1340 PARAMETERS
1341 queue - Destination Task Queue
1342 dataLength - Number of bytes in the buffer pointed to by 'data'
1343 data - Pointer to the buffer containing 'dataLength' bytes of core
1344 dump data
1345
1346 *******************************************************************************/
1347 #define CsrWifiSmeCoreDumpIndCreate(msg__, dst__, src__, dataLength__, data__) \
1348 msg__ = kmalloc(sizeof(CsrWifiSmeCoreDumpInd), GFP_KERNEL); \
1349 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_CORE_DUMP_IND, dst__, src__); \
1350 msg__->dataLength = (dataLength__); \
1351 msg__->data = (data__);
1352
1353 #define CsrWifiSmeCoreDumpIndSendTo(dst__, src__, dataLength__, data__) \
1354 { \
1355 CsrWifiSmeCoreDumpInd *msg__; \
1356 CsrWifiSmeCoreDumpIndCreate(msg__, dst__, src__, dataLength__, data__); \
1357 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
1358 }
1359
1360 #define CsrWifiSmeCoreDumpIndSend(dst__, dataLength__, data__) \
1361 CsrWifiSmeCoreDumpIndSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, dataLength__, data__)
1362
1363 /*******************************************************************************
1364
1365 NAME
1366 CsrWifiSmeDeactivateReqSend
1367
1368 DESCRIPTION
1369 The WMA sends this primitive to deactivate the SME.
1370
1371 PARAMETERS
1372 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
1373
1374 *******************************************************************************/
1375 #define CsrWifiSmeDeactivateReqCreate(msg__, dst__, src__) \
1376 msg__ = kmalloc(sizeof(CsrWifiSmeDeactivateReq), GFP_KERNEL); \
1377 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_DEACTIVATE_REQ, dst__, src__);
1378
1379 #define CsrWifiSmeDeactivateReqSendTo(dst__, src__) \
1380 { \
1381 CsrWifiSmeDeactivateReq *msg__; \
1382 CsrWifiSmeDeactivateReqCreate(msg__, dst__, src__); \
1383 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
1384 }
1385
1386 #define CsrWifiSmeDeactivateReqSend(src__) \
1387 CsrWifiSmeDeactivateReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__)
1388
1389 /*******************************************************************************
1390
1391 NAME
1392 CsrWifiSmeDeactivateCfmSend
1393
1394 DESCRIPTION
1395 The SME sends this primitive when the deactivation is complete.
1396 The WMA cannot send any more primitives until it actives the SME again
1397 sending another CSR_WIFI_SME_ACTIVATE_REQ.
1398
1399 PARAMETERS
1400 queue - Destination Task Queue
1401 status - Reports the result of the request
1402
1403 *******************************************************************************/
1404 #define CsrWifiSmeDeactivateCfmCreate(msg__, dst__, src__, status__) \
1405 msg__ = kmalloc(sizeof(CsrWifiSmeDeactivateCfm), GFP_KERNEL); \
1406 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_DEACTIVATE_CFM, dst__, src__); \
1407 msg__->status = (status__);
1408
1409 #define CsrWifiSmeDeactivateCfmSendTo(dst__, src__, status__) \
1410 { \
1411 CsrWifiSmeDeactivateCfm *msg__; \
1412 CsrWifiSmeDeactivateCfmCreate(msg__, dst__, src__, status__); \
1413 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
1414 }
1415
1416 #define CsrWifiSmeDeactivateCfmSend(dst__, status__) \
1417 CsrWifiSmeDeactivateCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__)
1418
1419 /*******************************************************************************
1420
1421 NAME
1422 CsrWifiSmeDisconnectReqSend
1423
1424 DESCRIPTION
1425 The wireless manager application may disconnect from the current network
1426 by calling this primitive
1427
1428 PARAMETERS
1429 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
1430 interfaceTag - Interface Identifier; unique identifier of an interface
1431
1432 *******************************************************************************/
1433 #define CsrWifiSmeDisconnectReqCreate(msg__, dst__, src__, interfaceTag__) \
1434 msg__ = kmalloc(sizeof(CsrWifiSmeDisconnectReq), GFP_KERNEL); \
1435 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_DISCONNECT_REQ, dst__, src__); \
1436 msg__->interfaceTag = (interfaceTag__);
1437
1438 #define CsrWifiSmeDisconnectReqSendTo(dst__, src__, interfaceTag__) \
1439 { \
1440 CsrWifiSmeDisconnectReq *msg__; \
1441 CsrWifiSmeDisconnectReqCreate(msg__, dst__, src__, interfaceTag__); \
1442 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
1443 }
1444
1445 #define CsrWifiSmeDisconnectReqSend(src__, interfaceTag__) \
1446 CsrWifiSmeDisconnectReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, interfaceTag__)
1447
1448 /*******************************************************************************
1449
1450 NAME
1451 CsrWifiSmeDisconnectCfmSend
1452
1453 DESCRIPTION
1454 On reception of CSR_WIFI_SME_DISCONNECT_REQ the SME will perform a
1455 disconnect operation, sending a CsrWifiSmeMediaStatusInd with
1456 CSR_WIFI_SME_MEDIA_STATUS_DISCONNECTED and then call this primitive when
1457 disconnection is complete.
1458
1459 PARAMETERS
1460 queue - Destination Task Queue
1461 interfaceTag - Interface Identifier; unique identifier of an interface
1462 status - Reports the result of the request
1463
1464 *******************************************************************************/
1465 #define CsrWifiSmeDisconnectCfmCreate(msg__, dst__, src__, interfaceTag__, status__) \
1466 msg__ = kmalloc(sizeof(CsrWifiSmeDisconnectCfm), GFP_KERNEL); \
1467 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_DISCONNECT_CFM, dst__, src__); \
1468 msg__->interfaceTag = (interfaceTag__); \
1469 msg__->status = (status__);
1470
1471 #define CsrWifiSmeDisconnectCfmSendTo(dst__, src__, interfaceTag__, status__) \
1472 { \
1473 CsrWifiSmeDisconnectCfm *msg__; \
1474 CsrWifiSmeDisconnectCfmCreate(msg__, dst__, src__, interfaceTag__, status__); \
1475 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
1476 }
1477
1478 #define CsrWifiSmeDisconnectCfmSend(dst__, interfaceTag__, status__) \
1479 CsrWifiSmeDisconnectCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, status__)
1480
1481 /*******************************************************************************
1482
1483 NAME
1484 CsrWifiSmeErrorIndSend
1485
1486 DESCRIPTION
1487 Important error message indicating a error of some importance
1488
1489 PARAMETERS
1490 queue - Destination Task Queue
1491 errorMessage - Contains the error message.
1492
1493 *******************************************************************************/
1494 #define CsrWifiSmeErrorIndCreate(msg__, dst__, src__, errorMessage__) \
1495 msg__ = kmalloc(sizeof(CsrWifiSmeErrorInd), GFP_KERNEL); \
1496 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_ERROR_IND, dst__, src__); \
1497 msg__->errorMessage = (errorMessage__);
1498
1499 #define CsrWifiSmeErrorIndSendTo(dst__, src__, errorMessage__) \
1500 { \
1501 CsrWifiSmeErrorInd *msg__; \
1502 CsrWifiSmeErrorIndCreate(msg__, dst__, src__, errorMessage__); \
1503 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
1504 }
1505
1506 #define CsrWifiSmeErrorIndSend(dst__, errorMessage__) \
1507 CsrWifiSmeErrorIndSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, errorMessage__)
1508
1509 /*******************************************************************************
1510
1511 NAME
1512 CsrWifiSmeEventMaskSetReqSend
1513
1514 DESCRIPTION
1515 The wireless manager application may register with the SME to receive
1516 notification of interesting events. Indications will be sent only if the
1517 wireless manager explicitly registers to be notified of that event.
1518 indMask is a bit mask of values defined in CsrWifiSmeIndicationsMask.
1519
1520 PARAMETERS
1521 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
1522 indMask - Set mask with values from CsrWifiSmeIndications
1523
1524 *******************************************************************************/
1525 #define CsrWifiSmeEventMaskSetReqCreate(msg__, dst__, src__, indMask__) \
1526 msg__ = kmalloc(sizeof(CsrWifiSmeEventMaskSetReq), GFP_KERNEL); \
1527 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_EVENT_MASK_SET_REQ, dst__, src__); \
1528 msg__->indMask = (indMask__);
1529
1530 #define CsrWifiSmeEventMaskSetReqSendTo(dst__, src__, indMask__) \
1531 { \
1532 CsrWifiSmeEventMaskSetReq *msg__; \
1533 CsrWifiSmeEventMaskSetReqCreate(msg__, dst__, src__, indMask__); \
1534 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
1535 }
1536
1537 #define CsrWifiSmeEventMaskSetReqSend(src__, indMask__) \
1538 CsrWifiSmeEventMaskSetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, indMask__)
1539
1540 /*******************************************************************************
1541
1542 NAME
1543 CsrWifiSmeEventMaskSetCfmSend
1544
1545 DESCRIPTION
1546 The SME calls the primitive to report the result of the request
1547 primitive.
1548
1549 PARAMETERS
1550 queue - Destination Task Queue
1551 status - Reports the result of the request
1552
1553 *******************************************************************************/
1554 #define CsrWifiSmeEventMaskSetCfmCreate(msg__, dst__, src__, status__) \
1555 msg__ = kmalloc(sizeof(CsrWifiSmeEventMaskSetCfm), GFP_KERNEL); \
1556 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_EVENT_MASK_SET_CFM, dst__, src__); \
1557 msg__->status = (status__);
1558
1559 #define CsrWifiSmeEventMaskSetCfmSendTo(dst__, src__, status__) \
1560 { \
1561 CsrWifiSmeEventMaskSetCfm *msg__; \
1562 CsrWifiSmeEventMaskSetCfmCreate(msg__, dst__, src__, status__); \
1563 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
1564 }
1565
1566 #define CsrWifiSmeEventMaskSetCfmSend(dst__, status__) \
1567 CsrWifiSmeEventMaskSetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__)
1568
1569 /*******************************************************************************
1570
1571 NAME
1572 CsrWifiSmeHostConfigGetReqSend
1573
1574 DESCRIPTION
1575 This primitive gets the value of the hostConfig parameter.
1576
1577 PARAMETERS
1578 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
1579 interfaceTag - Interface Identifier; unique identifier of an interface
1580
1581 *******************************************************************************/
1582 #define CsrWifiSmeHostConfigGetReqCreate(msg__, dst__, src__, interfaceTag__) \
1583 msg__ = kmalloc(sizeof(CsrWifiSmeHostConfigGetReq), GFP_KERNEL); \
1584 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_HOST_CONFIG_GET_REQ, dst__, src__); \
1585 msg__->interfaceTag = (interfaceTag__);
1586
1587 #define CsrWifiSmeHostConfigGetReqSendTo(dst__, src__, interfaceTag__) \
1588 { \
1589 CsrWifiSmeHostConfigGetReq *msg__; \
1590 CsrWifiSmeHostConfigGetReqCreate(msg__, dst__, src__, interfaceTag__); \
1591 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
1592 }
1593
1594 #define CsrWifiSmeHostConfigGetReqSend(src__, interfaceTag__) \
1595 CsrWifiSmeHostConfigGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, interfaceTag__)
1596
1597 /*******************************************************************************
1598
1599 NAME
1600 CsrWifiSmeHostConfigGetCfmSend
1601
1602 DESCRIPTION
1603 This primitive reports the result of the request.
1604
1605 PARAMETERS
1606 queue - Destination Task Queue
1607 interfaceTag - Interface Identifier; unique identifier of an interface
1608 status - Reports the result of the request
1609 hostConfig - Current host power state.
1610
1611 *******************************************************************************/
1612 #define CsrWifiSmeHostConfigGetCfmCreate(msg__, dst__, src__, interfaceTag__, status__, hostConfig__) \
1613 msg__ = kmalloc(sizeof(CsrWifiSmeHostConfigGetCfm), GFP_KERNEL); \
1614 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_HOST_CONFIG_GET_CFM, dst__, src__); \
1615 msg__->interfaceTag = (interfaceTag__); \
1616 msg__->status = (status__); \
1617 msg__->hostConfig = (hostConfig__);
1618
1619 #define CsrWifiSmeHostConfigGetCfmSendTo(dst__, src__, interfaceTag__, status__, hostConfig__) \
1620 { \
1621 CsrWifiSmeHostConfigGetCfm *msg__; \
1622 CsrWifiSmeHostConfigGetCfmCreate(msg__, dst__, src__, interfaceTag__, status__, hostConfig__); \
1623 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
1624 }
1625
1626 #define CsrWifiSmeHostConfigGetCfmSend(dst__, interfaceTag__, status__, hostConfig__) \
1627 CsrWifiSmeHostConfigGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, status__, hostConfig__)
1628
1629 /*******************************************************************************
1630
1631 NAME
1632 CsrWifiSmeHostConfigSetReqSend
1633
1634 DESCRIPTION
1635 This primitive sets the value of the hostConfig parameter.
1636
1637 PARAMETERS
1638 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
1639 interfaceTag - Interface Identifier; unique identifier of an interface
1640 hostConfig - Communicates a change of host power state (for example, on
1641 mains power, on battery power etc) and of the periodicity of
1642 traffic data
1643
1644 *******************************************************************************/
1645 #define CsrWifiSmeHostConfigSetReqCreate(msg__, dst__, src__, interfaceTag__, hostConfig__) \
1646 msg__ = kmalloc(sizeof(CsrWifiSmeHostConfigSetReq), GFP_KERNEL); \
1647 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_HOST_CONFIG_SET_REQ, dst__, src__); \
1648 msg__->interfaceTag = (interfaceTag__); \
1649 msg__->hostConfig = (hostConfig__);
1650
1651 #define CsrWifiSmeHostConfigSetReqSendTo(dst__, src__, interfaceTag__, hostConfig__) \
1652 { \
1653 CsrWifiSmeHostConfigSetReq *msg__; \
1654 CsrWifiSmeHostConfigSetReqCreate(msg__, dst__, src__, interfaceTag__, hostConfig__); \
1655 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
1656 }
1657
1658 #define CsrWifiSmeHostConfigSetReqSend(src__, interfaceTag__, hostConfig__) \
1659 CsrWifiSmeHostConfigSetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, interfaceTag__, hostConfig__)
1660
1661 /*******************************************************************************
1662
1663 NAME
1664 CsrWifiSmeHostConfigSetCfmSend
1665
1666 DESCRIPTION
1667 This primitive reports the result of the request.
1668
1669 PARAMETERS
1670 queue - Destination Task Queue
1671 interfaceTag - Interface Identifier; unique identifier of an interface
1672 status - Reports the result of the request
1673
1674 *******************************************************************************/
1675 #define CsrWifiSmeHostConfigSetCfmCreate(msg__, dst__, src__, interfaceTag__, status__) \
1676 msg__ = kmalloc(sizeof(CsrWifiSmeHostConfigSetCfm), GFP_KERNEL); \
1677 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_HOST_CONFIG_SET_CFM, dst__, src__); \
1678 msg__->interfaceTag = (interfaceTag__); \
1679 msg__->status = (status__);
1680
1681 #define CsrWifiSmeHostConfigSetCfmSendTo(dst__, src__, interfaceTag__, status__) \
1682 { \
1683 CsrWifiSmeHostConfigSetCfm *msg__; \
1684 CsrWifiSmeHostConfigSetCfmCreate(msg__, dst__, src__, interfaceTag__, status__); \
1685 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
1686 }
1687
1688 #define CsrWifiSmeHostConfigSetCfmSend(dst__, interfaceTag__, status__) \
1689 CsrWifiSmeHostConfigSetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, status__)
1690
1691 /*******************************************************************************
1692
1693 NAME
1694 CsrWifiSmeIbssStationIndSend
1695
1696 DESCRIPTION
1697 The SME will send this primitive to indicate that a station has joined or
1698 left the ad-hoc network.
1699
1700 PARAMETERS
1701 queue - Destination Task Queue
1702 address - MAC address of the station that has joined or left
1703 isconnected - TRUE if the station joined, FALSE if the station left
1704
1705 *******************************************************************************/
1706 #define CsrWifiSmeIbssStationIndCreate(msg__, dst__, src__, address__, isconnected__) \
1707 msg__ = kmalloc(sizeof(CsrWifiSmeIbssStationInd), GFP_KERNEL); \
1708 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_IBSS_STATION_IND, dst__, src__); \
1709 msg__->address = (address__); \
1710 msg__->isconnected = (isconnected__);
1711
1712 #define CsrWifiSmeIbssStationIndSendTo(dst__, src__, address__, isconnected__) \
1713 { \
1714 CsrWifiSmeIbssStationInd *msg__; \
1715 CsrWifiSmeIbssStationIndCreate(msg__, dst__, src__, address__, isconnected__); \
1716 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
1717 }
1718
1719 #define CsrWifiSmeIbssStationIndSend(dst__, address__, isconnected__) \
1720 CsrWifiSmeIbssStationIndSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, address__, isconnected__)
1721
1722 /*******************************************************************************
1723
1724 NAME
1725 CsrWifiSmeInfoIndSend
1726
1727 DESCRIPTION
1728 Message indicating a some info about current activity. Mostly of interest
1729 in testing but may be useful in the field.
1730
1731 PARAMETERS
1732 queue - Destination Task Queue
1733 infoMessage - Contains the message.
1734
1735 *******************************************************************************/
1736 #define CsrWifiSmeInfoIndCreate(msg__, dst__, src__, infoMessage__) \
1737 msg__ = kmalloc(sizeof(CsrWifiSmeInfoInd), GFP_KERNEL); \
1738 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_INFO_IND, dst__, src__); \
1739 msg__->infoMessage = (infoMessage__);
1740
1741 #define CsrWifiSmeInfoIndSendTo(dst__, src__, infoMessage__) \
1742 { \
1743 CsrWifiSmeInfoInd *msg__; \
1744 CsrWifiSmeInfoIndCreate(msg__, dst__, src__, infoMessage__); \
1745 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
1746 }
1747
1748 #define CsrWifiSmeInfoIndSend(dst__, infoMessage__) \
1749 CsrWifiSmeInfoIndSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, infoMessage__)
1750
1751 /*******************************************************************************
1752
1753 NAME
1754 CsrWifiSmeInterfaceCapabilityGetReqSend
1755
1756 DESCRIPTION
1757 The Wireless Manager calls this primitive to ask the SME for the
1758 capabilities of the supported interfaces
1759
1760 PARAMETERS
1761 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
1762
1763 *******************************************************************************/
1764 #define CsrWifiSmeInterfaceCapabilityGetReqCreate(msg__, dst__, src__) \
1765 msg__ = kmalloc(sizeof(CsrWifiSmeInterfaceCapabilityGetReq), GFP_KERNEL); \
1766 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_INTERFACE_CAPABILITY_GET_REQ, dst__, src__);
1767
1768 #define CsrWifiSmeInterfaceCapabilityGetReqSendTo(dst__, src__) \
1769 { \
1770 CsrWifiSmeInterfaceCapabilityGetReq *msg__; \
1771 CsrWifiSmeInterfaceCapabilityGetReqCreate(msg__, dst__, src__); \
1772 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
1773 }
1774
1775 #define CsrWifiSmeInterfaceCapabilityGetReqSend(src__) \
1776 CsrWifiSmeInterfaceCapabilityGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__)
1777
1778 /*******************************************************************************
1779
1780 NAME
1781 CsrWifiSmeInterfaceCapabilityGetCfmSend
1782
1783 DESCRIPTION
1784 This primitive reports the result of the request.
1785
1786 PARAMETERS
1787 queue - Destination Task Queue
1788 status - Result of the request
1789 numInterfaces - Number of the interfaces supported
1790 capBitmap - Points to the list of capabilities bitmaps provided for each
1791 interface.
1792 The bits represent the following capabilities:
1793 -bits 7 to 4-Reserved
1794 -bit 3-AMP
1795 -bit 2-P2P
1796 -bit 1-AP
1797 -bit 0-STA
1798
1799 *******************************************************************************/
1800 #define CsrWifiSmeInterfaceCapabilityGetCfmCreate(msg__, dst__, src__, status__, numInterfaces__, capBitmap__) \
1801 msg__ = kmalloc(sizeof(CsrWifiSmeInterfaceCapabilityGetCfm), GFP_KERNEL); \
1802 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_INTERFACE_CAPABILITY_GET_CFM, dst__, src__); \
1803 msg__->status = (status__); \
1804 msg__->numInterfaces = (numInterfaces__); \
1805 memcpy(msg__->capBitmap, (capBitmap__), sizeof(u8) * 2);
1806
1807 #define CsrWifiSmeInterfaceCapabilityGetCfmSendTo(dst__, src__, status__, numInterfaces__, capBitmap__) \
1808 { \
1809 CsrWifiSmeInterfaceCapabilityGetCfm *msg__; \
1810 CsrWifiSmeInterfaceCapabilityGetCfmCreate(msg__, dst__, src__, status__, numInterfaces__, capBitmap__); \
1811 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
1812 }
1813
1814 #define CsrWifiSmeInterfaceCapabilityGetCfmSend(dst__, status__, numInterfaces__, capBitmap__) \
1815 CsrWifiSmeInterfaceCapabilityGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__, numInterfaces__, capBitmap__)
1816
1817 /*******************************************************************************
1818
1819 NAME
1820 CsrWifiSmeKeyReqSend
1821
1822 DESCRIPTION
1823 The wireless manager application calls this primitive to add or remove
1824 keys that the chip should use for encryption of data.
1825 The interface allows the wireless manager application to add and remove
1826 keys according to the specified action.
1827
1828 PARAMETERS
1829 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
1830 interfaceTag - Interface Identifier; unique identifier of an interface
1831 action - The value of the CsrWifiSmeListAction parameter instructs the
1832 driver to modify or provide the list of keys.
1833 CSR_WIFI_SME_LIST_ACTION_GET is not supported here.
1834 key - Key to be added or removed
1835
1836 *******************************************************************************/
1837 #define CsrWifiSmeKeyReqCreate(msg__, dst__, src__, interfaceTag__, action__, key__) \
1838 msg__ = kmalloc(sizeof(CsrWifiSmeKeyReq), GFP_KERNEL); \
1839 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_KEY_REQ, dst__, src__); \
1840 msg__->interfaceTag = (interfaceTag__); \
1841 msg__->action = (action__); \
1842 msg__->key = (key__);
1843
1844 #define CsrWifiSmeKeyReqSendTo(dst__, src__, interfaceTag__, action__, key__) \
1845 { \
1846 CsrWifiSmeKeyReq *msg__; \
1847 CsrWifiSmeKeyReqCreate(msg__, dst__, src__, interfaceTag__, action__, key__); \
1848 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
1849 }
1850
1851 #define CsrWifiSmeKeyReqSend(src__, interfaceTag__, action__, key__) \
1852 CsrWifiSmeKeyReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, interfaceTag__, action__, key__)
1853
1854 /*******************************************************************************
1855
1856 NAME
1857 CsrWifiSmeKeyCfmSend
1858
1859 DESCRIPTION
1860 The SME calls the primitive to report the result of the request
1861 primitive.
1862
1863 PARAMETERS
1864 queue - Destination Task Queue
1865 interfaceTag - Interface Identifier; unique identifier of an interface
1866 status - Reports the result of the request
1867 action - Action in the request
1868 keyType - Type of the key added/deleted
1869 peerMacAddress - Peer MAC Address of the key added/deleted
1870
1871 *******************************************************************************/
1872 #define CsrWifiSmeKeyCfmCreate(msg__, dst__, src__, interfaceTag__, status__, action__, keyType__, peerMacAddress__) \
1873 msg__ = kmalloc(sizeof(CsrWifiSmeKeyCfm), GFP_KERNEL); \
1874 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_KEY_CFM, dst__, src__); \
1875 msg__->interfaceTag = (interfaceTag__); \
1876 msg__->status = (status__); \
1877 msg__->action = (action__); \
1878 msg__->keyType = (keyType__); \
1879 msg__->peerMacAddress = (peerMacAddress__);
1880
1881 #define CsrWifiSmeKeyCfmSendTo(dst__, src__, interfaceTag__, status__, action__, keyType__, peerMacAddress__) \
1882 { \
1883 CsrWifiSmeKeyCfm *msg__; \
1884 CsrWifiSmeKeyCfmCreate(msg__, dst__, src__, interfaceTag__, status__, action__, keyType__, peerMacAddress__); \
1885 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
1886 }
1887
1888 #define CsrWifiSmeKeyCfmSend(dst__, interfaceTag__, status__, action__, keyType__, peerMacAddress__) \
1889 CsrWifiSmeKeyCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, status__, action__, keyType__, peerMacAddress__)
1890
1891 /*******************************************************************************
1892
1893 NAME
1894 CsrWifiSmeLinkQualityGetReqSend
1895
1896 DESCRIPTION
1897 This primitive gets the value of the LinkQuality parameter.
1898
1899 PARAMETERS
1900 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
1901 interfaceTag - Interface Identifier; unique identifier of an interface
1902
1903 *******************************************************************************/
1904 #define CsrWifiSmeLinkQualityGetReqCreate(msg__, dst__, src__, interfaceTag__) \
1905 msg__ = kmalloc(sizeof(CsrWifiSmeLinkQualityGetReq), GFP_KERNEL); \
1906 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_LINK_QUALITY_GET_REQ, dst__, src__); \
1907 msg__->interfaceTag = (interfaceTag__);
1908
1909 #define CsrWifiSmeLinkQualityGetReqSendTo(dst__, src__, interfaceTag__) \
1910 { \
1911 CsrWifiSmeLinkQualityGetReq *msg__; \
1912 CsrWifiSmeLinkQualityGetReqCreate(msg__, dst__, src__, interfaceTag__); \
1913 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
1914 }
1915
1916 #define CsrWifiSmeLinkQualityGetReqSend(src__, interfaceTag__) \
1917 CsrWifiSmeLinkQualityGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, interfaceTag__)
1918
1919 /*******************************************************************************
1920
1921 NAME
1922 CsrWifiSmeLinkQualityGetCfmSend
1923
1924 DESCRIPTION
1925 This primitive reports the result of the request.
1926
1927 PARAMETERS
1928 queue - Destination Task Queue
1929 interfaceTag - Interface Identifier; unique identifier of an interface
1930 status - Reports the result of the request
1931 linkQuality - Indicates the quality of the link
1932
1933 *******************************************************************************/
1934 #define CsrWifiSmeLinkQualityGetCfmCreate(msg__, dst__, src__, interfaceTag__, status__, linkQuality__) \
1935 msg__ = kmalloc(sizeof(CsrWifiSmeLinkQualityGetCfm), GFP_KERNEL); \
1936 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_LINK_QUALITY_GET_CFM, dst__, src__); \
1937 msg__->interfaceTag = (interfaceTag__); \
1938 msg__->status = (status__); \
1939 msg__->linkQuality = (linkQuality__);
1940
1941 #define CsrWifiSmeLinkQualityGetCfmSendTo(dst__, src__, interfaceTag__, status__, linkQuality__) \
1942 { \
1943 CsrWifiSmeLinkQualityGetCfm *msg__; \
1944 CsrWifiSmeLinkQualityGetCfmCreate(msg__, dst__, src__, interfaceTag__, status__, linkQuality__); \
1945 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
1946 }
1947
1948 #define CsrWifiSmeLinkQualityGetCfmSend(dst__, interfaceTag__, status__, linkQuality__) \
1949 CsrWifiSmeLinkQualityGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, status__, linkQuality__)
1950
1951 /*******************************************************************************
1952
1953 NAME
1954 CsrWifiSmeMediaStatusIndSend
1955
1956 DESCRIPTION
1957 The SME sends this primitive to all the tasks that have registered to
1958 receive it when a network connection is established, lost or has moved to
1959 another AP.
1960
1961 PARAMETERS
1962 queue - Destination Task Queue
1963 interfaceTag - Interface Identifier; unique identifier of an interface
1964 mediaStatus - Indicates the media status
1965 connectionInfo - This parameter is relevant only if the mediaStatus is
1966 CSR_WIFI_SME_MEDIA_STATUS_CONNECTED:
1967 it points to the connection information for the new network
1968 disassocReason - This parameter is relevant only if the mediaStatus is
1969 CSR_WIFI_SME_MEDIA_STATUS_DISCONNECTED:
1970 if a disassociation has occurred it gives the reason of the
1971 disassociation
1972 deauthReason - This parameter is relevant only if the mediaStatus is
1973 CSR_WIFI_SME_MEDIA_STATUS_DISCONNECTED:
1974 if a deauthentication has occurred it gives the reason of
1975 the deauthentication
1976
1977 *******************************************************************************/
1978 #define CsrWifiSmeMediaStatusIndCreate(msg__, dst__, src__, interfaceTag__, mediaStatus__, connectionInfo__, disassocReason__, deauthReason__) \
1979 msg__ = kmalloc(sizeof(CsrWifiSmeMediaStatusInd), GFP_KERNEL); \
1980 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_MEDIA_STATUS_IND, dst__, src__); \
1981 msg__->interfaceTag = (interfaceTag__); \
1982 msg__->mediaStatus = (mediaStatus__); \
1983 msg__->connectionInfo = (connectionInfo__); \
1984 msg__->disassocReason = (disassocReason__); \
1985 msg__->deauthReason = (deauthReason__);
1986
1987 #define CsrWifiSmeMediaStatusIndSendTo(dst__, src__, interfaceTag__, mediaStatus__, connectionInfo__, disassocReason__, deauthReason__) \
1988 { \
1989 CsrWifiSmeMediaStatusInd *msg__; \
1990 CsrWifiSmeMediaStatusIndCreate(msg__, dst__, src__, interfaceTag__, mediaStatus__, connectionInfo__, disassocReason__, deauthReason__); \
1991 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
1992 }
1993
1994 #define CsrWifiSmeMediaStatusIndSend(dst__, interfaceTag__, mediaStatus__, connectionInfo__, disassocReason__, deauthReason__) \
1995 CsrWifiSmeMediaStatusIndSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, mediaStatus__, connectionInfo__, disassocReason__, deauthReason__)
1996
1997 /*******************************************************************************
1998
1999 NAME
2000 CsrWifiSmeMibConfigGetReqSend
2001
2002 DESCRIPTION
2003 This primitive gets the value of the MibConfig parameter.
2004
2005 PARAMETERS
2006 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
2007
2008 *******************************************************************************/
2009 #define CsrWifiSmeMibConfigGetReqCreate(msg__, dst__, src__) \
2010 msg__ = kmalloc(sizeof(CsrWifiSmeMibConfigGetReq), GFP_KERNEL); \
2011 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_MIB_CONFIG_GET_REQ, dst__, src__);
2012
2013 #define CsrWifiSmeMibConfigGetReqSendTo(dst__, src__) \
2014 { \
2015 CsrWifiSmeMibConfigGetReq *msg__; \
2016 CsrWifiSmeMibConfigGetReqCreate(msg__, dst__, src__); \
2017 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
2018 }
2019
2020 #define CsrWifiSmeMibConfigGetReqSend(src__) \
2021 CsrWifiSmeMibConfigGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__)
2022
2023 /*******************************************************************************
2024
2025 NAME
2026 CsrWifiSmeMibConfigGetCfmSend
2027
2028 DESCRIPTION
2029 This primitive reports the result of the request.
2030
2031 PARAMETERS
2032 queue - Destination Task Queue
2033 status - Reports the result of the request
2034 mibConfig - Reports various IEEE 802.11 attributes as currently configured
2035
2036 *******************************************************************************/
2037 #define CsrWifiSmeMibConfigGetCfmCreate(msg__, dst__, src__, status__, mibConfig__) \
2038 msg__ = kmalloc(sizeof(CsrWifiSmeMibConfigGetCfm), GFP_KERNEL); \
2039 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_MIB_CONFIG_GET_CFM, dst__, src__); \
2040 msg__->status = (status__); \
2041 msg__->mibConfig = (mibConfig__);
2042
2043 #define CsrWifiSmeMibConfigGetCfmSendTo(dst__, src__, status__, mibConfig__) \
2044 { \
2045 CsrWifiSmeMibConfigGetCfm *msg__; \
2046 CsrWifiSmeMibConfigGetCfmCreate(msg__, dst__, src__, status__, mibConfig__); \
2047 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
2048 }
2049
2050 #define CsrWifiSmeMibConfigGetCfmSend(dst__, status__, mibConfig__) \
2051 CsrWifiSmeMibConfigGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__, mibConfig__)
2052
2053 /*******************************************************************************
2054
2055 NAME
2056 CsrWifiSmeMibConfigSetReqSend
2057
2058 DESCRIPTION
2059 This primitive sets the value of the MibConfig parameter.
2060
2061 PARAMETERS
2062 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
2063 mibConfig - Conveys the desired value of various IEEE 802.11 attributes as
2064 currently configured
2065
2066 *******************************************************************************/
2067 #define CsrWifiSmeMibConfigSetReqCreate(msg__, dst__, src__, mibConfig__) \
2068 msg__ = kmalloc(sizeof(CsrWifiSmeMibConfigSetReq), GFP_KERNEL); \
2069 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_MIB_CONFIG_SET_REQ, dst__, src__); \
2070 msg__->mibConfig = (mibConfig__);
2071
2072 #define CsrWifiSmeMibConfigSetReqSendTo(dst__, src__, mibConfig__) \
2073 { \
2074 CsrWifiSmeMibConfigSetReq *msg__; \
2075 CsrWifiSmeMibConfigSetReqCreate(msg__, dst__, src__, mibConfig__); \
2076 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
2077 }
2078
2079 #define CsrWifiSmeMibConfigSetReqSend(src__, mibConfig__) \
2080 CsrWifiSmeMibConfigSetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, mibConfig__)
2081
2082 /*******************************************************************************
2083
2084 NAME
2085 CsrWifiSmeMibConfigSetCfmSend
2086
2087 DESCRIPTION
2088 This primitive reports the result of the request.
2089
2090 PARAMETERS
2091 queue - Destination Task Queue
2092 status - Reports the result of the request
2093
2094 *******************************************************************************/
2095 #define CsrWifiSmeMibConfigSetCfmCreate(msg__, dst__, src__, status__) \
2096 msg__ = kmalloc(sizeof(CsrWifiSmeMibConfigSetCfm), GFP_KERNEL); \
2097 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_MIB_CONFIG_SET_CFM, dst__, src__); \
2098 msg__->status = (status__);
2099
2100 #define CsrWifiSmeMibConfigSetCfmSendTo(dst__, src__, status__) \
2101 { \
2102 CsrWifiSmeMibConfigSetCfm *msg__; \
2103 CsrWifiSmeMibConfigSetCfmCreate(msg__, dst__, src__, status__); \
2104 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
2105 }
2106
2107 #define CsrWifiSmeMibConfigSetCfmSend(dst__, status__) \
2108 CsrWifiSmeMibConfigSetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__)
2109
2110 /*******************************************************************************
2111
2112 NAME
2113 CsrWifiSmeMibGetCfmSend
2114
2115 DESCRIPTION
2116 The SME calls this primitive to return the requested MIB variable values.
2117
2118 PARAMETERS
2119 queue - Destination Task Queue
2120 status - Reports the result of the request
2121 mibAttributeLength - Length of mibAttribute
2122 mibAttribute - Points to the VarBind or VarBindList containing the
2123 names and values of the MIB variables requested
2124
2125 *******************************************************************************/
2126 #define CsrWifiSmeMibGetCfmCreate(msg__, dst__, src__, status__, mibAttributeLength__, mibAttribute__) \
2127 msg__ = kmalloc(sizeof(CsrWifiSmeMibGetCfm), GFP_KERNEL); \
2128 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_MIB_GET_CFM, dst__, src__); \
2129 msg__->status = (status__); \
2130 msg__->mibAttributeLength = (mibAttributeLength__); \
2131 msg__->mibAttribute = (mibAttribute__);
2132
2133 #define CsrWifiSmeMibGetCfmSendTo(dst__, src__, status__, mibAttributeLength__, mibAttribute__) \
2134 { \
2135 CsrWifiSmeMibGetCfm *msg__; \
2136 CsrWifiSmeMibGetCfmCreate(msg__, dst__, src__, status__, mibAttributeLength__, mibAttribute__); \
2137 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
2138 }
2139
2140 #define CsrWifiSmeMibGetCfmSend(dst__, status__, mibAttributeLength__, mibAttribute__) \
2141 CsrWifiSmeMibGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__, mibAttributeLength__, mibAttribute__)
2142
2143 /*******************************************************************************
2144
2145 NAME
2146 CsrWifiSmeMibGetNextReqSend
2147
2148 DESCRIPTION
2149 To read a sequence of MIB parameters, for example a table, call this
2150 primitive to find the name of the next MIB variable
2151
2152 PARAMETERS
2153 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
2154 mibAttributeLength - Length of mibAttribute
2155 mibAttribute - Points to a VarBind or VarBindList containing the
2156 name(s) of the MIB variable(s) to search from.
2157
2158 *******************************************************************************/
2159 #define CsrWifiSmeMibGetNextReqCreate(msg__, dst__, src__, mibAttributeLength__, mibAttribute__) \
2160 msg__ = kmalloc(sizeof(CsrWifiSmeMibGetNextReq), GFP_KERNEL); \
2161 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_MIB_GET_NEXT_REQ, dst__, src__); \
2162 msg__->mibAttributeLength = (mibAttributeLength__); \
2163 msg__->mibAttribute = (mibAttribute__);
2164
2165 #define CsrWifiSmeMibGetNextReqSendTo(dst__, src__, mibAttributeLength__, mibAttribute__) \
2166 { \
2167 CsrWifiSmeMibGetNextReq *msg__; \
2168 CsrWifiSmeMibGetNextReqCreate(msg__, dst__, src__, mibAttributeLength__, mibAttribute__); \
2169 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
2170 }
2171
2172 #define CsrWifiSmeMibGetNextReqSend(src__, mibAttributeLength__, mibAttribute__) \
2173 CsrWifiSmeMibGetNextReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, mibAttributeLength__, mibAttribute__)
2174
2175 /*******************************************************************************
2176
2177 NAME
2178 CsrWifiSmeMibGetNextCfmSend
2179
2180 DESCRIPTION
2181 The SME calls this primitive to return the requested MIB name(s).
2182 The wireless manager application can then read the value of the MIB
2183 variable using CSR_WIFI_SME_MIB_GET_REQ, using the names provided.
2184
2185 PARAMETERS
2186 queue - Destination Task Queue
2187 status - Reports the result of the request
2188 mibAttributeLength - Length of mibAttribute
2189 mibAttribute - Points to a VarBind or VarBindList containing the
2190 name(s) of the MIB variable(s) lexicographically
2191 following the name(s) given in the request
2192
2193 *******************************************************************************/
2194 #define CsrWifiSmeMibGetNextCfmCreate(msg__, dst__, src__, status__, mibAttributeLength__, mibAttribute__) \
2195 msg__ = kmalloc(sizeof(CsrWifiSmeMibGetNextCfm), GFP_KERNEL); \
2196 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_MIB_GET_NEXT_CFM, dst__, src__); \
2197 msg__->status = (status__); \
2198 msg__->mibAttributeLength = (mibAttributeLength__); \
2199 msg__->mibAttribute = (mibAttribute__);
2200
2201 #define CsrWifiSmeMibGetNextCfmSendTo(dst__, src__, status__, mibAttributeLength__, mibAttribute__) \
2202 { \
2203 CsrWifiSmeMibGetNextCfm *msg__; \
2204 CsrWifiSmeMibGetNextCfmCreate(msg__, dst__, src__, status__, mibAttributeLength__, mibAttribute__); \
2205 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
2206 }
2207
2208 #define CsrWifiSmeMibGetNextCfmSend(dst__, status__, mibAttributeLength__, mibAttribute__) \
2209 CsrWifiSmeMibGetNextCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__, mibAttributeLength__, mibAttribute__)
2210
2211 /*******************************************************************************
2212
2213 NAME
2214 CsrWifiSmeMibGetReqSend
2215
2216 DESCRIPTION
2217 The wireless manager application calls this primitive to retrieve one or
2218 more MIB variables.
2219
2220 PARAMETERS
2221 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
2222 mibAttributeLength - Length of mibAttribute
2223 mibAttribute - Points to the VarBind or VarBindList containing the
2224 names of the MIB variables to be retrieved
2225
2226 *******************************************************************************/
2227 #define CsrWifiSmeMibGetReqCreate(msg__, dst__, src__, mibAttributeLength__, mibAttribute__) \
2228 msg__ = kmalloc(sizeof(CsrWifiSmeMibGetReq), GFP_KERNEL); \
2229 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_MIB_GET_REQ, dst__, src__); \
2230 msg__->mibAttributeLength = (mibAttributeLength__); \
2231 msg__->mibAttribute = (mibAttribute__);
2232
2233 #define CsrWifiSmeMibGetReqSendTo(dst__, src__, mibAttributeLength__, mibAttribute__) \
2234 { \
2235 CsrWifiSmeMibGetReq *msg__; \
2236 CsrWifiSmeMibGetReqCreate(msg__, dst__, src__, mibAttributeLength__, mibAttribute__); \
2237 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
2238 }
2239
2240 #define CsrWifiSmeMibGetReqSend(src__, mibAttributeLength__, mibAttribute__) \
2241 CsrWifiSmeMibGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, mibAttributeLength__, mibAttribute__)
2242
2243 /*******************************************************************************
2244
2245 NAME
2246 CsrWifiSmeMibSetReqSend
2247
2248 DESCRIPTION
2249 The SME provides raw access to the MIB on the chip, which may be used by
2250 some configuration or diagnostic utilities, but is not normally needed by
2251 the wireless manager application.
2252 The MIB access functions use BER encoded names (OID) of the MIB
2253 parameters and BER encoded values, as described in the chip Host
2254 Interface Protocol Specification.
2255 The MIB parameters are described in 'Wi-Fi 5.0.0 Management Information
2256 Base Reference Guide'.
2257 The wireless manager application calls this primitive to set one or more
2258 MIB variables
2259
2260 PARAMETERS
2261 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
2262 mibAttributeLength - Length of mibAttribute
2263 mibAttribute - Points to the VarBind or VarBindList containing the
2264 names and values of the MIB variables to set
2265
2266 *******************************************************************************/
2267 #define CsrWifiSmeMibSetReqCreate(msg__, dst__, src__, mibAttributeLength__, mibAttribute__) \
2268 msg__ = kmalloc(sizeof(CsrWifiSmeMibSetReq), GFP_KERNEL); \
2269 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_MIB_SET_REQ, dst__, src__); \
2270 msg__->mibAttributeLength = (mibAttributeLength__); \
2271 msg__->mibAttribute = (mibAttribute__);
2272
2273 #define CsrWifiSmeMibSetReqSendTo(dst__, src__, mibAttributeLength__, mibAttribute__) \
2274 { \
2275 CsrWifiSmeMibSetReq *msg__; \
2276 CsrWifiSmeMibSetReqCreate(msg__, dst__, src__, mibAttributeLength__, mibAttribute__); \
2277 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
2278 }
2279
2280 #define CsrWifiSmeMibSetReqSend(src__, mibAttributeLength__, mibAttribute__) \
2281 CsrWifiSmeMibSetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, mibAttributeLength__, mibAttribute__)
2282
2283 /*******************************************************************************
2284
2285 NAME
2286 CsrWifiSmeMibSetCfmSend
2287
2288 DESCRIPTION
2289 The SME calls the primitive to report the result of the set primitive.
2290
2291 PARAMETERS
2292 queue - Destination Task Queue
2293 status - Reports the result of the request
2294
2295 *******************************************************************************/
2296 #define CsrWifiSmeMibSetCfmCreate(msg__, dst__, src__, status__) \
2297 msg__ = kmalloc(sizeof(CsrWifiSmeMibSetCfm), GFP_KERNEL); \
2298 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_MIB_SET_CFM, dst__, src__); \
2299 msg__->status = (status__);
2300
2301 #define CsrWifiSmeMibSetCfmSendTo(dst__, src__, status__) \
2302 { \
2303 CsrWifiSmeMibSetCfm *msg__; \
2304 CsrWifiSmeMibSetCfmCreate(msg__, dst__, src__, status__); \
2305 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
2306 }
2307
2308 #define CsrWifiSmeMibSetCfmSend(dst__, status__) \
2309 CsrWifiSmeMibSetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__)
2310
2311 /*******************************************************************************
2312
2313 NAME
2314 CsrWifiSmeMicFailureIndSend
2315
2316 DESCRIPTION
2317 The SME sends this primitive to all the tasks that have registered to
2318 receive it whenever the chip firmware reports a MIC failure.
2319
2320 PARAMETERS
2321 queue - Destination Task Queue
2322 interfaceTag - Interface Identifier; unique identifier of an interface
2323 secondFailure - TRUE if this indication is for a second failure in 60
2324 seconds
2325 count - The number of MIC failure events since the connection was
2326 established
2327 address - MAC address of the transmitter that caused the MIC failure
2328 keyType - Type of key for which the failure occurred
2329
2330 *******************************************************************************/
2331 #define CsrWifiSmeMicFailureIndCreate(msg__, dst__, src__, interfaceTag__, secondFailure__, count__, address__, keyType__) \
2332 msg__ = kmalloc(sizeof(CsrWifiSmeMicFailureInd), GFP_KERNEL); \
2333 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_MIC_FAILURE_IND, dst__, src__); \
2334 msg__->interfaceTag = (interfaceTag__); \
2335 msg__->secondFailure = (secondFailure__); \
2336 msg__->count = (count__); \
2337 msg__->address = (address__); \
2338 msg__->keyType = (keyType__);
2339
2340 #define CsrWifiSmeMicFailureIndSendTo(dst__, src__, interfaceTag__, secondFailure__, count__, address__, keyType__) \
2341 { \
2342 CsrWifiSmeMicFailureInd *msg__; \
2343 CsrWifiSmeMicFailureIndCreate(msg__, dst__, src__, interfaceTag__, secondFailure__, count__, address__, keyType__); \
2344 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
2345 }
2346
2347 #define CsrWifiSmeMicFailureIndSend(dst__, interfaceTag__, secondFailure__, count__, address__, keyType__) \
2348 CsrWifiSmeMicFailureIndSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, secondFailure__, count__, address__, keyType__)
2349
2350 /*******************************************************************************
2351
2352 NAME
2353 CsrWifiSmeMulticastAddressReqSend
2354
2355 DESCRIPTION
2356 The wireless manager application calls this primitive to specify the
2357 multicast addresses which the chip should recognise. The interface allows
2358 the wireless manager application to query, add, remove and flush the
2359 multicast addresses for the network interface according to the specified
2360 action.
2361
2362 PARAMETERS
2363 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
2364 interfaceTag - Interface Identifier; unique identifier of an interface
2365 action - The value of the CsrWifiSmeListAction parameter
2366 instructs the driver to modify or provide the list of
2367 MAC addresses.
2368 setAddressesCount - Number of MAC addresses sent with the primitive
2369 setAddresses - Pointer to the list of MAC Addresses sent with the
2370 primitive, set to NULL if none is sent.
2371
2372 *******************************************************************************/
2373 #define CsrWifiSmeMulticastAddressReqCreate(msg__, dst__, src__, interfaceTag__, action__, setAddressesCount__, setAddresses__) \
2374 msg__ = kmalloc(sizeof(CsrWifiSmeMulticastAddressReq), GFP_KERNEL); \
2375 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_MULTICAST_ADDRESS_REQ, dst__, src__); \
2376 msg__->interfaceTag = (interfaceTag__); \
2377 msg__->action = (action__); \
2378 msg__->setAddressesCount = (setAddressesCount__); \
2379 msg__->setAddresses = (setAddresses__);
2380
2381 #define CsrWifiSmeMulticastAddressReqSendTo(dst__, src__, interfaceTag__, action__, setAddressesCount__, setAddresses__) \
2382 { \
2383 CsrWifiSmeMulticastAddressReq *msg__; \
2384 CsrWifiSmeMulticastAddressReqCreate(msg__, dst__, src__, interfaceTag__, action__, setAddressesCount__, setAddresses__); \
2385 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
2386 }
2387
2388 #define CsrWifiSmeMulticastAddressReqSend(src__, interfaceTag__, action__, setAddressesCount__, setAddresses__) \
2389 CsrWifiSmeMulticastAddressReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, interfaceTag__, action__, setAddressesCount__, setAddresses__)
2390
2391 /*******************************************************************************
2392
2393 NAME
2394 CsrWifiSmeMulticastAddressCfmSend
2395
2396 DESCRIPTION
2397 The SME will call this primitive when the operation is complete. For a
2398 GET action, this primitive reports the current list of MAC addresses.
2399
2400 PARAMETERS
2401 queue - Destination Task Queue
2402 interfaceTag - Interface Identifier; unique identifier of an interface
2403 status - Reports the result of the request
2404 action - Action in the request
2405 getAddressesCount - This parameter is only relevant if action is
2406 CSR_WIFI_SME_LIST_ACTION_GET:
2407 number of MAC addresses sent with the primitive
2408 getAddresses - Pointer to the list of MAC Addresses sent with the
2409 primitive, set to NULL if none is sent.
2410
2411 *******************************************************************************/
2412 #define CsrWifiSmeMulticastAddressCfmCreate(msg__, dst__, src__, interfaceTag__, status__, action__, getAddressesCount__, getAddresses__) \
2413 msg__ = kmalloc(sizeof(CsrWifiSmeMulticastAddressCfm), GFP_KERNEL); \
2414 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_MULTICAST_ADDRESS_CFM, dst__, src__); \
2415 msg__->interfaceTag = (interfaceTag__); \
2416 msg__->status = (status__); \
2417 msg__->action = (action__); \
2418 msg__->getAddressesCount = (getAddressesCount__); \
2419 msg__->getAddresses = (getAddresses__);
2420
2421 #define CsrWifiSmeMulticastAddressCfmSendTo(dst__, src__, interfaceTag__, status__, action__, getAddressesCount__, getAddresses__) \
2422 { \
2423 CsrWifiSmeMulticastAddressCfm *msg__; \
2424 CsrWifiSmeMulticastAddressCfmCreate(msg__, dst__, src__, interfaceTag__, status__, action__, getAddressesCount__, getAddresses__); \
2425 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
2426 }
2427
2428 #define CsrWifiSmeMulticastAddressCfmSend(dst__, interfaceTag__, status__, action__, getAddressesCount__, getAddresses__) \
2429 CsrWifiSmeMulticastAddressCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, status__, action__, getAddressesCount__, getAddresses__)
2430
2431 /*******************************************************************************
2432
2433 NAME
2434 CsrWifiSmePacketFilterSetReqSend
2435
2436 DESCRIPTION
2437 The wireless manager application should call this primitive to enable or
2438 disable filtering of broadcast packets: uninteresting broadcast packets
2439 will be dropped by the Wi-Fi chip, instead of passing them up to the
2440 host.
2441 This has the advantage of saving power in the host application processor
2442 as it removes the need to process unwanted packets.
2443 All broadcast packets are filtered according to the filter and the filter
2444 mode provided, except ARP packets, which are filtered using
2445 arpFilterAddress.
2446 Filters are not cumulative: only the parameters specified in the most
2447 recent successful request are significant.
2448 For more information, see 'UniFi Firmware API Specification'.
2449
2450 PARAMETERS
2451 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
2452 interfaceTag - Interface Identifier; unique identifier of an interface
2453 filterLength - Length of the filter in bytes.
2454 filterLength=0 disables the filter previously set
2455 filter - Points to the first byte of the filter provided, if any.
2456 This shall include zero or more instance of the
2457 information elements of one of these types
2458 * Traffic Classification (TCLAS) elements
2459 * WMM-SA TCLAS elements
2460 mode - Specifies whether the filter selects or excludes packets
2461 matching the filter
2462 arpFilterAddress - IPv4 address to be used for filtering the ARP packets.
2463 * If the specified address is the IPv4 broadcast address
2464 (255.255.255.255), all ARP packets are reported to the
2465 host,
2466 * If the specified address is NOT the IPv4 broadcast
2467 address, only ARP packets with the specified address in
2468 the Source or Target Protocol Address fields are reported
2469 to the host
2470
2471 *******************************************************************************/
2472 #define CsrWifiSmePacketFilterSetReqCreate(msg__, dst__, src__, interfaceTag__, filterLength__, filter__, mode__, arpFilterAddress__) \
2473 msg__ = kmalloc(sizeof(CsrWifiSmePacketFilterSetReq), GFP_KERNEL); \
2474 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_PACKET_FILTER_SET_REQ, dst__, src__); \
2475 msg__->interfaceTag = (interfaceTag__); \
2476 msg__->filterLength = (filterLength__); \
2477 msg__->filter = (filter__); \
2478 msg__->mode = (mode__); \
2479 msg__->arpFilterAddress = (arpFilterAddress__);
2480
2481 #define CsrWifiSmePacketFilterSetReqSendTo(dst__, src__, interfaceTag__, filterLength__, filter__, mode__, arpFilterAddress__) \
2482 { \
2483 CsrWifiSmePacketFilterSetReq *msg__; \
2484 CsrWifiSmePacketFilterSetReqCreate(msg__, dst__, src__, interfaceTag__, filterLength__, filter__, mode__, arpFilterAddress__); \
2485 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
2486 }
2487
2488 #define CsrWifiSmePacketFilterSetReqSend(src__, interfaceTag__, filterLength__, filter__, mode__, arpFilterAddress__) \
2489 CsrWifiSmePacketFilterSetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, interfaceTag__, filterLength__, filter__, mode__, arpFilterAddress__)
2490
2491 /*******************************************************************************
2492
2493 NAME
2494 CsrWifiSmePacketFilterSetCfmSend
2495
2496 DESCRIPTION
2497 The SME calls the primitive to report the result of the set primitive.
2498
2499 PARAMETERS
2500 queue - Destination Task Queue
2501 interfaceTag - Interface Identifier; unique identifier of an interface
2502 status - Reports the result of the request
2503
2504 *******************************************************************************/
2505 #define CsrWifiSmePacketFilterSetCfmCreate(msg__, dst__, src__, interfaceTag__, status__) \
2506 msg__ = kmalloc(sizeof(CsrWifiSmePacketFilterSetCfm), GFP_KERNEL); \
2507 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_PACKET_FILTER_SET_CFM, dst__, src__); \
2508 msg__->interfaceTag = (interfaceTag__); \
2509 msg__->status = (status__);
2510
2511 #define CsrWifiSmePacketFilterSetCfmSendTo(dst__, src__, interfaceTag__, status__) \
2512 { \
2513 CsrWifiSmePacketFilterSetCfm *msg__; \
2514 CsrWifiSmePacketFilterSetCfmCreate(msg__, dst__, src__, interfaceTag__, status__); \
2515 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
2516 }
2517
2518 #define CsrWifiSmePacketFilterSetCfmSend(dst__, interfaceTag__, status__) \
2519 CsrWifiSmePacketFilterSetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, status__)
2520
2521 /*******************************************************************************
2522
2523 NAME
2524 CsrWifiSmePermanentMacAddressGetReqSend
2525
2526 DESCRIPTION
2527 This primitive retrieves the MAC address stored in EEPROM
2528
2529 PARAMETERS
2530 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
2531
2532 *******************************************************************************/
2533 #define CsrWifiSmePermanentMacAddressGetReqCreate(msg__, dst__, src__) \
2534 msg__ = kmalloc(sizeof(CsrWifiSmePermanentMacAddressGetReq), GFP_KERNEL); \
2535 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_PERMANENT_MAC_ADDRESS_GET_REQ, dst__, src__);
2536
2537 #define CsrWifiSmePermanentMacAddressGetReqSendTo(dst__, src__) \
2538 { \
2539 CsrWifiSmePermanentMacAddressGetReq *msg__; \
2540 CsrWifiSmePermanentMacAddressGetReqCreate(msg__, dst__, src__); \
2541 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
2542 }
2543
2544 #define CsrWifiSmePermanentMacAddressGetReqSend(src__) \
2545 CsrWifiSmePermanentMacAddressGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__)
2546
2547 /*******************************************************************************
2548
2549 NAME
2550 CsrWifiSmePermanentMacAddressGetCfmSend
2551
2552 DESCRIPTION
2553 This primitive reports the result of the request.
2554
2555 PARAMETERS
2556 queue - Destination Task Queue
2557 status - Reports the result of the request
2558 permanentMacAddress - MAC address stored in the EEPROM
2559
2560 *******************************************************************************/
2561 #define CsrWifiSmePermanentMacAddressGetCfmCreate(msg__, dst__, src__, status__, permanentMacAddress__) \
2562 msg__ = kmalloc(sizeof(CsrWifiSmePermanentMacAddressGetCfm), GFP_KERNEL); \
2563 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_PERMANENT_MAC_ADDRESS_GET_CFM, dst__, src__); \
2564 msg__->status = (status__); \
2565 msg__->permanentMacAddress = (permanentMacAddress__);
2566
2567 #define CsrWifiSmePermanentMacAddressGetCfmSendTo(dst__, src__, status__, permanentMacAddress__) \
2568 { \
2569 CsrWifiSmePermanentMacAddressGetCfm *msg__; \
2570 CsrWifiSmePermanentMacAddressGetCfmCreate(msg__, dst__, src__, status__, permanentMacAddress__); \
2571 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
2572 }
2573
2574 #define CsrWifiSmePermanentMacAddressGetCfmSend(dst__, status__, permanentMacAddress__) \
2575 CsrWifiSmePermanentMacAddressGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__, permanentMacAddress__)
2576
2577 /*******************************************************************************
2578
2579 NAME
2580 CsrWifiSmePmkidCandidateListIndSend
2581
2582 DESCRIPTION
2583 The SME will send this primitive to all the tasks that have registered to
2584 receive it when a new network supporting preauthentication and/or PMK
2585 caching is seen.
2586
2587 PARAMETERS
2588 queue - Destination Task Queue
2589 interfaceTag - Interface Identifier; unique identifier of an
2590 interface
2591 pmkidCandidatesCount - Number of PMKID candidates provided
2592 pmkidCandidates - Points to the first PMKID candidate
2593
2594 *******************************************************************************/
2595 #define CsrWifiSmePmkidCandidateListIndCreate(msg__, dst__, src__, interfaceTag__, pmkidCandidatesCount__, pmkidCandidates__) \
2596 msg__ = kmalloc(sizeof(CsrWifiSmePmkidCandidateListInd), GFP_KERNEL); \
2597 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_PMKID_CANDIDATE_LIST_IND, dst__, src__); \
2598 msg__->interfaceTag = (interfaceTag__); \
2599 msg__->pmkidCandidatesCount = (pmkidCandidatesCount__); \
2600 msg__->pmkidCandidates = (pmkidCandidates__);
2601
2602 #define CsrWifiSmePmkidCandidateListIndSendTo(dst__, src__, interfaceTag__, pmkidCandidatesCount__, pmkidCandidates__) \
2603 { \
2604 CsrWifiSmePmkidCandidateListInd *msg__; \
2605 CsrWifiSmePmkidCandidateListIndCreate(msg__, dst__, src__, interfaceTag__, pmkidCandidatesCount__, pmkidCandidates__); \
2606 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
2607 }
2608
2609 #define CsrWifiSmePmkidCandidateListIndSend(dst__, interfaceTag__, pmkidCandidatesCount__, pmkidCandidates__) \
2610 CsrWifiSmePmkidCandidateListIndSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, pmkidCandidatesCount__, pmkidCandidates__)
2611
2612 /*******************************************************************************
2613
2614 NAME
2615 CsrWifiSmePmkidReqSend
2616
2617 DESCRIPTION
2618 The wireless manager application calls this primitive to request an
2619 operation on the SME PMKID list.
2620 The action argument specifies the operation to perform.
2621 When the connection is complete, the wireless manager application may
2622 then send and receive EAPOL packets to complete WPA or WPA2
2623 authentication if appropriate.
2624 The wireless manager application can then pass the resulting encryption
2625 keys using this primitive.
2626
2627 PARAMETERS
2628 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
2629 interfaceTag - Interface Identifier; unique identifier of an interface
2630 action - The value of the CsrWifiSmeListAction parameter instructs
2631 the driver to modify or provide the list of PMKIDs.
2632 setPmkidsCount - Number of PMKIDs sent with the primitive
2633 setPmkids - Pointer to the list of PMKIDs sent with the primitive, set
2634 to NULL if none is sent.
2635
2636 *******************************************************************************/
2637 #define CsrWifiSmePmkidReqCreate(msg__, dst__, src__, interfaceTag__, action__, setPmkidsCount__, setPmkids__) \
2638 msg__ = kmalloc(sizeof(CsrWifiSmePmkidReq), GFP_KERNEL); \
2639 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_PMKID_REQ, dst__, src__); \
2640 msg__->interfaceTag = (interfaceTag__); \
2641 msg__->action = (action__); \
2642 msg__->setPmkidsCount = (setPmkidsCount__); \
2643 msg__->setPmkids = (setPmkids__);
2644
2645 #define CsrWifiSmePmkidReqSendTo(dst__, src__, interfaceTag__, action__, setPmkidsCount__, setPmkids__) \
2646 { \
2647 CsrWifiSmePmkidReq *msg__; \
2648 CsrWifiSmePmkidReqCreate(msg__, dst__, src__, interfaceTag__, action__, setPmkidsCount__, setPmkids__); \
2649 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
2650 }
2651
2652 #define CsrWifiSmePmkidReqSend(src__, interfaceTag__, action__, setPmkidsCount__, setPmkids__) \
2653 CsrWifiSmePmkidReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, interfaceTag__, action__, setPmkidsCount__, setPmkids__)
2654
2655 /*******************************************************************************
2656
2657 NAME
2658 CsrWifiSmePmkidCfmSend
2659
2660 DESCRIPTION
2661 The SME will call this primitive when the operation is complete. For a
2662 GET action, this primitive reports the current list of PMKIDs
2663
2664 PARAMETERS
2665 queue - Destination Task Queue
2666 interfaceTag - Interface Identifier; unique identifier of an interface
2667 status - Reports the result of the request
2668 action - Action in the request
2669 getPmkidsCount - This parameter is only relevant if action is
2670 CSR_WIFI_SME_LIST_ACTION_GET:
2671 number of PMKIDs sent with the primitive
2672 getPmkids - Pointer to the list of PMKIDs sent with the primitive, set
2673 to NULL if none is sent.
2674
2675 *******************************************************************************/
2676 #define CsrWifiSmePmkidCfmCreate(msg__, dst__, src__, interfaceTag__, status__, action__, getPmkidsCount__, getPmkids__) \
2677 msg__ = kmalloc(sizeof(CsrWifiSmePmkidCfm), GFP_KERNEL); \
2678 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_PMKID_CFM, dst__, src__); \
2679 msg__->interfaceTag = (interfaceTag__); \
2680 msg__->status = (status__); \
2681 msg__->action = (action__); \
2682 msg__->getPmkidsCount = (getPmkidsCount__); \
2683 msg__->getPmkids = (getPmkids__);
2684
2685 #define CsrWifiSmePmkidCfmSendTo(dst__, src__, interfaceTag__, status__, action__, getPmkidsCount__, getPmkids__) \
2686 { \
2687 CsrWifiSmePmkidCfm *msg__; \
2688 CsrWifiSmePmkidCfmCreate(msg__, dst__, src__, interfaceTag__, status__, action__, getPmkidsCount__, getPmkids__); \
2689 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
2690 }
2691
2692 #define CsrWifiSmePmkidCfmSend(dst__, interfaceTag__, status__, action__, getPmkidsCount__, getPmkids__) \
2693 CsrWifiSmePmkidCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, status__, action__, getPmkidsCount__, getPmkids__)
2694
2695 /*******************************************************************************
2696
2697 NAME
2698 CsrWifiSmePowerConfigGetReqSend
2699
2700 DESCRIPTION
2701 This primitive gets the value of the PowerConfig parameter.
2702
2703 PARAMETERS
2704 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
2705
2706 *******************************************************************************/
2707 #define CsrWifiSmePowerConfigGetReqCreate(msg__, dst__, src__) \
2708 msg__ = kmalloc(sizeof(CsrWifiSmePowerConfigGetReq), GFP_KERNEL); \
2709 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_POWER_CONFIG_GET_REQ, dst__, src__);
2710
2711 #define CsrWifiSmePowerConfigGetReqSendTo(dst__, src__) \
2712 { \
2713 CsrWifiSmePowerConfigGetReq *msg__; \
2714 CsrWifiSmePowerConfigGetReqCreate(msg__, dst__, src__); \
2715 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
2716 }
2717
2718 #define CsrWifiSmePowerConfigGetReqSend(src__) \
2719 CsrWifiSmePowerConfigGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__)
2720
2721 /*******************************************************************************
2722
2723 NAME
2724 CsrWifiSmePowerConfigGetCfmSend
2725
2726 DESCRIPTION
2727 This primitive reports the result of the request.
2728
2729 PARAMETERS
2730 queue - Destination Task Queue
2731 status - Reports the result of the request
2732 powerConfig - Returns the current parameters for the power configuration of
2733 the firmware
2734
2735 *******************************************************************************/
2736 #define CsrWifiSmePowerConfigGetCfmCreate(msg__, dst__, src__, status__, powerConfig__) \
2737 msg__ = kmalloc(sizeof(CsrWifiSmePowerConfigGetCfm), GFP_KERNEL); \
2738 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_POWER_CONFIG_GET_CFM, dst__, src__); \
2739 msg__->status = (status__); \
2740 msg__->powerConfig = (powerConfig__);
2741
2742 #define CsrWifiSmePowerConfigGetCfmSendTo(dst__, src__, status__, powerConfig__) \
2743 { \
2744 CsrWifiSmePowerConfigGetCfm *msg__; \
2745 CsrWifiSmePowerConfigGetCfmCreate(msg__, dst__, src__, status__, powerConfig__); \
2746 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
2747 }
2748
2749 #define CsrWifiSmePowerConfigGetCfmSend(dst__, status__, powerConfig__) \
2750 CsrWifiSmePowerConfigGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__, powerConfig__)
2751
2752 /*******************************************************************************
2753
2754 NAME
2755 CsrWifiSmePowerConfigSetReqSend
2756
2757 DESCRIPTION
2758 This primitive sets the value of the PowerConfig parameter.
2759
2760 PARAMETERS
2761 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
2762 powerConfig - Power saving configuration
2763
2764 *******************************************************************************/
2765 #define CsrWifiSmePowerConfigSetReqCreate(msg__, dst__, src__, powerConfig__) \
2766 msg__ = kmalloc(sizeof(CsrWifiSmePowerConfigSetReq), GFP_KERNEL); \
2767 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_POWER_CONFIG_SET_REQ, dst__, src__); \
2768 msg__->powerConfig = (powerConfig__);
2769
2770 #define CsrWifiSmePowerConfigSetReqSendTo(dst__, src__, powerConfig__) \
2771 { \
2772 CsrWifiSmePowerConfigSetReq *msg__; \
2773 CsrWifiSmePowerConfigSetReqCreate(msg__, dst__, src__, powerConfig__); \
2774 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
2775 }
2776
2777 #define CsrWifiSmePowerConfigSetReqSend(src__, powerConfig__) \
2778 CsrWifiSmePowerConfigSetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, powerConfig__)
2779
2780 /*******************************************************************************
2781
2782 NAME
2783 CsrWifiSmePowerConfigSetCfmSend
2784
2785 DESCRIPTION
2786 This primitive reports the result of the request.
2787
2788 PARAMETERS
2789 queue - Destination Task Queue
2790 status - Reports the result of the request
2791
2792 *******************************************************************************/
2793 #define CsrWifiSmePowerConfigSetCfmCreate(msg__, dst__, src__, status__) \
2794 msg__ = kmalloc(sizeof(CsrWifiSmePowerConfigSetCfm), GFP_KERNEL); \
2795 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_POWER_CONFIG_SET_CFM, dst__, src__); \
2796 msg__->status = (status__);
2797
2798 #define CsrWifiSmePowerConfigSetCfmSendTo(dst__, src__, status__) \
2799 { \
2800 CsrWifiSmePowerConfigSetCfm *msg__; \
2801 CsrWifiSmePowerConfigSetCfmCreate(msg__, dst__, src__, status__); \
2802 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
2803 }
2804
2805 #define CsrWifiSmePowerConfigSetCfmSend(dst__, status__) \
2806 CsrWifiSmePowerConfigSetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__)
2807
2808 /*******************************************************************************
2809
2810 NAME
2811 CsrWifiSmeRegulatoryDomainInfoGetReqSend
2812
2813 DESCRIPTION
2814 This primitive gets the value of the RegulatoryDomainInfo parameter.
2815
2816 PARAMETERS
2817 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
2818
2819 *******************************************************************************/
2820 #define CsrWifiSmeRegulatoryDomainInfoGetReqCreate(msg__, dst__, src__) \
2821 msg__ = kmalloc(sizeof(CsrWifiSmeRegulatoryDomainInfoGetReq), GFP_KERNEL); \
2822 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_REGULATORY_DOMAIN_INFO_GET_REQ, dst__, src__);
2823
2824 #define CsrWifiSmeRegulatoryDomainInfoGetReqSendTo(dst__, src__) \
2825 { \
2826 CsrWifiSmeRegulatoryDomainInfoGetReq *msg__; \
2827 CsrWifiSmeRegulatoryDomainInfoGetReqCreate(msg__, dst__, src__); \
2828 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
2829 }
2830
2831 #define CsrWifiSmeRegulatoryDomainInfoGetReqSend(src__) \
2832 CsrWifiSmeRegulatoryDomainInfoGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__)
2833
2834 /*******************************************************************************
2835
2836 NAME
2837 CsrWifiSmeRegulatoryDomainInfoGetCfmSend
2838
2839 DESCRIPTION
2840 This primitive reports the result of the request.
2841
2842 PARAMETERS
2843 queue - Destination Task Queue
2844 status - Reports the result of the request
2845 regDomInfo - Reports information and state related to regulatory domain
2846 operation.
2847
2848 *******************************************************************************/
2849 #define CsrWifiSmeRegulatoryDomainInfoGetCfmCreate(msg__, dst__, src__, status__, regDomInfo__) \
2850 msg__ = kmalloc(sizeof(CsrWifiSmeRegulatoryDomainInfoGetCfm), GFP_KERNEL); \
2851 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_REGULATORY_DOMAIN_INFO_GET_CFM, dst__, src__); \
2852 msg__->status = (status__); \
2853 msg__->regDomInfo = (regDomInfo__);
2854
2855 #define CsrWifiSmeRegulatoryDomainInfoGetCfmSendTo(dst__, src__, status__, regDomInfo__) \
2856 { \
2857 CsrWifiSmeRegulatoryDomainInfoGetCfm *msg__; \
2858 CsrWifiSmeRegulatoryDomainInfoGetCfmCreate(msg__, dst__, src__, status__, regDomInfo__); \
2859 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
2860 }
2861
2862 #define CsrWifiSmeRegulatoryDomainInfoGetCfmSend(dst__, status__, regDomInfo__) \
2863 CsrWifiSmeRegulatoryDomainInfoGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__, regDomInfo__)
2864
2865 /*******************************************************************************
2866
2867 NAME
2868 CsrWifiSmeRoamCompleteIndSend
2869
2870 DESCRIPTION
2871 The SME will send this primitive to all the tasks that have registered to
2872 receive it whenever it completes an attempt to roam to an AP. If the roam
2873 attempt was successful, status will be set to CSR_WIFI_SME_SUCCESS,
2874 otherwise it shall be set to the appropriate error code.
2875
2876 PARAMETERS
2877 queue - Destination Task Queue
2878 interfaceTag - Interface Identifier; unique identifier of an interface
2879 status - Reports the result of the roaming procedure
2880
2881 *******************************************************************************/
2882 #define CsrWifiSmeRoamCompleteIndCreate(msg__, dst__, src__, interfaceTag__, status__) \
2883 msg__ = kmalloc(sizeof(CsrWifiSmeRoamCompleteInd), GFP_KERNEL); \
2884 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_ROAM_COMPLETE_IND, dst__, src__); \
2885 msg__->interfaceTag = (interfaceTag__); \
2886 msg__->status = (status__);
2887
2888 #define CsrWifiSmeRoamCompleteIndSendTo(dst__, src__, interfaceTag__, status__) \
2889 { \
2890 CsrWifiSmeRoamCompleteInd *msg__; \
2891 CsrWifiSmeRoamCompleteIndCreate(msg__, dst__, src__, interfaceTag__, status__); \
2892 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
2893 }
2894
2895 #define CsrWifiSmeRoamCompleteIndSend(dst__, interfaceTag__, status__) \
2896 CsrWifiSmeRoamCompleteIndSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, status__)
2897
2898 /*******************************************************************************
2899
2900 NAME
2901 CsrWifiSmeRoamStartIndSend
2902
2903 DESCRIPTION
2904 The SME will send this primitive to all the tasks that have registered to
2905 receive it whenever it begins an attempt to roam to an AP.
2906 If the wireless manager application connect request specified the SSID
2907 and the BSSID was set to the broadcast address (0xFF 0xFF 0xFF 0xFF 0xFF
2908 0xFF), the SME monitors the signal quality and maintains a list of
2909 candidates to roam to. When the signal quality of the current connection
2910 falls below a threshold, and there is a candidate with better quality,
2911 the SME will attempt to the candidate AP.
2912 If the roaming procedure succeeds, the SME will also issue a Media
2913 Connect indication to inform the wireless manager application of the
2914 change.
2915 NOTE: to prevent the SME from initiating roaming the WMA must specify the
2916 BSSID in the connection request; this forces the SME to connect only to
2917 that AP.
2918 The wireless manager application can obtain statistics for roaming
2919 purposes using CSR_WIFI_SME_CONNECTION_QUALITY_IND and
2920 CSR_WIFI_SME_CONNECTION_STATS_GET_REQ.
2921 When the wireless manager application wishes to roam to another AP, it
2922 must issue a connection request specifying the BSSID of the desired AP.
2923
2924 PARAMETERS
2925 queue - Destination Task Queue
2926 interfaceTag - Interface Identifier; unique identifier of an interface
2927 roamReason - Indicates the reason for starting the roaming procedure
2928 reason80211 - Indicates the reason for deauthentication or disassociation
2929
2930 *******************************************************************************/
2931 #define CsrWifiSmeRoamStartIndCreate(msg__, dst__, src__, interfaceTag__, roamReason__, reason80211__) \
2932 msg__ = kmalloc(sizeof(CsrWifiSmeRoamStartInd), GFP_KERNEL); \
2933 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_ROAM_START_IND, dst__, src__); \
2934 msg__->interfaceTag = (interfaceTag__); \
2935 msg__->roamReason = (roamReason__); \
2936 msg__->reason80211 = (reason80211__);
2937
2938 #define CsrWifiSmeRoamStartIndSendTo(dst__, src__, interfaceTag__, roamReason__, reason80211__) \
2939 { \
2940 CsrWifiSmeRoamStartInd *msg__; \
2941 CsrWifiSmeRoamStartIndCreate(msg__, dst__, src__, interfaceTag__, roamReason__, reason80211__); \
2942 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
2943 }
2944
2945 #define CsrWifiSmeRoamStartIndSend(dst__, interfaceTag__, roamReason__, reason80211__) \
2946 CsrWifiSmeRoamStartIndSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, roamReason__, reason80211__)
2947
2948 /*******************************************************************************
2949
2950 NAME
2951 CsrWifiSmeRoamingConfigGetReqSend
2952
2953 DESCRIPTION
2954 This primitive gets the value of the RoamingConfig parameter.
2955
2956 PARAMETERS
2957 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
2958 interfaceTag - Interface Identifier; unique identifier of an interface
2959
2960 *******************************************************************************/
2961 #define CsrWifiSmeRoamingConfigGetReqCreate(msg__, dst__, src__, interfaceTag__) \
2962 msg__ = kmalloc(sizeof(CsrWifiSmeRoamingConfigGetReq), GFP_KERNEL); \
2963 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_ROAMING_CONFIG_GET_REQ, dst__, src__); \
2964 msg__->interfaceTag = (interfaceTag__);
2965
2966 #define CsrWifiSmeRoamingConfigGetReqSendTo(dst__, src__, interfaceTag__) \
2967 { \
2968 CsrWifiSmeRoamingConfigGetReq *msg__; \
2969 CsrWifiSmeRoamingConfigGetReqCreate(msg__, dst__, src__, interfaceTag__); \
2970 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
2971 }
2972
2973 #define CsrWifiSmeRoamingConfigGetReqSend(src__, interfaceTag__) \
2974 CsrWifiSmeRoamingConfigGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, interfaceTag__)
2975
2976 /*******************************************************************************
2977
2978 NAME
2979 CsrWifiSmeRoamingConfigGetCfmSend
2980
2981 DESCRIPTION
2982 This primitive reports the result of the request.
2983
2984 PARAMETERS
2985 queue - Destination Task Queue
2986 interfaceTag - Interface Identifier; unique identifier of an interface
2987 status - Reports the result of the request
2988 roamingConfig - Reports the roaming behaviour of the driver and firmware
2989
2990 *******************************************************************************/
2991 #define CsrWifiSmeRoamingConfigGetCfmCreate(msg__, dst__, src__, interfaceTag__, status__, roamingConfig__) \
2992 msg__ = kmalloc(sizeof(CsrWifiSmeRoamingConfigGetCfm), GFP_KERNEL); \
2993 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_ROAMING_CONFIG_GET_CFM, dst__, src__); \
2994 msg__->interfaceTag = (interfaceTag__); \
2995 msg__->status = (status__); \
2996 msg__->roamingConfig = (roamingConfig__);
2997
2998 #define CsrWifiSmeRoamingConfigGetCfmSendTo(dst__, src__, interfaceTag__, status__, roamingConfig__) \
2999 { \
3000 CsrWifiSmeRoamingConfigGetCfm *msg__; \
3001 CsrWifiSmeRoamingConfigGetCfmCreate(msg__, dst__, src__, interfaceTag__, status__, roamingConfig__); \
3002 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
3003 }
3004
3005 #define CsrWifiSmeRoamingConfigGetCfmSend(dst__, interfaceTag__, status__, roamingConfig__) \
3006 CsrWifiSmeRoamingConfigGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, status__, roamingConfig__)
3007
3008 /*******************************************************************************
3009
3010 NAME
3011 CsrWifiSmeRoamingConfigSetReqSend
3012
3013 DESCRIPTION
3014 This primitive sets the value of the RoamingConfig parameter.
3015
3016 PARAMETERS
3017 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
3018 interfaceTag - Interface Identifier; unique identifier of an interface
3019 roamingConfig - Desired roaming behaviour values
3020
3021 *******************************************************************************/
3022 #define CsrWifiSmeRoamingConfigSetReqCreate(msg__, dst__, src__, interfaceTag__, roamingConfig__) \
3023 msg__ = kmalloc(sizeof(CsrWifiSmeRoamingConfigSetReq), GFP_KERNEL); \
3024 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_ROAMING_CONFIG_SET_REQ, dst__, src__); \
3025 msg__->interfaceTag = (interfaceTag__); \
3026 msg__->roamingConfig = (roamingConfig__);
3027
3028 #define CsrWifiSmeRoamingConfigSetReqSendTo(dst__, src__, interfaceTag__, roamingConfig__) \
3029 { \
3030 CsrWifiSmeRoamingConfigSetReq *msg__; \
3031 CsrWifiSmeRoamingConfigSetReqCreate(msg__, dst__, src__, interfaceTag__, roamingConfig__); \
3032 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
3033 }
3034
3035 #define CsrWifiSmeRoamingConfigSetReqSend(src__, interfaceTag__, roamingConfig__) \
3036 CsrWifiSmeRoamingConfigSetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, interfaceTag__, roamingConfig__)
3037
3038 /*******************************************************************************
3039
3040 NAME
3041 CsrWifiSmeRoamingConfigSetCfmSend
3042
3043 DESCRIPTION
3044 This primitive sets the value of the RoamingConfig parameter.
3045
3046 PARAMETERS
3047 queue - Destination Task Queue
3048 interfaceTag - Interface Identifier; unique identifier of an interface
3049 status - Reports the result of the request
3050
3051 *******************************************************************************/
3052 #define CsrWifiSmeRoamingConfigSetCfmCreate(msg__, dst__, src__, interfaceTag__, status__) \
3053 msg__ = kmalloc(sizeof(CsrWifiSmeRoamingConfigSetCfm), GFP_KERNEL); \
3054 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_ROAMING_CONFIG_SET_CFM, dst__, src__); \
3055 msg__->interfaceTag = (interfaceTag__); \
3056 msg__->status = (status__);
3057
3058 #define CsrWifiSmeRoamingConfigSetCfmSendTo(dst__, src__, interfaceTag__, status__) \
3059 { \
3060 CsrWifiSmeRoamingConfigSetCfm *msg__; \
3061 CsrWifiSmeRoamingConfigSetCfmCreate(msg__, dst__, src__, interfaceTag__, status__); \
3062 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
3063 }
3064
3065 #define CsrWifiSmeRoamingConfigSetCfmSend(dst__, interfaceTag__, status__) \
3066 CsrWifiSmeRoamingConfigSetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, status__)
3067
3068 /*******************************************************************************
3069
3070 NAME
3071 CsrWifiSmeScanConfigGetReqSend
3072
3073 DESCRIPTION
3074 This primitive gets the value of the ScanConfig parameter.
3075
3076 PARAMETERS
3077 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
3078
3079 *******************************************************************************/
3080 #define CsrWifiSmeScanConfigGetReqCreate(msg__, dst__, src__) \
3081 msg__ = kmalloc(sizeof(CsrWifiSmeScanConfigGetReq), GFP_KERNEL); \
3082 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_SCAN_CONFIG_GET_REQ, dst__, src__);
3083
3084 #define CsrWifiSmeScanConfigGetReqSendTo(dst__, src__) \
3085 { \
3086 CsrWifiSmeScanConfigGetReq *msg__; \
3087 CsrWifiSmeScanConfigGetReqCreate(msg__, dst__, src__); \
3088 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
3089 }
3090
3091 #define CsrWifiSmeScanConfigGetReqSend(src__) \
3092 CsrWifiSmeScanConfigGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__)
3093
3094 /*******************************************************************************
3095
3096 NAME
3097 CsrWifiSmeScanConfigGetCfmSend
3098
3099 DESCRIPTION
3100 This primitive reports the result of the request.
3101
3102 PARAMETERS
3103 queue - Destination Task Queue
3104 status - Reports the result of the request
3105 scanConfig - Returns the current parameters for the autonomous scanning
3106 behaviour of the firmware
3107
3108 *******************************************************************************/
3109 #define CsrWifiSmeScanConfigGetCfmCreate(msg__, dst__, src__, status__, scanConfig__) \
3110 msg__ = kmalloc(sizeof(CsrWifiSmeScanConfigGetCfm), GFP_KERNEL); \
3111 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_SCAN_CONFIG_GET_CFM, dst__, src__); \
3112 msg__->status = (status__); \
3113 msg__->scanConfig = (scanConfig__);
3114
3115 #define CsrWifiSmeScanConfigGetCfmSendTo(dst__, src__, status__, scanConfig__) \
3116 { \
3117 CsrWifiSmeScanConfigGetCfm *msg__; \
3118 CsrWifiSmeScanConfigGetCfmCreate(msg__, dst__, src__, status__, scanConfig__); \
3119 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
3120 }
3121
3122 #define CsrWifiSmeScanConfigGetCfmSend(dst__, status__, scanConfig__) \
3123 CsrWifiSmeScanConfigGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__, scanConfig__)
3124
3125 /*******************************************************************************
3126
3127 NAME
3128 CsrWifiSmeScanConfigSetReqSend
3129
3130 DESCRIPTION
3131 This primitive sets the value of the ScanConfig parameter.
3132 The SME normally configures the firmware to perform autonomous scanning
3133 without involving the host.
3134 The firmware passes beacon / probe response or indicates loss of beacon
3135 on certain changes of state, for example:
3136 * A new AP is seen for the first time
3137 * An AP is no longer visible
3138 * The signal strength of an AP changes by more than a certain amount, as
3139 configured by the thresholds in the scanConfig parameter
3140 In addition to the autonomous scan, the wireless manager application may
3141 request a scan at any time using CSR_WIFI_SME_SCAN_FULL_REQ.
3142
3143 PARAMETERS
3144 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
3145 scanConfig - Reports the configuration for the autonomous scanning behaviour
3146 of the firmware
3147
3148 *******************************************************************************/
3149 #define CsrWifiSmeScanConfigSetReqCreate(msg__, dst__, src__, scanConfig__) \
3150 msg__ = kmalloc(sizeof(CsrWifiSmeScanConfigSetReq), GFP_KERNEL); \
3151 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_SCAN_CONFIG_SET_REQ, dst__, src__); \
3152 msg__->scanConfig = (scanConfig__);
3153
3154 #define CsrWifiSmeScanConfigSetReqSendTo(dst__, src__, scanConfig__) \
3155 { \
3156 CsrWifiSmeScanConfigSetReq *msg__; \
3157 CsrWifiSmeScanConfigSetReqCreate(msg__, dst__, src__, scanConfig__); \
3158 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
3159 }
3160
3161 #define CsrWifiSmeScanConfigSetReqSend(src__, scanConfig__) \
3162 CsrWifiSmeScanConfigSetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, scanConfig__)
3163
3164 /*******************************************************************************
3165
3166 NAME
3167 CsrWifiSmeScanConfigSetCfmSend
3168
3169 DESCRIPTION
3170 This primitive reports the result of the request.
3171
3172 PARAMETERS
3173 queue - Destination Task Queue
3174 status - Reports the result of the request
3175
3176 *******************************************************************************/
3177 #define CsrWifiSmeScanConfigSetCfmCreate(msg__, dst__, src__, status__) \
3178 msg__ = kmalloc(sizeof(CsrWifiSmeScanConfigSetCfm), GFP_KERNEL); \
3179 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_SCAN_CONFIG_SET_CFM, dst__, src__); \
3180 msg__->status = (status__);
3181
3182 #define CsrWifiSmeScanConfigSetCfmSendTo(dst__, src__, status__) \
3183 { \
3184 CsrWifiSmeScanConfigSetCfm *msg__; \
3185 CsrWifiSmeScanConfigSetCfmCreate(msg__, dst__, src__, status__); \
3186 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
3187 }
3188
3189 #define CsrWifiSmeScanConfigSetCfmSend(dst__, status__) \
3190 CsrWifiSmeScanConfigSetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__)
3191
3192 /*******************************************************************************
3193
3194 NAME
3195 CsrWifiSmeScanFullReqSend
3196
3197 DESCRIPTION
3198 The wireless manager application should call this primitive to request a
3199 full scan.
3200 Channels are scanned actively or passively according to the requirement
3201 set by regulatory domain.
3202 If the SME receives this primitive while a full scan is going on, the new
3203 request is buffered and it will be served after the current full scan is
3204 completed.
3205
3206 PARAMETERS
3207 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
3208 ssidCount - Number of SSIDs provided.
3209 If it is 0, the SME will attempt to detect any network
3210 ssid - Points to the first SSID provided, if any.
3211 bssid - BSS identifier.
3212 If it is equal to FF-FF-FF-FF-FF, the SME will listen for
3213 messages from any BSS.
3214 If it is different from FF-FF-FF-FF-FF and any SSID is
3215 provided, one SSID must match the network of the BSS.
3216 forceScan - Forces the scan even if the SME is in a state which would
3217 normally prevent it (e.g. autonomous scan is running).
3218 bssType - Type of BSS to scan for
3219 scanType - Type of scan to perform
3220 channelListCount - Number of channels provided.
3221 If it is 0, the SME will initiate a scan of all the
3222 supported channels that are permitted by the current
3223 regulatory domain.
3224 channelList - Points to the first channel , or NULL if channelListCount
3225 is zero.
3226 probeIeLength - Length of the information element in bytes to be sent
3227 with the probe message.
3228 probeIe - Points to the first byte of the information element to be
3229 sent with the probe message.
3230
3231 *******************************************************************************/
3232 #define CsrWifiSmeScanFullReqCreate(msg__, dst__, src__, ssidCount__, ssid__, bssid__, forceScan__, bssType__, scanType__, channelListCount__, channelList__, probeIeLength__, probeIe__) \
3233 msg__ = kmalloc(sizeof(CsrWifiSmeScanFullReq), GFP_KERNEL); \
3234 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_SCAN_FULL_REQ, dst__, src__); \
3235 msg__->ssidCount = (ssidCount__); \
3236 msg__->ssid = (ssid__); \
3237 msg__->bssid = (bssid__); \
3238 msg__->forceScan = (forceScan__); \
3239 msg__->bssType = (bssType__); \
3240 msg__->scanType = (scanType__); \
3241 msg__->channelListCount = (channelListCount__); \
3242 msg__->channelList = (channelList__); \
3243 msg__->probeIeLength = (probeIeLength__); \
3244 msg__->probeIe = (probeIe__);
3245
3246 #define CsrWifiSmeScanFullReqSendTo(dst__, src__, ssidCount__, ssid__, bssid__, forceScan__, bssType__, scanType__, channelListCount__, channelList__, probeIeLength__, probeIe__) \
3247 { \
3248 CsrWifiSmeScanFullReq *msg__; \
3249 CsrWifiSmeScanFullReqCreate(msg__, dst__, src__, ssidCount__, ssid__, bssid__, forceScan__, bssType__, scanType__, channelListCount__, channelList__, probeIeLength__, probeIe__); \
3250 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
3251 }
3252
3253 #define CsrWifiSmeScanFullReqSend(src__, ssidCount__, ssid__, bssid__, forceScan__, bssType__, scanType__, channelListCount__, channelList__, probeIeLength__, probeIe__) \
3254 CsrWifiSmeScanFullReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, ssidCount__, ssid__, bssid__, forceScan__, bssType__, scanType__, channelListCount__, channelList__, probeIeLength__, probeIe__)
3255
3256 /*******************************************************************************
3257
3258 NAME
3259 CsrWifiSmeScanFullCfmSend
3260
3261 DESCRIPTION
3262 The SME calls this primitive when the results from the scan are
3263 available.
3264
3265 PARAMETERS
3266 queue - Destination Task Queue
3267 status - Reports the result of the request
3268
3269 *******************************************************************************/
3270 #define CsrWifiSmeScanFullCfmCreate(msg__, dst__, src__, status__) \
3271 msg__ = kmalloc(sizeof(CsrWifiSmeScanFullCfm), GFP_KERNEL); \
3272 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_SCAN_FULL_CFM, dst__, src__); \
3273 msg__->status = (status__);
3274
3275 #define CsrWifiSmeScanFullCfmSendTo(dst__, src__, status__) \
3276 { \
3277 CsrWifiSmeScanFullCfm *msg__; \
3278 CsrWifiSmeScanFullCfmCreate(msg__, dst__, src__, status__); \
3279 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
3280 }
3281
3282 #define CsrWifiSmeScanFullCfmSend(dst__, status__) \
3283 CsrWifiSmeScanFullCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__)
3284
3285 /*******************************************************************************
3286
3287 NAME
3288 CsrWifiSmeScanResultIndSend
3289
3290 DESCRIPTION
3291 The SME sends this primitive to all the tasks that have registered to
3292 receive it whenever a scan indication is received from the firmware.
3293
3294 PARAMETERS
3295 queue - Destination Task Queue
3296 result - Points to a buffer containing a scan result.
3297
3298 *******************************************************************************/
3299 #define CsrWifiSmeScanResultIndCreate(msg__, dst__, src__, result__) \
3300 msg__ = kmalloc(sizeof(CsrWifiSmeScanResultInd), GFP_KERNEL); \
3301 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_SCAN_RESULT_IND, dst__, src__); \
3302 msg__->result = (result__);
3303
3304 #define CsrWifiSmeScanResultIndSendTo(dst__, src__, result__) \
3305 { \
3306 CsrWifiSmeScanResultInd *msg__; \
3307 CsrWifiSmeScanResultIndCreate(msg__, dst__, src__, result__); \
3308 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
3309 }
3310
3311 #define CsrWifiSmeScanResultIndSend(dst__, result__) \
3312 CsrWifiSmeScanResultIndSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, result__)
3313
3314 /*******************************************************************************
3315
3316 NAME
3317 CsrWifiSmeScanResultsFlushReqSend
3318
3319 DESCRIPTION
3320 The Wireless Manager calls this primitive to ask the SME to delete all
3321 scan results from its cache, except for the scan result of any currently
3322 connected network.
3323 As scan results are received by the SME from the firmware, they are
3324 cached in the SME memory.
3325 Any time the Wireless Manager requests scan results, they are returned
3326 from the SME internal cache.
3327 For some applications it may be desirable to clear this cache prior to
3328 requesting that a scan be performed; this will ensure that the cache then
3329 only contains the networks detected in the most recent scan.
3330
3331 PARAMETERS
3332 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
3333
3334 *******************************************************************************/
3335 #define CsrWifiSmeScanResultsFlushReqCreate(msg__, dst__, src__) \
3336 msg__ = kmalloc(sizeof(CsrWifiSmeScanResultsFlushReq), GFP_KERNEL); \
3337 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_SCAN_RESULTS_FLUSH_REQ, dst__, src__);
3338
3339 #define CsrWifiSmeScanResultsFlushReqSendTo(dst__, src__) \
3340 { \
3341 CsrWifiSmeScanResultsFlushReq *msg__; \
3342 CsrWifiSmeScanResultsFlushReqCreate(msg__, dst__, src__); \
3343 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
3344 }
3345
3346 #define CsrWifiSmeScanResultsFlushReqSend(src__) \
3347 CsrWifiSmeScanResultsFlushReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__)
3348
3349 /*******************************************************************************
3350
3351 NAME
3352 CsrWifiSmeScanResultsFlushCfmSend
3353
3354 DESCRIPTION
3355 The SME will call this primitive when the cache has been cleared.
3356
3357 PARAMETERS
3358 queue - Destination Task Queue
3359 status - Reports the result of the request
3360
3361 *******************************************************************************/
3362 #define CsrWifiSmeScanResultsFlushCfmCreate(msg__, dst__, src__, status__) \
3363 msg__ = kmalloc(sizeof(CsrWifiSmeScanResultsFlushCfm), GFP_KERNEL); \
3364 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_SCAN_RESULTS_FLUSH_CFM, dst__, src__); \
3365 msg__->status = (status__);
3366
3367 #define CsrWifiSmeScanResultsFlushCfmSendTo(dst__, src__, status__) \
3368 { \
3369 CsrWifiSmeScanResultsFlushCfm *msg__; \
3370 CsrWifiSmeScanResultsFlushCfmCreate(msg__, dst__, src__, status__); \
3371 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
3372 }
3373
3374 #define CsrWifiSmeScanResultsFlushCfmSend(dst__, status__) \
3375 CsrWifiSmeScanResultsFlushCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__)
3376
3377 /*******************************************************************************
3378
3379 NAME
3380 CsrWifiSmeScanResultsGetReqSend
3381
3382 DESCRIPTION
3383 The wireless manager application calls this primitive to retrieve the
3384 current set of scan results, either after receiving a successful
3385 CSR_WIFI_SME_SCAN_FULL_CFM, or to get autonomous scan results.
3386
3387 PARAMETERS
3388 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
3389
3390 *******************************************************************************/
3391 #define CsrWifiSmeScanResultsGetReqCreate(msg__, dst__, src__) \
3392 msg__ = kmalloc(sizeof(CsrWifiSmeScanResultsGetReq), GFP_KERNEL); \
3393 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_SCAN_RESULTS_GET_REQ, dst__, src__);
3394
3395 #define CsrWifiSmeScanResultsGetReqSendTo(dst__, src__) \
3396 { \
3397 CsrWifiSmeScanResultsGetReq *msg__; \
3398 CsrWifiSmeScanResultsGetReqCreate(msg__, dst__, src__); \
3399 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
3400 }
3401
3402 #define CsrWifiSmeScanResultsGetReqSend(src__) \
3403 CsrWifiSmeScanResultsGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__)
3404
3405 /*******************************************************************************
3406
3407 NAME
3408 CsrWifiSmeScanResultsGetCfmSend
3409
3410 DESCRIPTION
3411 The SME sends this primitive to provide the current set of scan results.
3412
3413 PARAMETERS
3414 queue - Destination Task Queue
3415 status - Reports the result of the request
3416 scanResultsCount - Number of scan results
3417 scanResults - Points to a buffer containing an array of
3418 CsrWifiSmeScanResult structures.
3419
3420 *******************************************************************************/
3421 #define CsrWifiSmeScanResultsGetCfmCreate(msg__, dst__, src__, status__, scanResultsCount__, scanResults__) \
3422 msg__ = kmalloc(sizeof(CsrWifiSmeScanResultsGetCfm), GFP_KERNEL); \
3423 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_SCAN_RESULTS_GET_CFM, dst__, src__); \
3424 msg__->status = (status__); \
3425 msg__->scanResultsCount = (scanResultsCount__); \
3426 msg__->scanResults = (scanResults__);
3427
3428 #define CsrWifiSmeScanResultsGetCfmSendTo(dst__, src__, status__, scanResultsCount__, scanResults__) \
3429 { \
3430 CsrWifiSmeScanResultsGetCfm *msg__; \
3431 CsrWifiSmeScanResultsGetCfmCreate(msg__, dst__, src__, status__, scanResultsCount__, scanResults__); \
3432 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
3433 }
3434
3435 #define CsrWifiSmeScanResultsGetCfmSend(dst__, status__, scanResultsCount__, scanResults__) \
3436 CsrWifiSmeScanResultsGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__, scanResultsCount__, scanResults__)
3437
3438 /*******************************************************************************
3439
3440 NAME
3441 CsrWifiSmeSetReqSend
3442
3443 DESCRIPTION
3444 Used to pass custom data to the SME. Format is the same as 802.11 Info
3445 Elements => | Id | Length | Data
3446 1) Cmanr Test Mode "Id:0 Length:1 Data:0x00 = OFF 0x01 = ON" "0x00 0x01
3447 (0x00|0x01)"
3448
3449 PARAMETERS
3450 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
3451 dataLength - Number of bytes in the buffer pointed to by 'data'
3452 data - Pointer to the buffer containing 'dataLength' bytes
3453
3454 *******************************************************************************/
3455 #define CsrWifiSmeSetReqCreate(msg__, dst__, src__, dataLength__, data__) \
3456 msg__ = kmalloc(sizeof(CsrWifiSmeSetReq), GFP_KERNEL); \
3457 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_SET_REQ, dst__, src__); \
3458 msg__->dataLength = (dataLength__); \
3459 msg__->data = (data__);
3460
3461 #define CsrWifiSmeSetReqSendTo(dst__, src__, dataLength__, data__) \
3462 { \
3463 CsrWifiSmeSetReq *msg__; \
3464 CsrWifiSmeSetReqCreate(msg__, dst__, src__, dataLength__, data__); \
3465 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
3466 }
3467
3468 #define CsrWifiSmeSetReqSend(src__, dataLength__, data__) \
3469 CsrWifiSmeSetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, dataLength__, data__)
3470
3471 /*******************************************************************************
3472
3473 NAME
3474 CsrWifiSmeSmeCommonConfigGetReqSend
3475
3476 DESCRIPTION
3477 This primitive gets the value of the Sme common parameter.
3478
3479 PARAMETERS
3480 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
3481
3482 *******************************************************************************/
3483 #define CsrWifiSmeSmeCommonConfigGetReqCreate(msg__, dst__, src__) \
3484 msg__ = kmalloc(sizeof(CsrWifiSmeSmeCommonConfigGetReq), GFP_KERNEL); \
3485 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_SME_COMMON_CONFIG_GET_REQ, dst__, src__);
3486
3487 #define CsrWifiSmeSmeCommonConfigGetReqSendTo(dst__, src__) \
3488 { \
3489 CsrWifiSmeSmeCommonConfigGetReq *msg__; \
3490 CsrWifiSmeSmeCommonConfigGetReqCreate(msg__, dst__, src__); \
3491 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
3492 }
3493
3494 #define CsrWifiSmeSmeCommonConfigGetReqSend(src__) \
3495 CsrWifiSmeSmeCommonConfigGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__)
3496
3497 /*******************************************************************************
3498
3499 NAME
3500 CsrWifiSmeSmeCommonConfigGetCfmSend
3501
3502 DESCRIPTION
3503 This primitive reports the result of the request.
3504
3505 PARAMETERS
3506 queue - Destination Task Queue
3507 status - Reports the result of the request
3508 deviceConfig - Configuration options in the SME
3509
3510 *******************************************************************************/
3511 #define CsrWifiSmeSmeCommonConfigGetCfmCreate(msg__, dst__, src__, status__, deviceConfig__) \
3512 msg__ = kmalloc(sizeof(CsrWifiSmeSmeCommonConfigGetCfm), GFP_KERNEL); \
3513 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_SME_COMMON_CONFIG_GET_CFM, dst__, src__); \
3514 msg__->status = (status__); \
3515 msg__->deviceConfig = (deviceConfig__);
3516
3517 #define CsrWifiSmeSmeCommonConfigGetCfmSendTo(dst__, src__, status__, deviceConfig__) \
3518 { \
3519 CsrWifiSmeSmeCommonConfigGetCfm *msg__; \
3520 CsrWifiSmeSmeCommonConfigGetCfmCreate(msg__, dst__, src__, status__, deviceConfig__); \
3521 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
3522 }
3523
3524 #define CsrWifiSmeSmeCommonConfigGetCfmSend(dst__, status__, deviceConfig__) \
3525 CsrWifiSmeSmeCommonConfigGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__, deviceConfig__)
3526
3527 /*******************************************************************************
3528
3529 NAME
3530 CsrWifiSmeSmeCommonConfigSetReqSend
3531
3532 DESCRIPTION
3533 This primitive sets the value of the Sme common.
3534
3535 PARAMETERS
3536 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
3537 deviceConfig - Configuration options in the SME
3538
3539 *******************************************************************************/
3540 #define CsrWifiSmeSmeCommonConfigSetReqCreate(msg__, dst__, src__, deviceConfig__) \
3541 msg__ = kmalloc(sizeof(CsrWifiSmeSmeCommonConfigSetReq), GFP_KERNEL); \
3542 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_SME_COMMON_CONFIG_SET_REQ, dst__, src__); \
3543 msg__->deviceConfig = (deviceConfig__);
3544
3545 #define CsrWifiSmeSmeCommonConfigSetReqSendTo(dst__, src__, deviceConfig__) \
3546 { \
3547 CsrWifiSmeSmeCommonConfigSetReq *msg__; \
3548 CsrWifiSmeSmeCommonConfigSetReqCreate(msg__, dst__, src__, deviceConfig__); \
3549 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
3550 }
3551
3552 #define CsrWifiSmeSmeCommonConfigSetReqSend(src__, deviceConfig__) \
3553 CsrWifiSmeSmeCommonConfigSetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, deviceConfig__)
3554
3555 /*******************************************************************************
3556
3557 NAME
3558 CsrWifiSmeSmeCommonConfigSetCfmSend
3559
3560 DESCRIPTION
3561 Reports the result of the request
3562
3563 PARAMETERS
3564 queue - Destination Task Queue
3565 status - Reports the result of the request
3566
3567 *******************************************************************************/
3568 #define CsrWifiSmeSmeCommonConfigSetCfmCreate(msg__, dst__, src__, status__) \
3569 msg__ = kmalloc(sizeof(CsrWifiSmeSmeCommonConfigSetCfm), GFP_KERNEL); \
3570 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_SME_COMMON_CONFIG_SET_CFM, dst__, src__); \
3571 msg__->status = (status__);
3572
3573 #define CsrWifiSmeSmeCommonConfigSetCfmSendTo(dst__, src__, status__) \
3574 { \
3575 CsrWifiSmeSmeCommonConfigSetCfm *msg__; \
3576 CsrWifiSmeSmeCommonConfigSetCfmCreate(msg__, dst__, src__, status__); \
3577 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
3578 }
3579
3580 #define CsrWifiSmeSmeCommonConfigSetCfmSend(dst__, status__) \
3581 CsrWifiSmeSmeCommonConfigSetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__)
3582
3583 /*******************************************************************************
3584
3585 NAME
3586 CsrWifiSmeSmeStaConfigGetReqSend
3587
3588 DESCRIPTION
3589 This primitive gets the value of the SmeStaConfig parameter.
3590
3591 PARAMETERS
3592 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
3593 interfaceTag - Interface Identifier; unique identifier of an interface
3594
3595 *******************************************************************************/
3596 #define CsrWifiSmeSmeStaConfigGetReqCreate(msg__, dst__, src__, interfaceTag__) \
3597 msg__ = kmalloc(sizeof(CsrWifiSmeSmeStaConfigGetReq), GFP_KERNEL); \
3598 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_SME_STA_CONFIG_GET_REQ, dst__, src__); \
3599 msg__->interfaceTag = (interfaceTag__);
3600
3601 #define CsrWifiSmeSmeStaConfigGetReqSendTo(dst__, src__, interfaceTag__) \
3602 { \
3603 CsrWifiSmeSmeStaConfigGetReq *msg__; \
3604 CsrWifiSmeSmeStaConfigGetReqCreate(msg__, dst__, src__, interfaceTag__); \
3605 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
3606 }
3607
3608 #define CsrWifiSmeSmeStaConfigGetReqSend(src__, interfaceTag__) \
3609 CsrWifiSmeSmeStaConfigGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, interfaceTag__)
3610
3611 /*******************************************************************************
3612
3613 NAME
3614 CsrWifiSmeSmeStaConfigGetCfmSend
3615
3616 DESCRIPTION
3617 This primitive reports the result of the request.
3618
3619 PARAMETERS
3620 queue - Destination Task Queue
3621 interfaceTag - Interface Identifier; unique identifier of an interface
3622 status - Reports the result of the request
3623 smeConfig - Current SME Station Parameters
3624
3625 *******************************************************************************/
3626 #define CsrWifiSmeSmeStaConfigGetCfmCreate(msg__, dst__, src__, interfaceTag__, status__, smeConfig__) \
3627 msg__ = kmalloc(sizeof(CsrWifiSmeSmeStaConfigGetCfm), GFP_KERNEL); \
3628 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_SME_STA_CONFIG_GET_CFM, dst__, src__); \
3629 msg__->interfaceTag = (interfaceTag__); \
3630 msg__->status = (status__); \
3631 msg__->smeConfig = (smeConfig__);
3632
3633 #define CsrWifiSmeSmeStaConfigGetCfmSendTo(dst__, src__, interfaceTag__, status__, smeConfig__) \
3634 { \
3635 CsrWifiSmeSmeStaConfigGetCfm *msg__; \
3636 CsrWifiSmeSmeStaConfigGetCfmCreate(msg__, dst__, src__, interfaceTag__, status__, smeConfig__); \
3637 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
3638 }
3639
3640 #define CsrWifiSmeSmeStaConfigGetCfmSend(dst__, interfaceTag__, status__, smeConfig__) \
3641 CsrWifiSmeSmeStaConfigGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, status__, smeConfig__)
3642
3643 /*******************************************************************************
3644
3645 NAME
3646 CsrWifiSmeSmeStaConfigSetReqSend
3647
3648 DESCRIPTION
3649 This primitive sets the value of the SmeConfig parameter.
3650
3651 PARAMETERS
3652 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
3653 interfaceTag - Interface Identifier; unique identifier of an interface
3654 smeConfig - SME Station Parameters to be set
3655
3656 *******************************************************************************/
3657 #define CsrWifiSmeSmeStaConfigSetReqCreate(msg__, dst__, src__, interfaceTag__, smeConfig__) \
3658 msg__ = kmalloc(sizeof(CsrWifiSmeSmeStaConfigSetReq), GFP_KERNEL); \
3659 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_SME_STA_CONFIG_SET_REQ, dst__, src__); \
3660 msg__->interfaceTag = (interfaceTag__); \
3661 msg__->smeConfig = (smeConfig__);
3662
3663 #define CsrWifiSmeSmeStaConfigSetReqSendTo(dst__, src__, interfaceTag__, smeConfig__) \
3664 { \
3665 CsrWifiSmeSmeStaConfigSetReq *msg__; \
3666 CsrWifiSmeSmeStaConfigSetReqCreate(msg__, dst__, src__, interfaceTag__, smeConfig__); \
3667 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
3668 }
3669
3670 #define CsrWifiSmeSmeStaConfigSetReqSend(src__, interfaceTag__, smeConfig__) \
3671 CsrWifiSmeSmeStaConfigSetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, interfaceTag__, smeConfig__)
3672
3673 /*******************************************************************************
3674
3675 NAME
3676 CsrWifiSmeSmeStaConfigSetCfmSend
3677
3678 DESCRIPTION
3679 This primitive reports the result of the request.
3680
3681 PARAMETERS
3682 queue - Destination Task Queue
3683 interfaceTag - Interface Identifier; unique identifier of an interface
3684 status - Reports the result of the request
3685
3686 *******************************************************************************/
3687 #define CsrWifiSmeSmeStaConfigSetCfmCreate(msg__, dst__, src__, interfaceTag__, status__) \
3688 msg__ = kmalloc(sizeof(CsrWifiSmeSmeStaConfigSetCfm), GFP_KERNEL); \
3689 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_SME_STA_CONFIG_SET_CFM, dst__, src__); \
3690 msg__->interfaceTag = (interfaceTag__); \
3691 msg__->status = (status__);
3692
3693 #define CsrWifiSmeSmeStaConfigSetCfmSendTo(dst__, src__, interfaceTag__, status__) \
3694 { \
3695 CsrWifiSmeSmeStaConfigSetCfm *msg__; \
3696 CsrWifiSmeSmeStaConfigSetCfmCreate(msg__, dst__, src__, interfaceTag__, status__); \
3697 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
3698 }
3699
3700 #define CsrWifiSmeSmeStaConfigSetCfmSend(dst__, interfaceTag__, status__) \
3701 CsrWifiSmeSmeStaConfigSetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, status__)
3702
3703 /*******************************************************************************
3704
3705 NAME
3706 CsrWifiSmeStationMacAddressGetReqSend
3707
3708 DESCRIPTION
3709 This primitives is used to retrieve the current MAC address used by the
3710 station.
3711
3712 PARAMETERS
3713 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
3714
3715 *******************************************************************************/
3716 #define CsrWifiSmeStationMacAddressGetReqCreate(msg__, dst__, src__) \
3717 msg__ = kmalloc(sizeof(CsrWifiSmeStationMacAddressGetReq), GFP_KERNEL); \
3718 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_STATION_MAC_ADDRESS_GET_REQ, dst__, src__);
3719
3720 #define CsrWifiSmeStationMacAddressGetReqSendTo(dst__, src__) \
3721 { \
3722 CsrWifiSmeStationMacAddressGetReq *msg__; \
3723 CsrWifiSmeStationMacAddressGetReqCreate(msg__, dst__, src__); \
3724 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
3725 }
3726
3727 #define CsrWifiSmeStationMacAddressGetReqSend(src__) \
3728 CsrWifiSmeStationMacAddressGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__)
3729
3730 /*******************************************************************************
3731
3732 NAME
3733 CsrWifiSmeStationMacAddressGetCfmSend
3734
3735 DESCRIPTION
3736 This primitive reports the result of the request.
3737
3738 PARAMETERS
3739 queue - Destination Task Queue
3740 status - Reports the result of the request
3741 stationMacAddress - Current MAC address of the station.
3742
3743 *******************************************************************************/
3744 #define CsrWifiSmeStationMacAddressGetCfmCreate(msg__, dst__, src__, status__, stationMacAddress__) \
3745 msg__ = kmalloc(sizeof(CsrWifiSmeStationMacAddressGetCfm), GFP_KERNEL); \
3746 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_STATION_MAC_ADDRESS_GET_CFM, dst__, src__); \
3747 msg__->status = (status__); \
3748 memcpy(msg__->stationMacAddress, (stationMacAddress__), sizeof(CsrWifiMacAddress) * 2);
3749
3750 #define CsrWifiSmeStationMacAddressGetCfmSendTo(dst__, src__, status__, stationMacAddress__) \
3751 { \
3752 CsrWifiSmeStationMacAddressGetCfm *msg__; \
3753 CsrWifiSmeStationMacAddressGetCfmCreate(msg__, dst__, src__, status__, stationMacAddress__); \
3754 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
3755 }
3756
3757 #define CsrWifiSmeStationMacAddressGetCfmSend(dst__, status__, stationMacAddress__) \
3758 CsrWifiSmeStationMacAddressGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__, stationMacAddress__)
3759
3760 /*******************************************************************************
3761
3762 NAME
3763 CsrWifiSmeTspecReqSend
3764
3765 DESCRIPTION
3766 The wireless manager application should call this primitive to use the
3767 TSPEC feature.
3768 The chip supports the use of TSPECs and TCLAS for the use of IEEE
3769 802.11/WMM Quality of Service features.
3770 The API allows the wireless manager application to supply a correctly
3771 formatted TSPEC and TCLAS pair to the driver.
3772 After performing basic validation, the driver negotiates the installation
3773 of the TSPEC with the AP as defined by the 802.11 specification.
3774 The driver retains all TSPEC and TCLAS pairs until they are specifically
3775 removed.
3776 It is not compulsory for a TSPEC to have a TCLAS (NULL is used to
3777 indicate that no TCLAS is supplied), while a TCLASS always require a
3778 TSPEC.
3779 The format of the TSPEC element is specified in 'WMM (including WMM Power
3780 Save) Specification - Version 1.1' and 'ANSI/IEEE Std 802.11-REVmb/D3.0'.
3781 For more information, see 'UniFi Configuring WMM and WMM-PS'.
3782
3783 PARAMETERS
3784 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
3785 interfaceTag - Interface Identifier; unique identifier of an interface
3786 action - Specifies the action to be carried out on the list of TSPECs.
3787 CSR_WIFI_SME_LIST_ACTION_FLUSH is not applicable here.
3788 transactionId - Unique Transaction ID for the TSPEC, as assigned by the
3789 driver
3790 strict - If it set to false, allows the SME to perform automatic
3791 TSPEC negotiation
3792 ctrlMask - Additional TSPEC configuration for CCX.
3793 Set mask with values from CsrWifiSmeTspecCtrl.
3794 CURRENTLY NOT SUPPORTED
3795 tspecLength - Length of the TSPEC.
3796 tspec - Points to the first byte of the TSPEC
3797 tclasLength - Length of the TCLAS.
3798 If it is equal to 0, no TCLASS is provided for the TSPEC
3799 tclas - Points to the first byte of the TCLAS, if any.
3800
3801 *******************************************************************************/
3802 #define CsrWifiSmeTspecReqCreate(msg__, dst__, src__, interfaceTag__, action__, transactionId__, strict__, ctrlMask__, tspecLength__, tspec__, tclasLength__, tclas__) \
3803 msg__ = kmalloc(sizeof(CsrWifiSmeTspecReq), GFP_KERNEL); \
3804 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_TSPEC_REQ, dst__, src__); \
3805 msg__->interfaceTag = (interfaceTag__); \
3806 msg__->action = (action__); \
3807 msg__->transactionId = (transactionId__); \
3808 msg__->strict = (strict__); \
3809 msg__->ctrlMask = (ctrlMask__); \
3810 msg__->tspecLength = (tspecLength__); \
3811 msg__->tspec = (tspec__); \
3812 msg__->tclasLength = (tclasLength__); \
3813 msg__->tclas = (tclas__);
3814
3815 #define CsrWifiSmeTspecReqSendTo(dst__, src__, interfaceTag__, action__, transactionId__, strict__, ctrlMask__, tspecLength__, tspec__, tclasLength__, tclas__) \
3816 { \
3817 CsrWifiSmeTspecReq *msg__; \
3818 CsrWifiSmeTspecReqCreate(msg__, dst__, src__, interfaceTag__, action__, transactionId__, strict__, ctrlMask__, tspecLength__, tspec__, tclasLength__, tclas__); \
3819 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
3820 }
3821
3822 #define CsrWifiSmeTspecReqSend(src__, interfaceTag__, action__, transactionId__, strict__, ctrlMask__, tspecLength__, tspec__, tclasLength__, tclas__) \
3823 CsrWifiSmeTspecReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, interfaceTag__, action__, transactionId__, strict__, ctrlMask__, tspecLength__, tspec__, tclasLength__, tclas__)
3824
3825 /*******************************************************************************
3826
3827 NAME
3828 CsrWifiSmeTspecIndSend
3829
3830 DESCRIPTION
3831 The SME will send this primitive to all the task that have registered to
3832 receive it when a status change in the TSPEC occurs.
3833
3834 PARAMETERS
3835 queue - Destination Task Queue
3836 interfaceTag - Interface Identifier; unique identifier of an interface
3837 transactionId - Unique Transaction ID for the TSPEC, as assigned by the
3838 driver
3839 tspecResultCode - Specifies the TSPEC operation requested by the peer
3840 station
3841 tspecLength - Length of the TSPEC.
3842 tspec - Points to the first byte of the TSPEC
3843
3844 *******************************************************************************/
3845 #define CsrWifiSmeTspecIndCreate(msg__, dst__, src__, interfaceTag__, transactionId__, tspecResultCode__, tspecLength__, tspec__) \
3846 msg__ = kmalloc(sizeof(CsrWifiSmeTspecInd), GFP_KERNEL); \
3847 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_TSPEC_IND, dst__, src__); \
3848 msg__->interfaceTag = (interfaceTag__); \
3849 msg__->transactionId = (transactionId__); \
3850 msg__->tspecResultCode = (tspecResultCode__); \
3851 msg__->tspecLength = (tspecLength__); \
3852 msg__->tspec = (tspec__);
3853
3854 #define CsrWifiSmeTspecIndSendTo(dst__, src__, interfaceTag__, transactionId__, tspecResultCode__, tspecLength__, tspec__) \
3855 { \
3856 CsrWifiSmeTspecInd *msg__; \
3857 CsrWifiSmeTspecIndCreate(msg__, dst__, src__, interfaceTag__, transactionId__, tspecResultCode__, tspecLength__, tspec__); \
3858 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
3859 }
3860
3861 #define CsrWifiSmeTspecIndSend(dst__, interfaceTag__, transactionId__, tspecResultCode__, tspecLength__, tspec__) \
3862 CsrWifiSmeTspecIndSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, transactionId__, tspecResultCode__, tspecLength__, tspec__)
3863
3864 /*******************************************************************************
3865
3866 NAME
3867 CsrWifiSmeTspecCfmSend
3868
3869 DESCRIPTION
3870 The SME calls the primitive to report the result of the TSpec primitive
3871 request.
3872
3873 PARAMETERS
3874 queue - Destination Task Queue
3875 interfaceTag - Interface Identifier; unique identifier of an interface
3876 status - Reports the result of the request
3877 transactionId - Unique Transaction ID for the TSPEC, as assigned by the
3878 driver
3879 tspecResultCode - Specifies the result of the negotiated TSPEC operation
3880 tspecLength - Length of the TSPEC.
3881 tspec - Points to the first byte of the TSPEC
3882
3883 *******************************************************************************/
3884 #define CsrWifiSmeTspecCfmCreate(msg__, dst__, src__, interfaceTag__, status__, transactionId__, tspecResultCode__, tspecLength__, tspec__) \
3885 msg__ = kmalloc(sizeof(CsrWifiSmeTspecCfm), GFP_KERNEL); \
3886 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_TSPEC_CFM, dst__, src__); \
3887 msg__->interfaceTag = (interfaceTag__); \
3888 msg__->status = (status__); \
3889 msg__->transactionId = (transactionId__); \
3890 msg__->tspecResultCode = (tspecResultCode__); \
3891 msg__->tspecLength = (tspecLength__); \
3892 msg__->tspec = (tspec__);
3893
3894 #define CsrWifiSmeTspecCfmSendTo(dst__, src__, interfaceTag__, status__, transactionId__, tspecResultCode__, tspecLength__, tspec__) \
3895 { \
3896 CsrWifiSmeTspecCfm *msg__; \
3897 CsrWifiSmeTspecCfmCreate(msg__, dst__, src__, interfaceTag__, status__, transactionId__, tspecResultCode__, tspecLength__, tspec__); \
3898 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
3899 }
3900
3901 #define CsrWifiSmeTspecCfmSend(dst__, interfaceTag__, status__, transactionId__, tspecResultCode__, tspecLength__, tspec__) \
3902 CsrWifiSmeTspecCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, interfaceTag__, status__, transactionId__, tspecResultCode__, tspecLength__, tspec__)
3903
3904 /*******************************************************************************
3905
3906 NAME
3907 CsrWifiSmeVersionsGetReqSend
3908
3909 DESCRIPTION
3910 This primitive gets the value of the Versions parameter.
3911
3912 PARAMETERS
3913 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
3914
3915 *******************************************************************************/
3916 #define CsrWifiSmeVersionsGetReqCreate(msg__, dst__, src__) \
3917 msg__ = kmalloc(sizeof(CsrWifiSmeVersionsGetReq), GFP_KERNEL); \
3918 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_VERSIONS_GET_REQ, dst__, src__);
3919
3920 #define CsrWifiSmeVersionsGetReqSendTo(dst__, src__) \
3921 { \
3922 CsrWifiSmeVersionsGetReq *msg__; \
3923 CsrWifiSmeVersionsGetReqCreate(msg__, dst__, src__); \
3924 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
3925 }
3926
3927 #define CsrWifiSmeVersionsGetReqSend(src__) \
3928 CsrWifiSmeVersionsGetReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__)
3929
3930 /*******************************************************************************
3931
3932 NAME
3933 CsrWifiSmeVersionsGetCfmSend
3934
3935 DESCRIPTION
3936 This primitive reports the result of the request.
3937
3938 PARAMETERS
3939 queue - Destination Task Queue
3940 status - Reports the result of the request
3941 versions - Version IDs of the product
3942
3943 *******************************************************************************/
3944 #define CsrWifiSmeVersionsGetCfmCreate(msg__, dst__, src__, status__, versions__) \
3945 msg__ = kmalloc(sizeof(CsrWifiSmeVersionsGetCfm), GFP_KERNEL); \
3946 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_VERSIONS_GET_CFM, dst__, src__); \
3947 msg__->status = (status__); \
3948 msg__->versions = (versions__);
3949
3950 #define CsrWifiSmeVersionsGetCfmSendTo(dst__, src__, status__, versions__) \
3951 { \
3952 CsrWifiSmeVersionsGetCfm *msg__; \
3953 CsrWifiSmeVersionsGetCfmCreate(msg__, dst__, src__, status__, versions__); \
3954 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
3955 }
3956
3957 #define CsrWifiSmeVersionsGetCfmSend(dst__, status__, versions__) \
3958 CsrWifiSmeVersionsGetCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__, versions__)
3959
3960 /*******************************************************************************
3961
3962 NAME
3963 CsrWifiSmeWifiFlightmodeReqSend
3964
3965 DESCRIPTION
3966 The wireless manager application may call this primitive on boot-up of
3967 the platform to ensure that the chip is placed in a mode that prevents
3968 any emission of RF energy.
3969 This primitive is an alternative to CSR_WIFI_SME_WIFI_ON_REQ.
3970 As in CSR_WIFI_SME_WIFI_ON_REQ, it causes the download of the patch file
3971 (if any) and the programming of the initial MIB settings (if supplied by
3972 the WMA), but it also ensures that the chip is left in its lowest
3973 possible power-mode with the radio subsystems disabled.
3974 This feature is useful on platforms where power cannot be removed from
3975 the chip (leaving the chip not initialised will cause it to consume more
3976 power so calling this function ensures that the chip is initialised into
3977 a low power mode but without entering a state where it could emit any RF
3978 energy).
3979 NOTE: this primitive does not cause the Wi-Fi to change state: Wi-Fi
3980 stays conceptually off. Configuration primitives can be sent after
3981 CSR_WIFI_SME_WIFI_FLIGHTMODE_REQ and the configuration will be maintained.
3982 Requests that require the state of the Wi-Fi to be ON will return
3983 CSR_WIFI_SME_STATUS_WIFI_OFF in their confirms.
3984
3985 PARAMETERS
3986 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
3987 address - Optionally specifies a station MAC address.
3988 In normal use, the manager should set the address to 0xFF
3989 0xFF 0xFF 0xFF 0xFF 0xFF, which will cause the chip to use
3990 the MAC address in the MIB.
3991 mibFilesCount - Number of provided data blocks with initial MIB values
3992 mibFiles - Points to the first data block with initial MIB values.
3993 These data blocks are typically the contents of the provided
3994 files ufmib.dat and localmib.dat, available from the host
3995 file system, if they exist.
3996 These files typically contain radio tuning and calibration
3997 values.
3998 More values can be created using the Host Tools.
3999
4000 *******************************************************************************/
4001 #define CsrWifiSmeWifiFlightmodeReqCreate(msg__, dst__, src__, address__, mibFilesCount__, mibFiles__) \
4002 msg__ = kmalloc(sizeof(CsrWifiSmeWifiFlightmodeReq), GFP_KERNEL); \
4003 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_WIFI_FLIGHTMODE_REQ, dst__, src__); \
4004 msg__->address = (address__); \
4005 msg__->mibFilesCount = (mibFilesCount__); \
4006 msg__->mibFiles = (mibFiles__);
4007
4008 #define CsrWifiSmeWifiFlightmodeReqSendTo(dst__, src__, address__, mibFilesCount__, mibFiles__) \
4009 { \
4010 CsrWifiSmeWifiFlightmodeReq *msg__; \
4011 CsrWifiSmeWifiFlightmodeReqCreate(msg__, dst__, src__, address__, mibFilesCount__, mibFiles__); \
4012 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
4013 }
4014
4015 #define CsrWifiSmeWifiFlightmodeReqSend(src__, address__, mibFilesCount__, mibFiles__) \
4016 CsrWifiSmeWifiFlightmodeReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, address__, mibFilesCount__, mibFiles__)
4017
4018 /*******************************************************************************
4019
4020 NAME
4021 CsrWifiSmeWifiFlightmodeCfmSend
4022
4023 DESCRIPTION
4024 The SME calls this primitive when the chip is initialised for low power
4025 mode and with the radio subsystem disabled. To leave flight mode, and
4026 enable Wi-Fi, the wireless manager application should call
4027 CSR_WIFI_SME_WIFI_ON_REQ.
4028
4029 PARAMETERS
4030 queue - Destination Task Queue
4031 status - Reports the result of the request
4032
4033 *******************************************************************************/
4034 #define CsrWifiSmeWifiFlightmodeCfmCreate(msg__, dst__, src__, status__) \
4035 msg__ = kmalloc(sizeof(CsrWifiSmeWifiFlightmodeCfm), GFP_KERNEL); \
4036 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_WIFI_FLIGHTMODE_CFM, dst__, src__); \
4037 msg__->status = (status__);
4038
4039 #define CsrWifiSmeWifiFlightmodeCfmSendTo(dst__, src__, status__) \
4040 { \
4041 CsrWifiSmeWifiFlightmodeCfm *msg__; \
4042 CsrWifiSmeWifiFlightmodeCfmCreate(msg__, dst__, src__, status__); \
4043 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
4044 }
4045
4046 #define CsrWifiSmeWifiFlightmodeCfmSend(dst__, status__) \
4047 CsrWifiSmeWifiFlightmodeCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__)
4048
4049 /*******************************************************************************
4050
4051 NAME
4052 CsrWifiSmeWifiOffReqSend
4053
4054 DESCRIPTION
4055 The wireless manager application calls this primitive to turn off the
4056 chip, thus saving power when Wi-Fi is not in use.
4057
4058 PARAMETERS
4059 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
4060
4061 *******************************************************************************/
4062 #define CsrWifiSmeWifiOffReqCreate(msg__, dst__, src__) \
4063 msg__ = kmalloc(sizeof(CsrWifiSmeWifiOffReq), GFP_KERNEL); \
4064 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_WIFI_OFF_REQ, dst__, src__);
4065
4066 #define CsrWifiSmeWifiOffReqSendTo(dst__, src__) \
4067 { \
4068 CsrWifiSmeWifiOffReq *msg__; \
4069 CsrWifiSmeWifiOffReqCreate(msg__, dst__, src__); \
4070 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
4071 }
4072
4073 #define CsrWifiSmeWifiOffReqSend(src__) \
4074 CsrWifiSmeWifiOffReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__)
4075
4076 /*******************************************************************************
4077
4078 NAME
4079 CsrWifiSmeWifiOffIndSend
4080
4081 DESCRIPTION
4082 The SME sends this primitive to all the tasks that have registered to
4083 receive it to report that the chip has been turned off.
4084
4085 PARAMETERS
4086 queue - Destination Task Queue
4087 reason - Indicates the reason why the Wi-Fi has been switched off.
4088
4089 *******************************************************************************/
4090 #define CsrWifiSmeWifiOffIndCreate(msg__, dst__, src__, reason__) \
4091 msg__ = kmalloc(sizeof(CsrWifiSmeWifiOffInd), GFP_KERNEL); \
4092 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_WIFI_OFF_IND, dst__, src__); \
4093 msg__->reason = (reason__);
4094
4095 #define CsrWifiSmeWifiOffIndSendTo(dst__, src__, reason__) \
4096 { \
4097 CsrWifiSmeWifiOffInd *msg__; \
4098 CsrWifiSmeWifiOffIndCreate(msg__, dst__, src__, reason__); \
4099 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
4100 }
4101
4102 #define CsrWifiSmeWifiOffIndSend(dst__, reason__) \
4103 CsrWifiSmeWifiOffIndSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, reason__)
4104
4105 /*******************************************************************************
4106
4107 NAME
4108 CsrWifiSmeWifiOffCfmSend
4109
4110 DESCRIPTION
4111 After receiving CSR_WIFI_SME_WIFI_OFF_REQ, if the chip is connected to a
4112 network, the SME will perform a disconnect operation, will send a
4113 CSR_WIFI_SME_MEDIA_STATUS_IND with
4114 CSR_WIFI_SME_MEDIA_STATUS_DISCONNECTED, and then will call
4115 CSR_WIFI_SME_WIFI_OFF_CFM when the chip is off.
4116
4117 PARAMETERS
4118 queue - Destination Task Queue
4119 status - Reports the result of the request
4120
4121 *******************************************************************************/
4122 #define CsrWifiSmeWifiOffCfmCreate(msg__, dst__, src__, status__) \
4123 msg__ = kmalloc(sizeof(CsrWifiSmeWifiOffCfm), GFP_KERNEL); \
4124 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_WIFI_OFF_CFM, dst__, src__); \
4125 msg__->status = (status__);
4126
4127 #define CsrWifiSmeWifiOffCfmSendTo(dst__, src__, status__) \
4128 { \
4129 CsrWifiSmeWifiOffCfm *msg__; \
4130 CsrWifiSmeWifiOffCfmCreate(msg__, dst__, src__, status__); \
4131 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
4132 }
4133
4134 #define CsrWifiSmeWifiOffCfmSend(dst__, status__) \
4135 CsrWifiSmeWifiOffCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__)
4136
4137 /*******************************************************************************
4138
4139 NAME
4140 CsrWifiSmeWifiOnReqSend
4141
4142 DESCRIPTION
4143 The wireless manager application calls this primitive to turn on the
4144 Wi-Fi chip.
4145 If the Wi-Fi chip is currently off, the SME turns the Wi-Fi chip on,
4146 downloads the patch file (if any), and programs the initial MIB settings
4147 (if supplied by the WMA).
4148 The patch file is not provided with the SME API; its downloading is
4149 automatic and handled internally by the system.
4150 The MIB settings, when provided, override the default values that the
4151 firmware loads from EEPROM.
4152 If the Wi-Fi chip is already on, the SME takes no action and returns a
4153 successful status in the confirm.
4154
4155 PARAMETERS
4156 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
4157 address - Optionally specifies a station MAC address.
4158 In normal use, the manager should set the address to 0xFF
4159 0xFF 0xFF 0xFF 0xFF 0xFF, which will cause the chip to use
4160 the MAC address in the MIB
4161 mibFilesCount - Number of provided data blocks with initial MIB values
4162 mibFiles - Points to the first data block with initial MIB values.
4163 These data blocks are typically the contents of the provided
4164 files ufmib.dat and localmib.dat, available from the host
4165 file system, if they exist.
4166 These files typically contain radio tuning and calibration
4167 values.
4168 More values can be created using the Host Tools.
4169
4170 *******************************************************************************/
4171 #define CsrWifiSmeWifiOnReqCreate(msg__, dst__, src__, address__, mibFilesCount__, mibFiles__) \
4172 msg__ = kmalloc(sizeof(CsrWifiSmeWifiOnReq), GFP_KERNEL); \
4173 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_WIFI_ON_REQ, dst__, src__); \
4174 msg__->address = (address__); \
4175 msg__->mibFilesCount = (mibFilesCount__); \
4176 msg__->mibFiles = (mibFiles__);
4177
4178 #define CsrWifiSmeWifiOnReqSendTo(dst__, src__, address__, mibFilesCount__, mibFiles__) \
4179 { \
4180 CsrWifiSmeWifiOnReq *msg__; \
4181 CsrWifiSmeWifiOnReqCreate(msg__, dst__, src__, address__, mibFilesCount__, mibFiles__); \
4182 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
4183 }
4184
4185 #define CsrWifiSmeWifiOnReqSend(src__, address__, mibFilesCount__, mibFiles__) \
4186 CsrWifiSmeWifiOnReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, address__, mibFilesCount__, mibFiles__)
4187
4188 /*******************************************************************************
4189
4190 NAME
4191 CsrWifiSmeWifiOnIndSend
4192
4193 DESCRIPTION
4194 The SME sends this primitive to all tasks that have registered to receive
4195 it once the chip becomes available and ready to use.
4196
4197 PARAMETERS
4198 queue - Destination Task Queue
4199 address - Current MAC address
4200
4201 *******************************************************************************/
4202 #define CsrWifiSmeWifiOnIndCreate(msg__, dst__, src__, address__) \
4203 msg__ = kmalloc(sizeof(CsrWifiSmeWifiOnInd), GFP_KERNEL); \
4204 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_WIFI_ON_IND, dst__, src__); \
4205 msg__->address = (address__);
4206
4207 #define CsrWifiSmeWifiOnIndSendTo(dst__, src__, address__) \
4208 { \
4209 CsrWifiSmeWifiOnInd *msg__; \
4210 CsrWifiSmeWifiOnIndCreate(msg__, dst__, src__, address__); \
4211 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
4212 }
4213
4214 #define CsrWifiSmeWifiOnIndSend(dst__, address__) \
4215 CsrWifiSmeWifiOnIndSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, address__)
4216
4217 /*******************************************************************************
4218
4219 NAME
4220 CsrWifiSmeWifiOnCfmSend
4221
4222 DESCRIPTION
4223 The SME sends this primitive to the task that has sent the request once
4224 the chip has been initialised and is available for use.
4225
4226 PARAMETERS
4227 queue - Destination Task Queue
4228 status - Reports the result of the request
4229
4230 *******************************************************************************/
4231 #define CsrWifiSmeWifiOnCfmCreate(msg__, dst__, src__, status__) \
4232 msg__ = kmalloc(sizeof(CsrWifiSmeWifiOnCfm), GFP_KERNEL); \
4233 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_WIFI_ON_CFM, dst__, src__); \
4234 msg__->status = (status__);
4235
4236 #define CsrWifiSmeWifiOnCfmSendTo(dst__, src__, status__) \
4237 { \
4238 CsrWifiSmeWifiOnCfm *msg__; \
4239 CsrWifiSmeWifiOnCfmCreate(msg__, dst__, src__, status__); \
4240 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
4241 }
4242
4243 #define CsrWifiSmeWifiOnCfmSend(dst__, status__) \
4244 CsrWifiSmeWifiOnCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__)
4245
4246 /*******************************************************************************
4247
4248 NAME
4249 CsrWifiSmeWpsConfigurationReqSend
4250
4251 DESCRIPTION
4252 This primitive passes the WPS information for the device to SME. This may
4253 be accepted only if no interface is active.
4254
4255 PARAMETERS
4256 queue - Message Source Task Queue (Cfm's will be sent to this Queue)
4257 wpsConfig - WPS config.
4258
4259 *******************************************************************************/
4260 #define CsrWifiSmeWpsConfigurationReqCreate(msg__, dst__, src__, wpsConfig__) \
4261 msg__ = kmalloc(sizeof(CsrWifiSmeWpsConfigurationReq), GFP_KERNEL); \
4262 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_WPS_CONFIGURATION_REQ, dst__, src__); \
4263 msg__->wpsConfig = (wpsConfig__);
4264
4265 #define CsrWifiSmeWpsConfigurationReqSendTo(dst__, src__, wpsConfig__) \
4266 { \
4267 CsrWifiSmeWpsConfigurationReq *msg__; \
4268 CsrWifiSmeWpsConfigurationReqCreate(msg__, dst__, src__, wpsConfig__); \
4269 CsrMsgTransport(dst__, CSR_WIFI_SME_PRIM, msg__); \
4270 }
4271
4272 #define CsrWifiSmeWpsConfigurationReqSend(src__, wpsConfig__) \
4273 CsrWifiSmeWpsConfigurationReqSendTo(CSR_WIFI_SME_LIB_DESTINATION_QUEUE, src__, wpsConfig__)
4274
4275 /*******************************************************************************
4276
4277 NAME
4278 CsrWifiSmeWpsConfigurationCfmSend
4279
4280 DESCRIPTION
4281 Confirm.
4282
4283 PARAMETERS
4284 queue - Destination Task Queue
4285 status - Status of the request.
4286
4287 *******************************************************************************/
4288 #define CsrWifiSmeWpsConfigurationCfmCreate(msg__, dst__, src__, status__) \
4289 msg__ = kmalloc(sizeof(CsrWifiSmeWpsConfigurationCfm), GFP_KERNEL); \
4290 CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_SME_PRIM, CSR_WIFI_SME_WPS_CONFIGURATION_CFM, dst__, src__); \
4291 msg__->status = (status__);
4292
4293 #define CsrWifiSmeWpsConfigurationCfmSendTo(dst__, src__, status__) \
4294 { \
4295 CsrWifiSmeWpsConfigurationCfm *msg__; \
4296 CsrWifiSmeWpsConfigurationCfmCreate(msg__, dst__, src__, status__); \
4297 CsrSchedMessagePut(dst__, CSR_WIFI_SME_PRIM, msg__); \
4298 }
4299
4300 #define CsrWifiSmeWpsConfigurationCfmSend(dst__, status__) \
4301 CsrWifiSmeWpsConfigurationCfmSendTo(dst__, CSR_WIFI_SME_IFACEQUEUE, status__)
4302
4303 #endif /* CSR_WIFI_SME_LIB_H__ */
This page took 0.127955 seconds and 5 git commands to generate.