Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
csr_wifi_nme_lib.h
Go to the documentation of this file.
1 /*****************************************************************************
2 
3  (c) Cambridge Silicon Radio Limited 2011
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_NME_LIB_H__
14 #define CSR_WIFI_NME_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_nme_prim.h"
23 #include "csr_wifi_nme_task.h"
24 
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
30 #ifndef CSR_WIFI_NME_ENABLE
31 #error CSR_WIFI_NME_ENABLE MUST be defined inorder to use csr_wifi_nme_lib.h
32 #endif
33 
34 /*----------------------------------------------------------------------------*
35  * CsrWifiNmeFreeUpstreamMessageContents
36  *
37  * DESCRIPTION
38  * Free the allocated memory in a CSR_WIFI_NME upstream message. Does not
39  * free the message itself, and can only be used for upstream messages.
40  *
41  * PARAMETERS
42  * Deallocates the resources in a CSR_WIFI_NME upstream message
43  *----------------------------------------------------------------------------*/
44 void CsrWifiNmeFreeUpstreamMessageContents(u16 eventClass, void *message);
45 
46 /*----------------------------------------------------------------------------*
47  * CsrWifiNmeFreeDownstreamMessageContents
48  *
49  * DESCRIPTION
50  * Free the allocated memory in a CSR_WIFI_NME downstream message. Does not
51  * free the message itself, and can only be used for downstream messages.
52  *
53  * PARAMETERS
54  * Deallocates the resources in a CSR_WIFI_NME downstream message
55  *----------------------------------------------------------------------------*/
57 
58 /*----------------------------------------------------------------------------*
59  * Enum to string functions
60  *----------------------------------------------------------------------------*/
74 
75 
76 /*----------------------------------------------------------------------------*
77  * CsrPrim Type toString function.
78  * Converts a message type to the String name of the Message
79  *----------------------------------------------------------------------------*/
80 const char* CsrWifiNmePrimTypeToString(CsrPrim msgType);
81 
82 /*----------------------------------------------------------------------------*
83  * Lookup arrays for PrimType name Strings
84  *----------------------------------------------------------------------------*/
87 
88 /*******************************************************************************
89 
90  NAME
91  CsrWifiNmeConnectionStatusGetReqSend
92 
93  DESCRIPTION
94  Requests the current connection status of the NME.
95 
96  PARAMETERS
97  queue - Message Source Task Queue (Cfm's will be sent to this Queue)
98  interfaceTag - Interface Identifier; unique identifier of an interface
99 
100 *******************************************************************************/
101 #define CsrWifiNmeConnectionStatusGetReqCreate(msg__, dst__, src__, interfaceTag__) \
102  msg__ = kmalloc(sizeof(CsrWifiNmeConnectionStatusGetReq), GFP_KERNEL); \
103  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_CONNECTION_STATUS_GET_REQ, dst__, src__); \
104  msg__->interfaceTag = (interfaceTag__);
105 
106 #define CsrWifiNmeConnectionStatusGetReqSendTo(dst__, src__, interfaceTag__) \
107  { \
108  CsrWifiNmeConnectionStatusGetReq *msg__; \
109  CsrWifiNmeConnectionStatusGetReqCreate(msg__, dst__, src__, interfaceTag__); \
110  CsrMsgTransport(dst__, CSR_WIFI_NME_PRIM, msg__); \
111  }
112 
113 #define CsrWifiNmeConnectionStatusGetReqSend(src__, interfaceTag__) \
114  CsrWifiNmeConnectionStatusGetReqSendTo(CSR_WIFI_NME_IFACEQUEUE, src__, interfaceTag__)
115 
116 /*******************************************************************************
117 
118  NAME
119  CsrWifiNmeConnectionStatusGetCfmSend
120 
121  DESCRIPTION
122  Reports the connection status of the NME.
123 
124  PARAMETERS
125  queue - Destination Task Queue
126  interfaceTag - Interface Identifier; unique identifier of an interface
127  status - Indicates the success or otherwise of the requested
128  operation.
129  connectionStatus - NME current connection status
130 
131 *******************************************************************************/
132 #define CsrWifiNmeConnectionStatusGetCfmCreate(msg__, dst__, src__, interfaceTag__, status__, connectionStatus__) \
133  msg__ = kmalloc(sizeof(CsrWifiNmeConnectionStatusGetCfm), GFP_KERNEL); \
134  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_CONNECTION_STATUS_GET_CFM, dst__, src__); \
135  msg__->interfaceTag = (interfaceTag__); \
136  msg__->status = (status__); \
137  msg__->connectionStatus = (connectionStatus__);
138 
139 #define CsrWifiNmeConnectionStatusGetCfmSendTo(dst__, src__, interfaceTag__, status__, connectionStatus__) \
140  { \
141  CsrWifiNmeConnectionStatusGetCfm *msg__; \
142  CsrWifiNmeConnectionStatusGetCfmCreate(msg__, dst__, src__, interfaceTag__, status__, connectionStatus__); \
143  CsrSchedMessagePut(dst__, CSR_WIFI_NME_PRIM, msg__); \
144  }
145 
146 #define CsrWifiNmeConnectionStatusGetCfmSend(dst__, interfaceTag__, status__, connectionStatus__) \
147  CsrWifiNmeConnectionStatusGetCfmSendTo(dst__, CSR_WIFI_NME_IFACEQUEUE, interfaceTag__, status__, connectionStatus__)
148 
149 /*******************************************************************************
150 
151  NAME
152  CsrWifiNmeEventMaskSetReqSend
153 
154  DESCRIPTION
155  The wireless manager application may register with the NME to receive
156  notification of interesting events. Indications will be sent only if the
157  wireless manager explicitly registers to be notified of that event.
158  indMask is a bit mask of values defined in CsrWifiNmeIndicationsMask.
159 
160  PARAMETERS
161  queue - Message Source Task Queue (Cfm's will be sent to this Queue)
162  indMask - Set mask with values from CsrWifiNmeIndications
163 
164 *******************************************************************************/
165 #define CsrWifiNmeEventMaskSetReqCreate(msg__, dst__, src__, indMask__) \
166  msg__ = kmalloc(sizeof(CsrWifiNmeEventMaskSetReq), GFP_KERNEL); \
167  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_EVENT_MASK_SET_REQ, dst__, src__); \
168  msg__->indMask = (indMask__);
169 
170 #define CsrWifiNmeEventMaskSetReqSendTo(dst__, src__, indMask__) \
171  { \
172  CsrWifiNmeEventMaskSetReq *msg__; \
173  CsrWifiNmeEventMaskSetReqCreate(msg__, dst__, src__, indMask__); \
174  CsrMsgTransport(dst__, CSR_WIFI_NME_PRIM, msg__); \
175  }
176 
177 #define CsrWifiNmeEventMaskSetReqSend(src__, indMask__) \
178  CsrWifiNmeEventMaskSetReqSendTo(CSR_WIFI_NME_IFACEQUEUE, src__, indMask__)
179 
180 /*******************************************************************************
181 
182  NAME
183  CsrWifiNmeEventMaskSetCfmSend
184 
185  DESCRIPTION
186  The NME calls the primitive to report the result of the request
187  primitive.
188 
189  PARAMETERS
190  queue - Destination Task Queue
191  status - Reports the result of the request
192 
193 *******************************************************************************/
194 #define CsrWifiNmeEventMaskSetCfmCreate(msg__, dst__, src__, status__) \
195  msg__ = kmalloc(sizeof(CsrWifiNmeEventMaskSetCfm), GFP_KERNEL); \
196  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_EVENT_MASK_SET_CFM, dst__, src__); \
197  msg__->status = (status__);
198 
199 #define CsrWifiNmeEventMaskSetCfmSendTo(dst__, src__, status__) \
200  { \
201  CsrWifiNmeEventMaskSetCfm *msg__; \
202  CsrWifiNmeEventMaskSetCfmCreate(msg__, dst__, src__, status__); \
203  CsrSchedMessagePut(dst__, CSR_WIFI_NME_PRIM, msg__); \
204  }
205 
206 #define CsrWifiNmeEventMaskSetCfmSend(dst__, status__) \
207  CsrWifiNmeEventMaskSetCfmSendTo(dst__, CSR_WIFI_NME_IFACEQUEUE, status__)
208 
209 /*******************************************************************************
210 
211  NAME
212  CsrWifiNmeProfileConnectReqSend
213 
214  DESCRIPTION
215  Requests the NME to attempt to connect to the specified profile.
216  Overrides any current connection attempt.
217 
218  PARAMETERS
219  queue - Message Source Task Queue (Cfm's will be sent to this Queue)
220  interfaceTag - Interface Identifier; unique identifier of an interface
221  profileIdentity - Identity (BSSID, SSID) of profile to be connected to.
222  It must match an existing profile in the NME.
223 
224 *******************************************************************************/
225 #define CsrWifiNmeProfileConnectReqCreate(msg__, dst__, src__, interfaceTag__, profileIdentity__) \
226  msg__ = kmalloc(sizeof(CsrWifiNmeProfileConnectReq), GFP_KERNEL); \
227  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_PROFILE_CONNECT_REQ, dst__, src__); \
228  msg__->interfaceTag = (interfaceTag__); \
229  msg__->profileIdentity = (profileIdentity__);
230 
231 #define CsrWifiNmeProfileConnectReqSendTo(dst__, src__, interfaceTag__, profileIdentity__) \
232  { \
233  CsrWifiNmeProfileConnectReq *msg__; \
234  CsrWifiNmeProfileConnectReqCreate(msg__, dst__, src__, interfaceTag__, profileIdentity__); \
235  CsrMsgTransport(dst__, CSR_WIFI_NME_PRIM, msg__); \
236  }
237 
238 #define CsrWifiNmeProfileConnectReqSend(src__, interfaceTag__, profileIdentity__) \
239  CsrWifiNmeProfileConnectReqSendTo(CSR_WIFI_NME_IFACEQUEUE, src__, interfaceTag__, profileIdentity__)
240 
241 /*******************************************************************************
242 
243  NAME
244  CsrWifiNmeProfileConnectCfmSend
245 
246  DESCRIPTION
247  Reports the status of the NME PROFILE CONNECT REQ. If unsuccessful the
248  connectAttempt parameters contain details of the APs that the NME
249  attempted to connect to before reporting the failure of the request.
250 
251  PARAMETERS
252  queue - Destination Task Queue
253  interfaceTag - Interface Identifier; unique identifier of an
254  interface
255  status - Indicates the success or otherwise of the requested
256  operation.
257  connectAttemptsCount - This parameter is relevant only if
258  status!=CSR_WIFI_NME_STATUS_SUCCESS.
259  Number of connection attempt elements provided with
260  this primitive
261  connectAttempts - This parameter is relevant only if
262  status!=CSR_WIFI_NME_STATUS_SUCCESS.
263  Points to the list of connection attempt elements
264  provided with this primitive
265  Each element of the list provides information about
266  an AP on which the connection attempt was made and
267  the error that occurred during the attempt.
268 
269 *******************************************************************************/
270 #define CsrWifiNmeProfileConnectCfmCreate(msg__, dst__, src__, interfaceTag__, status__, connectAttemptsCount__, connectAttempts__) \
271  msg__ = kmalloc(sizeof(CsrWifiNmeProfileConnectCfm), GFP_KERNEL); \
272  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_PROFILE_CONNECT_CFM, dst__, src__); \
273  msg__->interfaceTag = (interfaceTag__); \
274  msg__->status = (status__); \
275  msg__->connectAttemptsCount = (connectAttemptsCount__); \
276  msg__->connectAttempts = (connectAttempts__);
277 
278 #define CsrWifiNmeProfileConnectCfmSendTo(dst__, src__, interfaceTag__, status__, connectAttemptsCount__, connectAttempts__) \
279  { \
280  CsrWifiNmeProfileConnectCfm *msg__; \
281  CsrWifiNmeProfileConnectCfmCreate(msg__, dst__, src__, interfaceTag__, status__, connectAttemptsCount__, connectAttempts__); \
282  CsrSchedMessagePut(dst__, CSR_WIFI_NME_PRIM, msg__); \
283  }
284 
285 #define CsrWifiNmeProfileConnectCfmSend(dst__, interfaceTag__, status__, connectAttemptsCount__, connectAttempts__) \
286  CsrWifiNmeProfileConnectCfmSendTo(dst__, CSR_WIFI_NME_IFACEQUEUE, interfaceTag__, status__, connectAttemptsCount__, connectAttempts__)
287 
288 /*******************************************************************************
289 
290  NAME
291  CsrWifiNmeProfileDeleteAllReqSend
292 
293  DESCRIPTION
294  Deletes all profiles present in the NME, but does NOT modify the
295  preferred profile list.
296 
297  PARAMETERS
298  queue - Message Source Task Queue (Cfm's will be sent to this Queue)
299 
300 *******************************************************************************/
301 #define CsrWifiNmeProfileDeleteAllReqCreate(msg__, dst__, src__) \
302  msg__ = kmalloc(sizeof(CsrWifiNmeProfileDeleteAllReq), GFP_KERNEL); \
303  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_PROFILE_DELETE_ALL_REQ, dst__, src__);
304 
305 #define CsrWifiNmeProfileDeleteAllReqSendTo(dst__, src__) \
306  { \
307  CsrWifiNmeProfileDeleteAllReq *msg__; \
308  CsrWifiNmeProfileDeleteAllReqCreate(msg__, dst__, src__); \
309  CsrMsgTransport(dst__, CSR_WIFI_NME_PRIM, msg__); \
310  }
311 
312 #define CsrWifiNmeProfileDeleteAllReqSend(src__) \
313  CsrWifiNmeProfileDeleteAllReqSendTo(CSR_WIFI_NME_IFACEQUEUE, src__)
314 
315 /*******************************************************************************
316 
317  NAME
318  CsrWifiNmeProfileDeleteAllCfmSend
319 
320  DESCRIPTION
321  Reports the status of the CSR_WIFI_NME_PROFILE_DELETE_ALL_REQ.
322  Returns always CSR_WIFI_NME_STATUS_SUCCESS.
323 
324  PARAMETERS
325  queue - Destination Task Queue
326  status - Indicates the success or otherwise of the requested operation, but
327  in this case it always set to success.
328 
329 *******************************************************************************/
330 #define CsrWifiNmeProfileDeleteAllCfmCreate(msg__, dst__, src__, status__) \
331  msg__ = kmalloc(sizeof(CsrWifiNmeProfileDeleteAllCfm), GFP_KERNEL); \
332  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_PROFILE_DELETE_ALL_CFM, dst__, src__); \
333  msg__->status = (status__);
334 
335 #define CsrWifiNmeProfileDeleteAllCfmSendTo(dst__, src__, status__) \
336  { \
337  CsrWifiNmeProfileDeleteAllCfm *msg__; \
338  CsrWifiNmeProfileDeleteAllCfmCreate(msg__, dst__, src__, status__); \
339  CsrSchedMessagePut(dst__, CSR_WIFI_NME_PRIM, msg__); \
340  }
341 
342 #define CsrWifiNmeProfileDeleteAllCfmSend(dst__, status__) \
343  CsrWifiNmeProfileDeleteAllCfmSendTo(dst__, CSR_WIFI_NME_IFACEQUEUE, status__)
344 
345 /*******************************************************************************
346 
347  NAME
348  CsrWifiNmeProfileDeleteReqSend
349 
350  DESCRIPTION
351  Will delete the profile with a matching identity, but does NOT modify the
352  preferred profile list.
353 
354  PARAMETERS
355  queue - Message Source Task Queue (Cfm's will be sent to this Queue)
356  profileIdentity - Identity (BSSID, SSID) of profile to be deleted.
357 
358 *******************************************************************************/
359 #define CsrWifiNmeProfileDeleteReqCreate(msg__, dst__, src__, profileIdentity__) \
360  msg__ = kmalloc(sizeof(CsrWifiNmeProfileDeleteReq), GFP_KERNEL); \
361  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_PROFILE_DELETE_REQ, dst__, src__); \
362  msg__->profileIdentity = (profileIdentity__);
363 
364 #define CsrWifiNmeProfileDeleteReqSendTo(dst__, src__, profileIdentity__) \
365  { \
366  CsrWifiNmeProfileDeleteReq *msg__; \
367  CsrWifiNmeProfileDeleteReqCreate(msg__, dst__, src__, profileIdentity__); \
368  CsrMsgTransport(dst__, CSR_WIFI_NME_PRIM, msg__); \
369  }
370 
371 #define CsrWifiNmeProfileDeleteReqSend(src__, profileIdentity__) \
372  CsrWifiNmeProfileDeleteReqSendTo(CSR_WIFI_NME_IFACEQUEUE, src__, profileIdentity__)
373 
374 /*******************************************************************************
375 
376  NAME
377  CsrWifiNmeProfileDeleteCfmSend
378 
379  DESCRIPTION
380  Reports the status of the CSR_WIFI_NME_PROFILE_DELETE_REQ.
381  Returns CSR_WIFI_NME_STATUS_NOT_FOUND if there is no matching profile.
382 
383  PARAMETERS
384  queue - Destination Task Queue
385  status - Indicates the success or otherwise of the requested operation.
386 
387 *******************************************************************************/
388 #define CsrWifiNmeProfileDeleteCfmCreate(msg__, dst__, src__, status__) \
389  msg__ = kmalloc(sizeof(CsrWifiNmeProfileDeleteCfm), GFP_KERNEL); \
390  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_PROFILE_DELETE_CFM, dst__, src__); \
391  msg__->status = (status__);
392 
393 #define CsrWifiNmeProfileDeleteCfmSendTo(dst__, src__, status__) \
394  { \
395  CsrWifiNmeProfileDeleteCfm *msg__; \
396  CsrWifiNmeProfileDeleteCfmCreate(msg__, dst__, src__, status__); \
397  CsrSchedMessagePut(dst__, CSR_WIFI_NME_PRIM, msg__); \
398  }
399 
400 #define CsrWifiNmeProfileDeleteCfmSend(dst__, status__) \
401  CsrWifiNmeProfileDeleteCfmSendTo(dst__, CSR_WIFI_NME_IFACEQUEUE, status__)
402 
403 /*******************************************************************************
404 
405  NAME
406  CsrWifiNmeProfileDisconnectIndSend
407 
408  DESCRIPTION
409  Indication generated from the NME (if an application subscribes to
410  receive it) that informs that application that the current profile
411  connection has disconnected. The indication will contain information
412  about APs that it attempted to maintain the connection via i.e. in the
413  case of failed roaming.
414 
415  PARAMETERS
416  queue - Destination Task Queue
417  interfaceTag - Interface Identifier; unique identifier of an
418  interface
419  connectAttemptsCount - Number of connection attempt elements provided with
420  this primitive
421  connectAttempts - Points to the list of connection attempt elements
422  provided with this primitive
423  Each element of the list provides information about
424  an AP on which the connection attempt was made and
425  the error occurred during the attempt.
426 
427 *******************************************************************************/
428 #define CsrWifiNmeProfileDisconnectIndCreate(msg__, dst__, src__, interfaceTag__, connectAttemptsCount__, connectAttempts__) \
429  msg__ = kmalloc(sizeof(CsrWifiNmeProfileDisconnectInd), GFP_KERNEL); \
430  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_PROFILE_DISCONNECT_IND, dst__, src__); \
431  msg__->interfaceTag = (interfaceTag__); \
432  msg__->connectAttemptsCount = (connectAttemptsCount__); \
433  msg__->connectAttempts = (connectAttempts__);
434 
435 #define CsrWifiNmeProfileDisconnectIndSendTo(dst__, src__, interfaceTag__, connectAttemptsCount__, connectAttempts__) \
436  { \
437  CsrWifiNmeProfileDisconnectInd *msg__; \
438  CsrWifiNmeProfileDisconnectIndCreate(msg__, dst__, src__, interfaceTag__, connectAttemptsCount__, connectAttempts__); \
439  CsrSchedMessagePut(dst__, CSR_WIFI_NME_PRIM, msg__); \
440  }
441 
442 #define CsrWifiNmeProfileDisconnectIndSend(dst__, interfaceTag__, connectAttemptsCount__, connectAttempts__) \
443  CsrWifiNmeProfileDisconnectIndSendTo(dst__, CSR_WIFI_NME_IFACEQUEUE, interfaceTag__, connectAttemptsCount__, connectAttempts__)
444 
445 /*******************************************************************************
446 
447  NAME
448  CsrWifiNmeProfileOrderSetReqSend
449 
450  DESCRIPTION
451  Defines the preferred order that profiles present in the NME should be
452  used during the NME auto-connect behaviour.
453  If profileIdentitysCount == 0, it removes any existing preferred profile
454  list already present in the NME, effectively disabling the auto-connect
455  behaviour.
456  NOTE: Profile identities that do not match any profile stored in the NME
457  are ignored during the auto-connect procedure.
458  NOTE: during auto-connect the NME will only attempt to join an existing
459  adhoc network and it will never attempt to host an adhoc network; for
460  hosting and adhoc network, use CSR_WIFI_NME_PROFILE_CONNECT_REQ
461 
462  PARAMETERS
463  queue - Message Source Task Queue (Cfm's will be sent to this Queue)
464  interfaceTag - Interface Identifier; unique identifier of an
465  interface
466  profileIdentitysCount - The number of profiles identities in the list.
467  profileIdentitys - Points to the list of profile identities.
468 
469 *******************************************************************************/
470 #define CsrWifiNmeProfileOrderSetReqCreate(msg__, dst__, src__, interfaceTag__, profileIdentitysCount__, profileIdentitys__) \
471  msg__ = kmalloc(sizeof(CsrWifiNmeProfileOrderSetReq), GFP_KERNEL); \
472  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_PROFILE_ORDER_SET_REQ, dst__, src__); \
473  msg__->interfaceTag = (interfaceTag__); \
474  msg__->profileIdentitysCount = (profileIdentitysCount__); \
475  msg__->profileIdentitys = (profileIdentitys__);
476 
477 #define CsrWifiNmeProfileOrderSetReqSendTo(dst__, src__, interfaceTag__, profileIdentitysCount__, profileIdentitys__) \
478  { \
479  CsrWifiNmeProfileOrderSetReq *msg__; \
480  CsrWifiNmeProfileOrderSetReqCreate(msg__, dst__, src__, interfaceTag__, profileIdentitysCount__, profileIdentitys__); \
481  CsrMsgTransport(dst__, CSR_WIFI_NME_PRIM, msg__); \
482  }
483 
484 #define CsrWifiNmeProfileOrderSetReqSend(src__, interfaceTag__, profileIdentitysCount__, profileIdentitys__) \
485  CsrWifiNmeProfileOrderSetReqSendTo(CSR_WIFI_NME_IFACEQUEUE, src__, interfaceTag__, profileIdentitysCount__, profileIdentitys__)
486 
487 /*******************************************************************************
488 
489  NAME
490  CsrWifiNmeProfileOrderSetCfmSend
491 
492  DESCRIPTION
493  Confirmation to UNIFI_NME_PROFILE_ORDER_SET.request.
494 
495  PARAMETERS
496  queue - Destination Task Queue
497  interfaceTag - Interface Identifier; unique identifier of an interface
498  status - Indicates the success or otherwise of the requested
499  operation.
500 
501 *******************************************************************************/
502 #define CsrWifiNmeProfileOrderSetCfmCreate(msg__, dst__, src__, interfaceTag__, status__) \
503  msg__ = kmalloc(sizeof(CsrWifiNmeProfileOrderSetCfm), GFP_KERNEL); \
504  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_PROFILE_ORDER_SET_CFM, dst__, src__); \
505  msg__->interfaceTag = (interfaceTag__); \
506  msg__->status = (status__);
507 
508 #define CsrWifiNmeProfileOrderSetCfmSendTo(dst__, src__, interfaceTag__, status__) \
509  { \
510  CsrWifiNmeProfileOrderSetCfm *msg__; \
511  CsrWifiNmeProfileOrderSetCfmCreate(msg__, dst__, src__, interfaceTag__, status__); \
512  CsrSchedMessagePut(dst__, CSR_WIFI_NME_PRIM, msg__); \
513  }
514 
515 #define CsrWifiNmeProfileOrderSetCfmSend(dst__, interfaceTag__, status__) \
516  CsrWifiNmeProfileOrderSetCfmSendTo(dst__, CSR_WIFI_NME_IFACEQUEUE, interfaceTag__, status__)
517 
518 /*******************************************************************************
519 
520  NAME
521  CsrWifiNmeProfileSetReqSend
522 
523  DESCRIPTION
524  Creates or updates an existing profile in the NME that matches the unique
525  identity of the profile. Each profile is identified by the combination of
526  BSSID and SSID. The profile contains all the required credentials for
527  attempting to connect to the network. Creating or updating a profile via
528  the NME PROFILE SET REQ does NOT add the profile to the preferred profile
529  list within the NME used for the NME auto-connect behaviour.
530 
531  PARAMETERS
532  queue - Message Source Task Queue (Cfm's will be sent to this Queue)
533  profile - Specifies the identity and credentials of the network.
534 
535 *******************************************************************************/
536 #define CsrWifiNmeProfileSetReqCreate(msg__, dst__, src__, profile__) \
537  msg__ = kmalloc(sizeof(CsrWifiNmeProfileSetReq), GFP_KERNEL); \
538  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_PROFILE_SET_REQ, dst__, src__); \
539  msg__->profile = (profile__);
540 
541 #define CsrWifiNmeProfileSetReqSendTo(dst__, src__, profile__) \
542  { \
543  CsrWifiNmeProfileSetReq *msg__; \
544  CsrWifiNmeProfileSetReqCreate(msg__, dst__, src__, profile__); \
545  CsrMsgTransport(dst__, CSR_WIFI_NME_PRIM, msg__); \
546  }
547 
548 #define CsrWifiNmeProfileSetReqSend(src__, profile__) \
549  CsrWifiNmeProfileSetReqSendTo(CSR_WIFI_NME_IFACEQUEUE, src__, profile__)
550 
551 /*******************************************************************************
552 
553  NAME
554  CsrWifiNmeProfileSetCfmSend
555 
556  DESCRIPTION
557  Reports the status of the NME PROFILE SET REQ; the request will only fail
558  if the details specified in the profile contains an invalid combination
559  of parameters for example specifying the profile as cloaked but not
560  specifying the SSID. The NME doesn't limit the number of profiles that
561  may be created. The NME assumes that the entity configuring it is aware
562  of the appropriate limits.
563 
564  PARAMETERS
565  queue - Destination Task Queue
566  status - Indicates the success or otherwise of the requested operation.
567 
568 *******************************************************************************/
569 #define CsrWifiNmeProfileSetCfmCreate(msg__, dst__, src__, status__) \
570  msg__ = kmalloc(sizeof(CsrWifiNmeProfileSetCfm), GFP_KERNEL); \
571  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_PROFILE_SET_CFM, dst__, src__); \
572  msg__->status = (status__);
573 
574 #define CsrWifiNmeProfileSetCfmSendTo(dst__, src__, status__) \
575  { \
576  CsrWifiNmeProfileSetCfm *msg__; \
577  CsrWifiNmeProfileSetCfmCreate(msg__, dst__, src__, status__); \
578  CsrSchedMessagePut(dst__, CSR_WIFI_NME_PRIM, msg__); \
579  }
580 
581 #define CsrWifiNmeProfileSetCfmSend(dst__, status__) \
582  CsrWifiNmeProfileSetCfmSendTo(dst__, CSR_WIFI_NME_IFACEQUEUE, status__)
583 
584 /*******************************************************************************
585 
586  NAME
587  CsrWifiNmeProfileUpdateIndSend
588 
589  DESCRIPTION
590  Indication generated from the NME (if an application subscribes to
591  receive it) that informs that application that the contained profile has
592  changed.
593  For example, either the credentials EAP-FAST PAC file or the session data
594  within the profile has changed.
595  It is up to the application whether it stores this updated profile or
596  not.
597 
598  PARAMETERS
599  queue - Destination Task Queue
600  interfaceTag - Interface Identifier; unique identifier of an interface
601  profile - The identity and credentials of the network.
602 
603 *******************************************************************************/
604 #define CsrWifiNmeProfileUpdateIndCreate(msg__, dst__, src__, interfaceTag__, profile__) \
605  msg__ = kmalloc(sizeof(CsrWifiNmeProfileUpdateInd), GFP_KERNEL); \
606  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_PROFILE_UPDATE_IND, dst__, src__); \
607  msg__->interfaceTag = (interfaceTag__); \
608  msg__->profile = (profile__);
609 
610 #define CsrWifiNmeProfileUpdateIndSendTo(dst__, src__, interfaceTag__, profile__) \
611  { \
612  CsrWifiNmeProfileUpdateInd *msg__; \
613  CsrWifiNmeProfileUpdateIndCreate(msg__, dst__, src__, interfaceTag__, profile__); \
614  CsrSchedMessagePut(dst__, CSR_WIFI_NME_PRIM, msg__); \
615  }
616 
617 #define CsrWifiNmeProfileUpdateIndSend(dst__, interfaceTag__, profile__) \
618  CsrWifiNmeProfileUpdateIndSendTo(dst__, CSR_WIFI_NME_IFACEQUEUE, interfaceTag__, profile__)
619 
620 /*******************************************************************************
621 
622  NAME
623  CsrWifiNmeSimGsmAuthIndSend
624 
625  DESCRIPTION
626  Indication generated from the NME (if an application subscribes to
627  receive it) that requests the UICC Manager to perform a GSM
628  authentication on behalf of the NME. This indication is generated when
629  the NME is attempting to connect to a profile configured for EAP-SIM. An
630  application MUST register to receive this indication for the NME to
631  support the EAP-SIM credential types. Otherwise the NME has no route to
632  obtain the information from the UICC. EAP-SIM authentication requires 2
633  or 3 GSM authentication rounds and therefore 2 or 3 RANDS (GSM Random
634  Challenges) are included.
635 
636  PARAMETERS
637  queue - Destination Task Queue
638  randsLength - GSM RAND is 16 bytes long hence valid values are 32 (2 RANDS)
639  or 48 (3 RANDs).
640  rands - 2 or 3 RANDs values.
641 
642 *******************************************************************************/
643 #define CsrWifiNmeSimGsmAuthIndCreate(msg__, dst__, src__, randsLength__, rands__) \
644  msg__ = kmalloc(sizeof(CsrWifiNmeSimGsmAuthInd), GFP_KERNEL); \
645  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_SIM_GSM_AUTH_IND, dst__, src__); \
646  msg__->randsLength = (randsLength__); \
647  msg__->rands = (rands__);
648 
649 #define CsrWifiNmeSimGsmAuthIndSendTo(dst__, src__, randsLength__, rands__) \
650  { \
651  CsrWifiNmeSimGsmAuthInd *msg__; \
652  CsrWifiNmeSimGsmAuthIndCreate(msg__, dst__, src__, randsLength__, rands__); \
653  CsrSchedMessagePut(dst__, CSR_WIFI_NME_PRIM, msg__); \
654  }
655 
656 #define CsrWifiNmeSimGsmAuthIndSend(dst__, randsLength__, rands__) \
657  CsrWifiNmeSimGsmAuthIndSendTo(dst__, CSR_WIFI_NME_IFACEQUEUE, randsLength__, rands__)
658 
659 /*******************************************************************************
660 
661  NAME
662  CsrWifiNmeSimGsmAuthResSend
663 
664  DESCRIPTION
665  Response from the application that received the NME SIM GSM AUTH IND. For
666  each GSM authentication round a GSM Ciphering key (Kc) and a signed
667  response (SRES) are produced. Since 2 or 3 GSM authentication rounds are
668  used the 2 or 3 Kc's obtained respectively are combined into one buffer
669  and similarly the 2 or 3 SRES's obtained are combined into another
670  buffer. The order of Kc values (SRES values respectively) in their buffer
671  is the same as that of their corresponding RAND values in the incoming
672  indication.
673 
674  PARAMETERS
675  status - Indicates the outcome of the requested operation:
676  STATUS_SUCCESS or STATUS_ERROR
677  kcsLength - Length in Bytes of Kc buffer. Legal values are: 16 or 24.
678  kcs - Kc buffer holding 2 or 3 Kc values.
679  sresLength - Length in Bytes of SRES buffer. Legal values are: 8 or 12.
680  sres - SRES buffer holding 2 or 3 SRES values.
681 
682 *******************************************************************************/
683 #define CsrWifiNmeSimGsmAuthResCreate(msg__, dst__, src__, status__, kcsLength__, kcs__, sresLength__, sres__) \
684  msg__ = kmalloc(sizeof(CsrWifiNmeSimGsmAuthRes), GFP_KERNEL); \
685  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_SIM_GSM_AUTH_RES, dst__, src__); \
686  msg__->status = (status__); \
687  msg__->kcsLength = (kcsLength__); \
688  msg__->kcs = (kcs__); \
689  msg__->sresLength = (sresLength__); \
690  msg__->sres = (sres__);
691 
692 #define CsrWifiNmeSimGsmAuthResSendTo(dst__, src__, status__, kcsLength__, kcs__, sresLength__, sres__) \
693  { \
694  CsrWifiNmeSimGsmAuthRes *msg__; \
695  CsrWifiNmeSimGsmAuthResCreate(msg__, dst__, src__, status__, kcsLength__, kcs__, sresLength__, sres__); \
696  CsrMsgTransport(dst__, CSR_WIFI_NME_PRIM, msg__); \
697  }
698 
699 #define CsrWifiNmeSimGsmAuthResSend(src__, status__, kcsLength__, kcs__, sresLength__, sres__) \
700  CsrWifiNmeSimGsmAuthResSendTo(CSR_WIFI_NME_IFACEQUEUE, src__, status__, kcsLength__, kcs__, sresLength__, sres__)
701 
702 /*******************************************************************************
703 
704  NAME
705  CsrWifiNmeSimImsiGetIndSend
706 
707  DESCRIPTION
708  Indication generated from the NME (if an application subscribes to
709  receive it) that requests the IMSI and UICC type from the UICC Manager.
710  This indication is generated when the NME is attempting to connect to a
711  profile configured for EAP-SIM/AKA. An application MUST register to
712  receive this indication for the NME to support the EAP-SIM/AKA credential
713  types. Otherwise the NME has no route to obtain the information from the
714  UICC.
715 
716  PARAMETERS
717  queue - Destination Task Queue
718 
719 *******************************************************************************/
720 #define CsrWifiNmeSimImsiGetIndCreate(msg__, dst__, src__) \
721  msg__ = kmalloc(sizeof(CsrWifiNmeSimImsiGetInd), GFP_KERNEL); \
722  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_SIM_IMSI_GET_IND, dst__, src__);
723 
724 #define CsrWifiNmeSimImsiGetIndSendTo(dst__, src__) \
725  { \
726  CsrWifiNmeSimImsiGetInd *msg__; \
727  CsrWifiNmeSimImsiGetIndCreate(msg__, dst__, src__); \
728  CsrSchedMessagePut(dst__, CSR_WIFI_NME_PRIM, msg__); \
729  }
730 
731 #define CsrWifiNmeSimImsiGetIndSend(dst__) \
732  CsrWifiNmeSimImsiGetIndSendTo(dst__, CSR_WIFI_NME_IFACEQUEUE)
733 
734 /*******************************************************************************
735 
736  NAME
737  CsrWifiNmeSimImsiGetResSend
738 
739  DESCRIPTION
740  Response from the application that received the NME SIM IMSI GET IND.
741 
742  PARAMETERS
743  status - Indicates the outcome of the requested operation: STATUS_SUCCESS
744  or STATUS_ERROR.
745  imsi - The value of the IMSI obtained from the UICC.
746  cardType - The UICC type (GSM only (SIM), UMTS only (USIM), Both).
747 
748 *******************************************************************************/
749 #define CsrWifiNmeSimImsiGetResCreate(msg__, dst__, src__, status__, imsi__, cardType__) \
750  msg__ = kmalloc(sizeof(CsrWifiNmeSimImsiGetRes), GFP_KERNEL); \
751  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_SIM_IMSI_GET_RES, dst__, src__); \
752  msg__->status = (status__); \
753  msg__->imsi = (imsi__); \
754  msg__->cardType = (cardType__);
755 
756 #define CsrWifiNmeSimImsiGetResSendTo(dst__, src__, status__, imsi__, cardType__) \
757  { \
758  CsrWifiNmeSimImsiGetRes *msg__; \
759  CsrWifiNmeSimImsiGetResCreate(msg__, dst__, src__, status__, imsi__, cardType__); \
760  CsrMsgTransport(dst__, CSR_WIFI_NME_PRIM, msg__); \
761  }
762 
763 #define CsrWifiNmeSimImsiGetResSend(src__, status__, imsi__, cardType__) \
764  CsrWifiNmeSimImsiGetResSendTo(CSR_WIFI_NME_IFACEQUEUE, src__, status__, imsi__, cardType__)
765 
766 /*******************************************************************************
767 
768  NAME
769  CsrWifiNmeSimUmtsAuthIndSend
770 
771  DESCRIPTION
772  Indication generated from the NME (if an application subscribes to
773  receive it) that requests the UICC Manager to perform a UMTS
774  authentication on behalf of the NME. This indication is generated when
775  the NME is attempting to connect to a profile configured for EAP-AKA. An
776  application MUST register to receive this indication for the NME to
777  support the EAP-AKA credential types. Otherwise the NME has no route to
778  obtain the information from the USIM. EAP-AKA requires one UMTS
779  authentication round and therefore only one RAND and one AUTN values are
780  included.
781 
782  PARAMETERS
783  queue - Destination Task Queue
784  rand - UMTS RAND value.
785  autn - UMTS AUTN value.
786 
787 *******************************************************************************/
788 #define CsrWifiNmeSimUmtsAuthIndCreate(msg__, dst__, src__, rand__, autn__) \
789  msg__ = kmalloc(sizeof(CsrWifiNmeSimUmtsAuthInd), GFP_KERNEL); \
790  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_SIM_UMTS_AUTH_IND, dst__, src__); \
791  memcpy(msg__->rand, (rand__), sizeof(u8) * 16); \
792  memcpy(msg__->autn, (autn__), sizeof(u8) * 16);
793 
794 #define CsrWifiNmeSimUmtsAuthIndSendTo(dst__, src__, rand__, autn__) \
795  { \
796  CsrWifiNmeSimUmtsAuthInd *msg__; \
797  CsrWifiNmeSimUmtsAuthIndCreate(msg__, dst__, src__, rand__, autn__); \
798  CsrSchedMessagePut(dst__, CSR_WIFI_NME_PRIM, msg__); \
799  }
800 
801 #define CsrWifiNmeSimUmtsAuthIndSend(dst__, rand__, autn__) \
802  CsrWifiNmeSimUmtsAuthIndSendTo(dst__, CSR_WIFI_NME_IFACEQUEUE, rand__, autn__)
803 
804 /*******************************************************************************
805 
806  NAME
807  CsrWifiNmeSimUmtsAuthResSend
808 
809  DESCRIPTION
810  Response from the application that received the NME SIM UMTS AUTH IND.
811  The values of umtsCipherKey, umtsIntegrityKey, resParameterLength and
812  resParameter are only meanigful when result = UMTS_AUTH_RESULT_SUCCESS.
813  The value of auts is only meaningful when
814  result=UMTS_AUTH_RESULT_SYNC_FAIL.
815 
816  PARAMETERS
817  status - Indicates the outcome of the requested operation:
818  STATUS_SUCCESS or STATUS_ERROR.
819  result - The result of UMTS authentication as performed by the
820  UICC which could be: Success, Authentication Reject or
821  Synchronisation Failure. For all these 3 outcomes the
822  value of status is success.
823  umtsCipherKey - The UMTS Cipher Key as calculated and returned by the
824  UICC.
825  umtsIntegrityKey - The UMTS Integrity Key as calculated and returned by
826  the UICC.
827  resParameterLength - The length (in bytes) of the RES parameter (min=4; max
828  = 16).
829  resParameter - The RES parameter as calculated and returned by the
830  UICC.
831  auts - The AUTS parameter as calculated and returned by the
832  UICC.
833 
834 *******************************************************************************/
835 #define CsrWifiNmeSimUmtsAuthResCreate(msg__, dst__, src__, status__, result__, umtsCipherKey__, umtsIntegrityKey__, resParameterLength__, resParameter__, auts__) \
836  msg__ = kmalloc(sizeof(CsrWifiNmeSimUmtsAuthRes), GFP_KERNEL); \
837  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_SIM_UMTS_AUTH_RES, dst__, src__); \
838  msg__->status = (status__); \
839  msg__->result = (result__); \
840  memcpy(msg__->umtsCipherKey, (umtsCipherKey__), sizeof(u8) * 16); \
841  memcpy(msg__->umtsIntegrityKey, (umtsIntegrityKey__), sizeof(u8) * 16); \
842  msg__->resParameterLength = (resParameterLength__); \
843  msg__->resParameter = (resParameter__); \
844  memcpy(msg__->auts, (auts__), sizeof(u8) * 14);
845 
846 #define CsrWifiNmeSimUmtsAuthResSendTo(dst__, src__, status__, result__, umtsCipherKey__, umtsIntegrityKey__, resParameterLength__, resParameter__, auts__) \
847  { \
848  CsrWifiNmeSimUmtsAuthRes *msg__; \
849  CsrWifiNmeSimUmtsAuthResCreate(msg__, dst__, src__, status__, result__, umtsCipherKey__, umtsIntegrityKey__, resParameterLength__, resParameter__, auts__); \
850  CsrMsgTransport(dst__, CSR_WIFI_NME_PRIM, msg__); \
851  }
852 
853 #define CsrWifiNmeSimUmtsAuthResSend(src__, status__, result__, umtsCipherKey__, umtsIntegrityKey__, resParameterLength__, resParameter__, auts__) \
854  CsrWifiNmeSimUmtsAuthResSendTo(CSR_WIFI_NME_IFACEQUEUE, src__, status__, result__, umtsCipherKey__, umtsIntegrityKey__, resParameterLength__, resParameter__, auts__)
855 
856 /*******************************************************************************
857 
858  NAME
859  CsrWifiNmeWpsCancelReqSend
860 
861  DESCRIPTION
862  Requests the NME to cancel any WPS procedure that it is currently
863  performing. This includes WPS registrar activities started because of
864  CSR_WIFI_NME_AP_REGISTER.request
865 
866  PARAMETERS
867  queue - Message Source Task Queue (Cfm's will be sent to this Queue)
868  interfaceTag - Interface Identifier; unique identifier of an interface
869 
870 *******************************************************************************/
871 #define CsrWifiNmeWpsCancelReqCreate(msg__, dst__, src__, interfaceTag__) \
872  msg__ = kmalloc(sizeof(CsrWifiNmeWpsCancelReq), GFP_KERNEL); \
873  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_WPS_CANCEL_REQ, dst__, src__); \
874  msg__->interfaceTag = (interfaceTag__);
875 
876 #define CsrWifiNmeWpsCancelReqSendTo(dst__, src__, interfaceTag__) \
877  { \
878  CsrWifiNmeWpsCancelReq *msg__; \
879  CsrWifiNmeWpsCancelReqCreate(msg__, dst__, src__, interfaceTag__); \
880  CsrMsgTransport(dst__, CSR_WIFI_NME_PRIM, msg__); \
881  }
882 
883 #define CsrWifiNmeWpsCancelReqSend(src__, interfaceTag__) \
884  CsrWifiNmeWpsCancelReqSendTo(CSR_WIFI_NME_IFACEQUEUE, src__, interfaceTag__)
885 
886 /*******************************************************************************
887 
888  NAME
889  CsrWifiNmeWpsCancelCfmSend
890 
891  DESCRIPTION
892  Reports the status of the NME WPS REQ, the request is always SUCCESSFUL.
893 
894  PARAMETERS
895  queue - Destination Task Queue
896  interfaceTag - Interface Identifier; unique identifier of an interface
897  status - Only returns CSR_WIFI_NME_STATUS_SUCCESS
898 
899 *******************************************************************************/
900 #define CsrWifiNmeWpsCancelCfmCreate(msg__, dst__, src__, interfaceTag__, status__) \
901  msg__ = kmalloc(sizeof(CsrWifiNmeWpsCancelCfm), GFP_KERNEL); \
902  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_WPS_CANCEL_CFM, dst__, src__); \
903  msg__->interfaceTag = (interfaceTag__); \
904  msg__->status = (status__);
905 
906 #define CsrWifiNmeWpsCancelCfmSendTo(dst__, src__, interfaceTag__, status__) \
907  { \
908  CsrWifiNmeWpsCancelCfm *msg__; \
909  CsrWifiNmeWpsCancelCfmCreate(msg__, dst__, src__, interfaceTag__, status__); \
910  CsrSchedMessagePut(dst__, CSR_WIFI_NME_PRIM, msg__); \
911  }
912 
913 #define CsrWifiNmeWpsCancelCfmSend(dst__, interfaceTag__, status__) \
914  CsrWifiNmeWpsCancelCfmSendTo(dst__, CSR_WIFI_NME_IFACEQUEUE, interfaceTag__, status__)
915 
916 /*******************************************************************************
917 
918  NAME
919  CsrWifiNmeWpsCfmSend
920 
921  DESCRIPTION
922  Reports the status of the NME WPS REQ.
923  If CSR_WIFI_NME_STATUS_SUCCESS, the profile parameter contains the
924  identity and credentials of the AP.
925 
926  PARAMETERS
927  queue - Destination Task Queue
928  interfaceTag - Interface Identifier; unique identifier of an interface
929  status - Indicates the success or otherwise of the requested
930  operation.
931  profile - This parameter is relevant only if
932  status==CSR_WIFI_NME_STATUS_SUCCESS.
933  The identity and credentials of the network.
934 
935 *******************************************************************************/
936 #define CsrWifiNmeWpsCfmCreate(msg__, dst__, src__, interfaceTag__, status__, profile__) \
937  msg__ = kmalloc(sizeof(CsrWifiNmeWpsCfm), GFP_KERNEL); \
938  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_WPS_CFM, dst__, src__); \
939  msg__->interfaceTag = (interfaceTag__); \
940  msg__->status = (status__); \
941  msg__->profile = (profile__);
942 
943 #define CsrWifiNmeWpsCfmSendTo(dst__, src__, interfaceTag__, status__, profile__) \
944  { \
945  CsrWifiNmeWpsCfm *msg__; \
946  CsrWifiNmeWpsCfmCreate(msg__, dst__, src__, interfaceTag__, status__, profile__); \
947  CsrSchedMessagePut(dst__, CSR_WIFI_NME_PRIM, msg__); \
948  }
949 
950 #define CsrWifiNmeWpsCfmSend(dst__, interfaceTag__, status__, profile__) \
951  CsrWifiNmeWpsCfmSendTo(dst__, CSR_WIFI_NME_IFACEQUEUE, interfaceTag__, status__, profile__)
952 
953 /*******************************************************************************
954 
955  NAME
956  CsrWifiNmeWpsConfigSetReqSend
957 
958  DESCRIPTION
959  This primitive passes the WPS information for the device to NME. This may
960  be accepted only if no interface is active.
961 
962  PARAMETERS
963  queue - Message Source Task Queue (Cfm's will be sent to this Queue)
964  wpsConfig - WPS config.
965 
966 *******************************************************************************/
967 #define CsrWifiNmeWpsConfigSetReqCreate(msg__, dst__, src__, wpsConfig__) \
968  msg__ = kmalloc(sizeof(CsrWifiNmeWpsConfigSetReq), GFP_KERNEL); \
969  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_WPS_CONFIG_SET_REQ, dst__, src__); \
970  msg__->wpsConfig = (wpsConfig__);
971 
972 #define CsrWifiNmeWpsConfigSetReqSendTo(dst__, src__, wpsConfig__) \
973  { \
974  CsrWifiNmeWpsConfigSetReq *msg__; \
975  CsrWifiNmeWpsConfigSetReqCreate(msg__, dst__, src__, wpsConfig__); \
976  CsrMsgTransport(dst__, CSR_WIFI_NME_PRIM, msg__); \
977  }
978 
979 #define CsrWifiNmeWpsConfigSetReqSend(src__, wpsConfig__) \
980  CsrWifiNmeWpsConfigSetReqSendTo(CSR_WIFI_NME_IFACEQUEUE, src__, wpsConfig__)
981 
982 /*******************************************************************************
983 
984  NAME
985  CsrWifiNmeWpsConfigSetCfmSend
986 
987  DESCRIPTION
988  Confirm.
989 
990  PARAMETERS
991  queue - Destination Task Queue
992  status - Status of the request.
993 
994 *******************************************************************************/
995 #define CsrWifiNmeWpsConfigSetCfmCreate(msg__, dst__, src__, status__) \
996  msg__ = kmalloc(sizeof(CsrWifiNmeWpsConfigSetCfm), GFP_KERNEL); \
997  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_WPS_CONFIG_SET_CFM, dst__, src__); \
998  msg__->status = (status__);
999 
1000 #define CsrWifiNmeWpsConfigSetCfmSendTo(dst__, src__, status__) \
1001  { \
1002  CsrWifiNmeWpsConfigSetCfm *msg__; \
1003  CsrWifiNmeWpsConfigSetCfmCreate(msg__, dst__, src__, status__); \
1004  CsrSchedMessagePut(dst__, CSR_WIFI_NME_PRIM, msg__); \
1005  }
1006 
1007 #define CsrWifiNmeWpsConfigSetCfmSend(dst__, status__) \
1008  CsrWifiNmeWpsConfigSetCfmSendTo(dst__, CSR_WIFI_NME_IFACEQUEUE, status__)
1009 
1010 /*******************************************************************************
1011 
1012  NAME
1013  CsrWifiNmeWpsReqSend
1014 
1015  DESCRIPTION
1016  Requests the NME to look for WPS enabled APs and attempt to perform WPS
1017  to determine the appropriate security credentials to connect to the AP.
1018  If the PIN == '00000000' then 'push button mode' is indicated, otherwise
1019  the PIN has to match that of the AP. 4 digit pin is passed by sending the
1020  pin digits in pin[0]..pin[3] and rest of the contents filled with '-'.
1021 
1022  PARAMETERS
1023  queue - Message Source Task Queue (Cfm's will be sent to this Queue)
1024  interfaceTag - Interface Identifier; unique identifier of an interface
1025  pin - PIN value.
1026  ssid - Service Set identifier
1027  bssid - ID of Basic Service Set for which a WPS connection attempt is
1028  being made.
1029 
1030 *******************************************************************************/
1031 #define CsrWifiNmeWpsReqCreate(msg__, dst__, src__, interfaceTag__, pin__, ssid__, bssid__) \
1032  msg__ = kmalloc(sizeof(CsrWifiNmeWpsReq), GFP_KERNEL); \
1033  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_PRIM, CSR_WIFI_NME_WPS_REQ, dst__, src__); \
1034  msg__->interfaceTag = (interfaceTag__); \
1035  memcpy(msg__->pin, (pin__), sizeof(u8) * 8); \
1036  msg__->ssid = (ssid__); \
1037  msg__->bssid = (bssid__);
1038 
1039 #define CsrWifiNmeWpsReqSendTo(dst__, src__, interfaceTag__, pin__, ssid__, bssid__) \
1040  { \
1041  CsrWifiNmeWpsReq *msg__; \
1042  CsrWifiNmeWpsReqCreate(msg__, dst__, src__, interfaceTag__, pin__, ssid__, bssid__); \
1043  CsrMsgTransport(dst__, CSR_WIFI_NME_PRIM, msg__); \
1044  }
1045 
1046 #define CsrWifiNmeWpsReqSend(src__, interfaceTag__, pin__, ssid__, bssid__) \
1047  CsrWifiNmeWpsReqSendTo(CSR_WIFI_NME_IFACEQUEUE, src__, interfaceTag__, pin__, ssid__, bssid__)
1048 
1049 
1050 #ifdef __cplusplus
1051 }
1052 #endif
1053 
1054 #endif /* CSR_WIFI_NME_LIB_H__ */