Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
csr_wifi_nme_ap_lib.h
Go to the documentation of this file.
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_NME_AP_LIB_H__
14 #define CSR_WIFI_NME_AP_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_ap_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_ap_lib.h
32 #endif
33 #ifndef CSR_WIFI_AP_ENABLE
34 #error CSR_WIFI_AP_ENABLE MUST be defined inorder to use csr_wifi_nme_ap_lib.h
35 #endif
36 
37 /*----------------------------------------------------------------------------*
38  * CsrWifiNmeApFreeUpstreamMessageContents
39  *
40  * DESCRIPTION
41  * Free the allocated memory in a CSR_WIFI_NME_AP upstream message. Does not
42  * free the message itself, and can only be used for upstream messages.
43  *
44  * PARAMETERS
45  * Deallocates the resources in a CSR_WIFI_NME_AP upstream message
46  *----------------------------------------------------------------------------*/
48 
49 /*----------------------------------------------------------------------------*
50  * CsrWifiNmeApFreeDownstreamMessageContents
51  *
52  * DESCRIPTION
53  * Free the allocated memory in a CSR_WIFI_NME_AP downstream message. Does not
54  * free the message itself, and can only be used for downstream messages.
55  *
56  * PARAMETERS
57  * Deallocates the resources in a CSR_WIFI_NME_AP downstream message
58  *----------------------------------------------------------------------------*/
60 
61 /*----------------------------------------------------------------------------*
62  * Enum to string functions
63  *----------------------------------------------------------------------------*/
65 
66 
67 /*----------------------------------------------------------------------------*
68  * CsrPrim Type toString function.
69  * Converts a message type to the String name of the Message
70  *----------------------------------------------------------------------------*/
71 const char* CsrWifiNmeApPrimTypeToString(CsrPrim msgType);
72 
73 /*----------------------------------------------------------------------------*
74  * Lookup arrays for PrimType name Strings
75  *----------------------------------------------------------------------------*/
78 
79 /*******************************************************************************
80 
81  NAME
82  CsrWifiNmeApConfigSetReqSend
83 
84  DESCRIPTION
85  This primitive passes AP configuration info for NME. This can be sent at
86  any time but will be acted upon when the AP is started again. This
87  information is common to both P2P GO and AP
88 
89  PARAMETERS
90  queue - Message Source Task Queue (Cfm's will be sent to this Queue)
91  apConfig - AP configuration for the NME.
92  apMacConfig - MAC configuration to be acted on when
93  CSR_WIFI_NME_AP_START.request is sent.
94 
95 *******************************************************************************/
96 #define CsrWifiNmeApConfigSetReqCreate(msg__, dst__, src__, apConfig__, apMacConfig__) \
97  msg__ = kmalloc(sizeof(CsrWifiNmeApConfigSetReq), GFP_KERNEL); \
98  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_AP_PRIM, CSR_WIFI_NME_AP_CONFIG_SET_REQ, dst__, src__); \
99  msg__->apConfig = (apConfig__); \
100  msg__->apMacConfig = (apMacConfig__);
101 
102 #define CsrWifiNmeApConfigSetReqSendTo(dst__, src__, apConfig__, apMacConfig__) \
103  { \
104  CsrWifiNmeApConfigSetReq *msg__; \
105  CsrWifiNmeApConfigSetReqCreate(msg__, dst__, src__, apConfig__, apMacConfig__); \
106  CsrMsgTransport(dst__, CSR_WIFI_NME_AP_PRIM, msg__); \
107  }
108 
109 #define CsrWifiNmeApConfigSetReqSend(src__, apConfig__, apMacConfig__) \
110  CsrWifiNmeApConfigSetReqSendTo(CSR_WIFI_NME_IFACEQUEUE, src__, apConfig__, apMacConfig__)
111 
112 /*******************************************************************************
113 
114  NAME
115  CsrWifiNmeApConfigSetCfmSend
116 
117  DESCRIPTION
118  This primitive reports the result of the request.
119 
120  PARAMETERS
121  queue - Destination Task Queue
122  status - Status of the request.
123 
124 *******************************************************************************/
125 #define CsrWifiNmeApConfigSetCfmCreate(msg__, dst__, src__, status__) \
126  msg__ = kmalloc(sizeof(CsrWifiNmeApConfigSetCfm), GFP_KERNEL); \
127  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_AP_PRIM, CSR_WIFI_NME_AP_CONFIG_SET_CFM, dst__, src__); \
128  msg__->status = (status__);
129 
130 #define CsrWifiNmeApConfigSetCfmSendTo(dst__, src__, status__) \
131  { \
132  CsrWifiNmeApConfigSetCfm *msg__; \
133  CsrWifiNmeApConfigSetCfmCreate(msg__, dst__, src__, status__); \
134  CsrSchedMessagePut(dst__, CSR_WIFI_NME_AP_PRIM, msg__); \
135  }
136 
137 #define CsrWifiNmeApConfigSetCfmSend(dst__, status__) \
138  CsrWifiNmeApConfigSetCfmSendTo(dst__, CSR_WIFI_NME_IFACEQUEUE, status__)
139 
140 /*******************************************************************************
141 
142  NAME
143  CsrWifiNmeApStaRemoveReqSend
144 
145  DESCRIPTION
146  This primitive disconnects a connected station. If keepBlocking is set to
147  TRUE, the station with the specified MAC address is not allowed to
148  connect. If the requested station is not already connected,it may be
149  blocked based on keepBlocking parameter.
150 
151  PARAMETERS
152  queue - Message Source Task Queue (Cfm's will be sent to this Queue)
153  interfaceTag - Interface Identifier; unique identifier of an interface
154  staMacAddress - Mac Address of the station to be disconnected or blocked
155  keepBlocking - If TRUE, the station is blocked. If FALSE and the station is
156  connected, disconnect the station. If FALSE and the station
157  is not connected, no action is taken.
158 
159 *******************************************************************************/
160 #define CsrWifiNmeApStaRemoveReqCreate(msg__, dst__, src__, interfaceTag__, staMacAddress__, keepBlocking__) \
161  msg__ = kmalloc(sizeof(CsrWifiNmeApStaRemoveReq), GFP_KERNEL); \
162  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_AP_PRIM, CSR_WIFI_NME_AP_STA_REMOVE_REQ, dst__, src__); \
163  msg__->interfaceTag = (interfaceTag__); \
164  msg__->staMacAddress = (staMacAddress__); \
165  msg__->keepBlocking = (keepBlocking__);
166 
167 #define CsrWifiNmeApStaRemoveReqSendTo(dst__, src__, interfaceTag__, staMacAddress__, keepBlocking__) \
168  { \
169  CsrWifiNmeApStaRemoveReq *msg__; \
170  CsrWifiNmeApStaRemoveReqCreate(msg__, dst__, src__, interfaceTag__, staMacAddress__, keepBlocking__); \
171  CsrMsgTransport(dst__, CSR_WIFI_NME_AP_PRIM, msg__); \
172  }
173 
174 #define CsrWifiNmeApStaRemoveReqSend(src__, interfaceTag__, staMacAddress__, keepBlocking__) \
175  CsrWifiNmeApStaRemoveReqSendTo(CSR_WIFI_NME_IFACEQUEUE, src__, interfaceTag__, staMacAddress__, keepBlocking__)
176 
177 /*******************************************************************************
178 
179  NAME
180  CsrWifiNmeApStartReqSend
181 
182  DESCRIPTION
183  This primitive requests NME to started the AP operation.
184 
185  PARAMETERS
186  queue - Message Source Task Queue (Cfm's will be sent to this Queue)
187  interfaceTag - Interface identifier; unique identifier of an interface
188  apType - AP Type specifies the Legacy AP or P2P GO operation
189  cloakSsid - Indicates whether the SSID should be cloaked (hidden and
190  not broadcast in beacon) or not
191  ssid - Service Set Identifier
192  ifIndex - Radio interface
193  channel - Channel number of the channel to use
194  apCredentials - Security credential configuration.
195  maxConnections - Maximum number of stations/P2P clients allowed
196  p2pGoParam - P2P specific GO parameters.
197  wpsEnabled - Indicates whether WPS should be enabled or not
198 
199 *******************************************************************************/
200 #define CsrWifiNmeApStartReqCreate(msg__, dst__, src__, interfaceTag__, apType__, cloakSsid__, ssid__, ifIndex__, channel__, apCredentials__, maxConnections__, p2pGoParam__, wpsEnabled__) \
201  msg__ = kmalloc(sizeof(CsrWifiNmeApStartReq), GFP_KERNEL); \
202  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_AP_PRIM, CSR_WIFI_NME_AP_START_REQ, dst__, src__); \
203  msg__->interfaceTag = (interfaceTag__); \
204  msg__->apType = (apType__); \
205  msg__->cloakSsid = (cloakSsid__); \
206  msg__->ssid = (ssid__); \
207  msg__->ifIndex = (ifIndex__); \
208  msg__->channel = (channel__); \
209  msg__->apCredentials = (apCredentials__); \
210  msg__->maxConnections = (maxConnections__); \
211  msg__->p2pGoParam = (p2pGoParam__); \
212  msg__->wpsEnabled = (wpsEnabled__);
213 
214 #define CsrWifiNmeApStartReqSendTo(dst__, src__, interfaceTag__, apType__, cloakSsid__, ssid__, ifIndex__, channel__, apCredentials__, maxConnections__, p2pGoParam__, wpsEnabled__) \
215  { \
216  CsrWifiNmeApStartReq *msg__; \
217  CsrWifiNmeApStartReqCreate(msg__, dst__, src__, interfaceTag__, apType__, cloakSsid__, ssid__, ifIndex__, channel__, apCredentials__, maxConnections__, p2pGoParam__, wpsEnabled__); \
218  CsrMsgTransport(dst__, CSR_WIFI_NME_AP_PRIM, msg__); \
219  }
220 
221 #define CsrWifiNmeApStartReqSend(src__, interfaceTag__, apType__, cloakSsid__, ssid__, ifIndex__, channel__, apCredentials__, maxConnections__, p2pGoParam__, wpsEnabled__) \
222  CsrWifiNmeApStartReqSendTo(CSR_WIFI_NME_IFACEQUEUE, src__, interfaceTag__, apType__, cloakSsid__, ssid__, ifIndex__, channel__, apCredentials__, maxConnections__, p2pGoParam__, wpsEnabled__)
223 
224 /*******************************************************************************
225 
226  NAME
227  CsrWifiNmeApStartCfmSend
228 
229  DESCRIPTION
230  This primitive reports the result of CSR_WIFI_NME_AP_START.request.
231 
232  PARAMETERS
233  queue - Destination Task Queue
234  interfaceTag - Interface identifier; unique identifier of an interface
235  status - Status of the request.
236  ssid - Service Set Identifier
237 
238 *******************************************************************************/
239 #define CsrWifiNmeApStartCfmCreate(msg__, dst__, src__, interfaceTag__, status__, ssid__) \
240  msg__ = kmalloc(sizeof(CsrWifiNmeApStartCfm), GFP_KERNEL); \
241  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_AP_PRIM, CSR_WIFI_NME_AP_START_CFM, dst__, src__); \
242  msg__->interfaceTag = (interfaceTag__); \
243  msg__->status = (status__); \
244  msg__->ssid = (ssid__);
245 
246 #define CsrWifiNmeApStartCfmSendTo(dst__, src__, interfaceTag__, status__, ssid__) \
247  { \
248  CsrWifiNmeApStartCfm *msg__; \
249  CsrWifiNmeApStartCfmCreate(msg__, dst__, src__, interfaceTag__, status__, ssid__); \
250  CsrSchedMessagePut(dst__, CSR_WIFI_NME_AP_PRIM, msg__); \
251  }
252 
253 #define CsrWifiNmeApStartCfmSend(dst__, interfaceTag__, status__, ssid__) \
254  CsrWifiNmeApStartCfmSendTo(dst__, CSR_WIFI_NME_IFACEQUEUE, interfaceTag__, status__, ssid__)
255 
256 /*******************************************************************************
257 
258  NAME
259  CsrWifiNmeApStationIndSend
260 
261  DESCRIPTION
262  This primitive indicates that a station has joined or a previously joined
263  station has left the BSS/group
264 
265  PARAMETERS
266  queue - Destination Task Queue
267  interfaceTag - Interface Identifier; unique identifier of an interface
268  mediaStatus - Indicates whether the station is connected or
269  disconnected
270  peerMacAddress - MAC address of the station
271  peerDeviceAddress - P2P Device Address
272 
273 *******************************************************************************/
274 #define CsrWifiNmeApStationIndCreate(msg__, dst__, src__, interfaceTag__, mediaStatus__, peerMacAddress__, peerDeviceAddress__) \
275  msg__ = kmalloc(sizeof(CsrWifiNmeApStationInd), GFP_KERNEL); \
276  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_AP_PRIM, CSR_WIFI_NME_AP_STATION_IND, dst__, src__); \
277  msg__->interfaceTag = (interfaceTag__); \
278  msg__->mediaStatus = (mediaStatus__); \
279  msg__->peerMacAddress = (peerMacAddress__); \
280  msg__->peerDeviceAddress = (peerDeviceAddress__);
281 
282 #define CsrWifiNmeApStationIndSendTo(dst__, src__, interfaceTag__, mediaStatus__, peerMacAddress__, peerDeviceAddress__) \
283  { \
284  CsrWifiNmeApStationInd *msg__; \
285  CsrWifiNmeApStationIndCreate(msg__, dst__, src__, interfaceTag__, mediaStatus__, peerMacAddress__, peerDeviceAddress__); \
286  CsrSchedMessagePut(dst__, CSR_WIFI_NME_AP_PRIM, msg__); \
287  }
288 
289 #define CsrWifiNmeApStationIndSend(dst__, interfaceTag__, mediaStatus__, peerMacAddress__, peerDeviceAddress__) \
290  CsrWifiNmeApStationIndSendTo(dst__, CSR_WIFI_NME_IFACEQUEUE, interfaceTag__, mediaStatus__, peerMacAddress__, peerDeviceAddress__)
291 
292 /*******************************************************************************
293 
294  NAME
295  CsrWifiNmeApStopReqSend
296 
297  DESCRIPTION
298  This primitive requests NME to stop the AP operation.
299 
300  PARAMETERS
301  queue - Message Source Task Queue (Cfm's will be sent to this Queue)
302  interfaceTag - Interface identifier; unique identifier of an interface
303 
304 *******************************************************************************/
305 #define CsrWifiNmeApStopReqCreate(msg__, dst__, src__, interfaceTag__) \
306  msg__ = kmalloc(sizeof(CsrWifiNmeApStopReq), GFP_KERNEL); \
307  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_AP_PRIM, CSR_WIFI_NME_AP_STOP_REQ, dst__, src__); \
308  msg__->interfaceTag = (interfaceTag__);
309 
310 #define CsrWifiNmeApStopReqSendTo(dst__, src__, interfaceTag__) \
311  { \
312  CsrWifiNmeApStopReq *msg__; \
313  CsrWifiNmeApStopReqCreate(msg__, dst__, src__, interfaceTag__); \
314  CsrMsgTransport(dst__, CSR_WIFI_NME_AP_PRIM, msg__); \
315  }
316 
317 #define CsrWifiNmeApStopReqSend(src__, interfaceTag__) \
318  CsrWifiNmeApStopReqSendTo(CSR_WIFI_NME_IFACEQUEUE, src__, interfaceTag__)
319 
320 /*******************************************************************************
321 
322  NAME
323  CsrWifiNmeApStopIndSend
324 
325  DESCRIPTION
326  Indicates that AP operation had stopped because of some unrecoverable
327  error after AP operation was started successfully. NME sends this signal
328  after failing to restart the AP operation internally following an error
329 
330  PARAMETERS
331  queue - Destination Task Queue
332  interfaceTag - Interface Identifier; unique identifier of an interface
333  apType - Reports AP Type (P2PGO or AP)
334  status - Error Status
335 
336 *******************************************************************************/
337 #define CsrWifiNmeApStopIndCreate(msg__, dst__, src__, interfaceTag__, apType__, status__) \
338  msg__ = kmalloc(sizeof(CsrWifiNmeApStopInd), GFP_KERNEL); \
339  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_AP_PRIM, CSR_WIFI_NME_AP_STOP_IND, dst__, src__); \
340  msg__->interfaceTag = (interfaceTag__); \
341  msg__->apType = (apType__); \
342  msg__->status = (status__);
343 
344 #define CsrWifiNmeApStopIndSendTo(dst__, src__, interfaceTag__, apType__, status__) \
345  { \
346  CsrWifiNmeApStopInd *msg__; \
347  CsrWifiNmeApStopIndCreate(msg__, dst__, src__, interfaceTag__, apType__, status__); \
348  CsrSchedMessagePut(dst__, CSR_WIFI_NME_AP_PRIM, msg__); \
349  }
350 
351 #define CsrWifiNmeApStopIndSend(dst__, interfaceTag__, apType__, status__) \
352  CsrWifiNmeApStopIndSendTo(dst__, CSR_WIFI_NME_IFACEQUEUE, interfaceTag__, apType__, status__)
353 
354 /*******************************************************************************
355 
356  NAME
357  CsrWifiNmeApStopCfmSend
358 
359  DESCRIPTION
360  This primitive confirms that the AP operation is stopped. NME shall send
361  this primitive in response to the request even if AP operation has
362  already been stopped
363 
364  PARAMETERS
365  queue - Destination Task Queue
366  interfaceTag - Interface identifier; unique identifier of an interface
367  status - Status of the request.
368 
369 *******************************************************************************/
370 #define CsrWifiNmeApStopCfmCreate(msg__, dst__, src__, interfaceTag__, status__) \
371  msg__ = kmalloc(sizeof(CsrWifiNmeApStopCfm), GFP_KERNEL); \
372  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_AP_PRIM, CSR_WIFI_NME_AP_STOP_CFM, dst__, src__); \
373  msg__->interfaceTag = (interfaceTag__); \
374  msg__->status = (status__);
375 
376 #define CsrWifiNmeApStopCfmSendTo(dst__, src__, interfaceTag__, status__) \
377  { \
378  CsrWifiNmeApStopCfm *msg__; \
379  CsrWifiNmeApStopCfmCreate(msg__, dst__, src__, interfaceTag__, status__); \
380  CsrSchedMessagePut(dst__, CSR_WIFI_NME_AP_PRIM, msg__); \
381  }
382 
383 #define CsrWifiNmeApStopCfmSend(dst__, interfaceTag__, status__) \
384  CsrWifiNmeApStopCfmSendTo(dst__, CSR_WIFI_NME_IFACEQUEUE, interfaceTag__, status__)
385 
386 /*******************************************************************************
387 
388  NAME
389  CsrWifiNmeApWmmParamUpdateReqSend
390 
391  DESCRIPTION
392  Application uses this primitive to update the WMM parameters
393 
394  PARAMETERS
395  queue - Message Source Task Queue (Cfm's will be sent to this Queue)
396  wmmApParams - WMM Access point parameters per access category. The array
397  index corresponds to the ACI
398  wmmApBcParams - WMM station parameters per access category to be advertised
399  in the beacons and probe response The array index
400  corresponds to the ACI
401 
402 *******************************************************************************/
403 #define CsrWifiNmeApWmmParamUpdateReqCreate(msg__, dst__, src__, wmmApParams__, wmmApBcParams__) \
404  msg__ = kmalloc(sizeof(CsrWifiNmeApWmmParamUpdateReq), GFP_KERNEL); \
405  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_AP_PRIM, CSR_WIFI_NME_AP_WMM_PARAM_UPDATE_REQ, dst__, src__); \
406  memcpy(msg__->wmmApParams, (wmmApParams__), sizeof(CsrWifiSmeWmmAcParams) * 4); \
407  memcpy(msg__->wmmApBcParams, (wmmApBcParams__), sizeof(CsrWifiSmeWmmAcParams) * 4);
408 
409 #define CsrWifiNmeApWmmParamUpdateReqSendTo(dst__, src__, wmmApParams__, wmmApBcParams__) \
410  { \
411  CsrWifiNmeApWmmParamUpdateReq *msg__; \
412  CsrWifiNmeApWmmParamUpdateReqCreate(msg__, dst__, src__, wmmApParams__, wmmApBcParams__); \
413  CsrMsgTransport(dst__, CSR_WIFI_NME_AP_PRIM, msg__); \
414  }
415 
416 #define CsrWifiNmeApWmmParamUpdateReqSend(src__, wmmApParams__, wmmApBcParams__) \
417  CsrWifiNmeApWmmParamUpdateReqSendTo(CSR_WIFI_NME_IFACEQUEUE, src__, wmmApParams__, wmmApBcParams__)
418 
419 /*******************************************************************************
420 
421  NAME
422  CsrWifiNmeApWmmParamUpdateCfmSend
423 
424  DESCRIPTION
425  A confirm for for the WMM parameters update
426 
427  PARAMETERS
428  queue - Destination Task Queue
429  status - Status of the request.
430 
431 *******************************************************************************/
432 #define CsrWifiNmeApWmmParamUpdateCfmCreate(msg__, dst__, src__, status__) \
433  msg__ = kmalloc(sizeof(CsrWifiNmeApWmmParamUpdateCfm), GFP_KERNEL); \
434  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_AP_PRIM, CSR_WIFI_NME_AP_WMM_PARAM_UPDATE_CFM, dst__, src__); \
435  msg__->status = (status__);
436 
437 #define CsrWifiNmeApWmmParamUpdateCfmSendTo(dst__, src__, status__) \
438  { \
439  CsrWifiNmeApWmmParamUpdateCfm *msg__; \
440  CsrWifiNmeApWmmParamUpdateCfmCreate(msg__, dst__, src__, status__); \
441  CsrSchedMessagePut(dst__, CSR_WIFI_NME_AP_PRIM, msg__); \
442  }
443 
444 #define CsrWifiNmeApWmmParamUpdateCfmSend(dst__, status__) \
445  CsrWifiNmeApWmmParamUpdateCfmSendTo(dst__, CSR_WIFI_NME_IFACEQUEUE, status__)
446 
447 /*******************************************************************************
448 
449  NAME
450  CsrWifiNmeApWpsRegisterReqSend
451 
452  DESCRIPTION
453  This primitive allows the NME to accept the WPS registration from an
454  enrollee. Such registration procedure can be cancelled by sending
455  CSR_WIFI_NME_WPS_CANCEL.request.
456 
457  PARAMETERS
458  queue - Message Source Task Queue (Cfm's will be sent to this Queue)
459  interfaceTag - Interface Identifier; unique identifier of an
460  interface
461  selectedDevicePasswordId - Selected password type
462  selectedConfigMethod - Selected WPS configuration method type
463  pin - PIN value.
464  Relevant if selected device password ID is PIN.4
465  digit pin is passed by sending the pin digits in
466  pin[0]..pin[3] and rest of the contents filled
467  with '-'.
468 
469 *******************************************************************************/
470 #define CsrWifiNmeApWpsRegisterReqCreate(msg__, dst__, src__, interfaceTag__, selectedDevicePasswordId__, selectedConfigMethod__, pin__) \
471  msg__ = kmalloc(sizeof(CsrWifiNmeApWpsRegisterReq), GFP_KERNEL); \
472  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_AP_PRIM, CSR_WIFI_NME_AP_WPS_REGISTER_REQ, dst__, src__); \
473  msg__->interfaceTag = (interfaceTag__); \
474  msg__->selectedDevicePasswordId = (selectedDevicePasswordId__); \
475  msg__->selectedConfigMethod = (selectedConfigMethod__); \
476  memcpy(msg__->pin, (pin__), sizeof(u8) * 8);
477 
478 #define CsrWifiNmeApWpsRegisterReqSendTo(dst__, src__, interfaceTag__, selectedDevicePasswordId__, selectedConfigMethod__, pin__) \
479  { \
480  CsrWifiNmeApWpsRegisterReq *msg__; \
481  CsrWifiNmeApWpsRegisterReqCreate(msg__, dst__, src__, interfaceTag__, selectedDevicePasswordId__, selectedConfigMethod__, pin__); \
482  CsrMsgTransport(dst__, CSR_WIFI_NME_AP_PRIM, msg__); \
483  }
484 
485 #define CsrWifiNmeApWpsRegisterReqSend(src__, interfaceTag__, selectedDevicePasswordId__, selectedConfigMethod__, pin__) \
486  CsrWifiNmeApWpsRegisterReqSendTo(CSR_WIFI_NME_IFACEQUEUE, src__, interfaceTag__, selectedDevicePasswordId__, selectedConfigMethod__, pin__)
487 
488 /*******************************************************************************
489 
490  NAME
491  CsrWifiNmeApWpsRegisterCfmSend
492 
493  DESCRIPTION
494  This primitive reports the result of WPS procedure.
495 
496  PARAMETERS
497  queue - Destination Task Queue
498  interfaceTag - Interface identifier; unique identifier of an interface
499  status - Status of the request.
500 
501 *******************************************************************************/
502 #define CsrWifiNmeApWpsRegisterCfmCreate(msg__, dst__, src__, interfaceTag__, status__) \
503  msg__ = kmalloc(sizeof(CsrWifiNmeApWpsRegisterCfm), GFP_KERNEL); \
504  CsrWifiFsmEventInit(&msg__->common, CSR_WIFI_NME_AP_PRIM, CSR_WIFI_NME_AP_WPS_REGISTER_CFM, dst__, src__); \
505  msg__->interfaceTag = (interfaceTag__); \
506  msg__->status = (status__);
507 
508 #define CsrWifiNmeApWpsRegisterCfmSendTo(dst__, src__, interfaceTag__, status__) \
509  { \
510  CsrWifiNmeApWpsRegisterCfm *msg__; \
511  CsrWifiNmeApWpsRegisterCfmCreate(msg__, dst__, src__, interfaceTag__, status__); \
512  CsrSchedMessagePut(dst__, CSR_WIFI_NME_AP_PRIM, msg__); \
513  }
514 
515 #define CsrWifiNmeApWpsRegisterCfmSend(dst__, interfaceTag__, status__) \
516  CsrWifiNmeApWpsRegisterCfmSendTo(dst__, CSR_WIFI_NME_IFACEQUEUE, interfaceTag__, status__)
517 
518 
519 #ifdef __cplusplus
520 }
521 #endif
522 
523 #endif /* CSR_WIFI_NME_AP_LIB_H__ */