ACPI / dock: fix error return code in dock_add()
[firefly-linux-kernel-4.4.55.git] / drivers / staging / csr / csr_wifi_sme_serialize.c
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 #include <linux/string.h>
13 #include <linux/slab.h>
14 #include "csr_msgconv.h"
15 #include "csr_wifi_sme_prim.h"
16 #include "csr_wifi_sme_serialize.h"
17
18 void CsrWifiSmePfree(void *ptr)
19 {
20     kfree(ptr);
21 }
22
23
24 size_t CsrWifiSmeAdhocConfigSetReqSizeof(void *msg)
25 {
26     size_t bufferSize = 2;
27
28     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 11) */
29     bufferSize += 2; /* u16 primitive->adHocConfig.atimWindowTu */
30     bufferSize += 2; /* u16 primitive->adHocConfig.beaconPeriodTu */
31     bufferSize += 2; /* u16 primitive->adHocConfig.joinOnlyAttempts */
32     bufferSize += 2; /* u16 primitive->adHocConfig.joinAttemptIntervalMs */
33     return bufferSize;
34 }
35
36
37 u8* CsrWifiSmeAdhocConfigSetReqSer(u8 *ptr, size_t *len, void *msg)
38 {
39     CsrWifiSmeAdhocConfigSetReq *primitive = (CsrWifiSmeAdhocConfigSetReq *)msg;
40     *len = 0;
41     CsrUint16Ser(ptr, len, primitive->common.type);
42     CsrUint16Ser(ptr, len, (u16) primitive->adHocConfig.atimWindowTu);
43     CsrUint16Ser(ptr, len, (u16) primitive->adHocConfig.beaconPeriodTu);
44     CsrUint16Ser(ptr, len, (u16) primitive->adHocConfig.joinOnlyAttempts);
45     CsrUint16Ser(ptr, len, (u16) primitive->adHocConfig.joinAttemptIntervalMs);
46     return(ptr);
47 }
48
49
50 void* CsrWifiSmeAdhocConfigSetReqDes(u8 *buffer, size_t length)
51 {
52     CsrWifiSmeAdhocConfigSetReq *primitive = kmalloc(sizeof(CsrWifiSmeAdhocConfigSetReq), GFP_KERNEL);
53     size_t offset;
54     offset = 0;
55
56     CsrUint16Des(&primitive->common.type, buffer, &offset);
57     CsrUint16Des((u16 *) &primitive->adHocConfig.atimWindowTu, buffer, &offset);
58     CsrUint16Des((u16 *) &primitive->adHocConfig.beaconPeriodTu, buffer, &offset);
59     CsrUint16Des((u16 *) &primitive->adHocConfig.joinOnlyAttempts, buffer, &offset);
60     CsrUint16Des((u16 *) &primitive->adHocConfig.joinAttemptIntervalMs, buffer, &offset);
61
62     return primitive;
63 }
64
65
66 size_t CsrWifiSmeBlacklistReqSizeof(void *msg)
67 {
68     CsrWifiSmeBlacklistReq *primitive = (CsrWifiSmeBlacklistReq *) msg;
69     size_t bufferSize = 2;
70
71     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 13) */
72     bufferSize += 2; /* u16 primitive->interfaceTag */
73     bufferSize += 1; /* CsrWifiSmeListAction primitive->action */
74     bufferSize += 1; /* u8 primitive->setAddressCount */
75     {
76         u16 i1;
77         for (i1 = 0; i1 < primitive->setAddressCount; i1++)
78         {
79             bufferSize += 6; /* u8 primitive->setAddresses[i1].a[6] */
80         }
81     }
82     return bufferSize;
83 }
84
85
86 u8* CsrWifiSmeBlacklistReqSer(u8 *ptr, size_t *len, void *msg)
87 {
88     CsrWifiSmeBlacklistReq *primitive = (CsrWifiSmeBlacklistReq *)msg;
89     *len = 0;
90     CsrUint16Ser(ptr, len, primitive->common.type);
91     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
92     CsrUint8Ser(ptr, len, (u8) primitive->action);
93     CsrUint8Ser(ptr, len, (u8) primitive->setAddressCount);
94     {
95         u16 i1;
96         for (i1 = 0; i1 < primitive->setAddressCount; i1++)
97         {
98             CsrMemCpySer(ptr, len, (const void *) primitive->setAddresses[i1].a, ((u16) (6)));
99         }
100     }
101     return(ptr);
102 }
103
104
105 void* CsrWifiSmeBlacklistReqDes(u8 *buffer, size_t length)
106 {
107     CsrWifiSmeBlacklistReq *primitive = kmalloc(sizeof(CsrWifiSmeBlacklistReq), GFP_KERNEL);
108     size_t offset;
109     offset = 0;
110
111     CsrUint16Des(&primitive->common.type, buffer, &offset);
112     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
113     CsrUint8Des((u8 *) &primitive->action, buffer, &offset);
114     CsrUint8Des((u8 *) &primitive->setAddressCount, buffer, &offset);
115     primitive->setAddresses = NULL;
116     if (primitive->setAddressCount)
117     {
118         primitive->setAddresses = kmalloc(sizeof(CsrWifiMacAddress) * primitive->setAddressCount, GFP_KERNEL);
119     }
120     {
121         u16 i1;
122         for (i1 = 0; i1 < primitive->setAddressCount; i1++)
123         {
124             CsrMemCpyDes(primitive->setAddresses[i1].a, buffer, &offset, ((u16) (6)));
125         }
126     }
127
128     return primitive;
129 }
130
131
132 void CsrWifiSmeBlacklistReqSerFree(void *voidPrimitivePointer)
133 {
134     CsrWifiSmeBlacklistReq *primitive = (CsrWifiSmeBlacklistReq *) voidPrimitivePointer;
135     kfree(primitive->setAddresses);
136     kfree(primitive);
137 }
138
139
140 size_t CsrWifiSmeCalibrationDataSetReqSizeof(void *msg)
141 {
142     CsrWifiSmeCalibrationDataSetReq *primitive = (CsrWifiSmeCalibrationDataSetReq *) msg;
143     size_t bufferSize = 2;
144
145     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 6) */
146     bufferSize += 2;                                /* u16 primitive->calibrationDataLength */
147     bufferSize += primitive->calibrationDataLength; /* u8 primitive->calibrationData */
148     return bufferSize;
149 }
150
151
152 u8* CsrWifiSmeCalibrationDataSetReqSer(u8 *ptr, size_t *len, void *msg)
153 {
154     CsrWifiSmeCalibrationDataSetReq *primitive = (CsrWifiSmeCalibrationDataSetReq *)msg;
155     *len = 0;
156     CsrUint16Ser(ptr, len, primitive->common.type);
157     CsrUint16Ser(ptr, len, (u16) primitive->calibrationDataLength);
158     if (primitive->calibrationDataLength)
159     {
160         CsrMemCpySer(ptr, len, (const void *) primitive->calibrationData, ((u16) (primitive->calibrationDataLength)));
161     }
162     return(ptr);
163 }
164
165
166 void* CsrWifiSmeCalibrationDataSetReqDes(u8 *buffer, size_t length)
167 {
168     CsrWifiSmeCalibrationDataSetReq *primitive = kmalloc(sizeof(CsrWifiSmeCalibrationDataSetReq), GFP_KERNEL);
169     size_t offset;
170     offset = 0;
171
172     CsrUint16Des(&primitive->common.type, buffer, &offset);
173     CsrUint16Des((u16 *) &primitive->calibrationDataLength, buffer, &offset);
174     if (primitive->calibrationDataLength)
175     {
176         primitive->calibrationData = kmalloc(primitive->calibrationDataLength, GFP_KERNEL);
177         CsrMemCpyDes(primitive->calibrationData, buffer, &offset, ((u16) (primitive->calibrationDataLength)));
178     }
179     else
180     {
181         primitive->calibrationData = NULL;
182     }
183
184     return primitive;
185 }
186
187
188 void CsrWifiSmeCalibrationDataSetReqSerFree(void *voidPrimitivePointer)
189 {
190     CsrWifiSmeCalibrationDataSetReq *primitive = (CsrWifiSmeCalibrationDataSetReq *) voidPrimitivePointer;
191     kfree(primitive->calibrationData);
192     kfree(primitive);
193 }
194
195
196 size_t CsrWifiSmeCcxConfigSetReqSizeof(void *msg)
197 {
198     size_t bufferSize = 2;
199
200     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 9) */
201     bufferSize += 2; /* u16 primitive->interfaceTag */
202     bufferSize += 1; /* u8 primitive->ccxConfig.keepAliveTimeMs */
203     bufferSize += 1; /* u8 primitive->ccxConfig.apRoamingEnabled */
204     bufferSize += 1; /* u8 primitive->ccxConfig.measurementsMask */
205     bufferSize += 1; /* u8 primitive->ccxConfig.ccxRadioMgtEnabled */
206     return bufferSize;
207 }
208
209
210 u8* CsrWifiSmeCcxConfigSetReqSer(u8 *ptr, size_t *len, void *msg)
211 {
212     CsrWifiSmeCcxConfigSetReq *primitive = (CsrWifiSmeCcxConfigSetReq *)msg;
213     *len = 0;
214     CsrUint16Ser(ptr, len, primitive->common.type);
215     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
216     CsrUint8Ser(ptr, len, (u8) primitive->ccxConfig.keepAliveTimeMs);
217     CsrUint8Ser(ptr, len, (u8) primitive->ccxConfig.apRoamingEnabled);
218     CsrUint8Ser(ptr, len, (u8) primitive->ccxConfig.measurementsMask);
219     CsrUint8Ser(ptr, len, (u8) primitive->ccxConfig.ccxRadioMgtEnabled);
220     return(ptr);
221 }
222
223
224 void* CsrWifiSmeCcxConfigSetReqDes(u8 *buffer, size_t length)
225 {
226     CsrWifiSmeCcxConfigSetReq *primitive = kmalloc(sizeof(CsrWifiSmeCcxConfigSetReq), GFP_KERNEL);
227     size_t offset;
228     offset = 0;
229
230     CsrUint16Des(&primitive->common.type, buffer, &offset);
231     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
232     CsrUint8Des((u8 *) &primitive->ccxConfig.keepAliveTimeMs, buffer, &offset);
233     CsrUint8Des((u8 *) &primitive->ccxConfig.apRoamingEnabled, buffer, &offset);
234     CsrUint8Des((u8 *) &primitive->ccxConfig.measurementsMask, buffer, &offset);
235     CsrUint8Des((u8 *) &primitive->ccxConfig.ccxRadioMgtEnabled, buffer, &offset);
236
237     return primitive;
238 }
239
240
241 size_t CsrWifiSmeCoexConfigSetReqSizeof(void *msg)
242 {
243     size_t bufferSize = 2;
244
245     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 29) */
246     bufferSize += 1; /* u8 primitive->coexConfig.coexEnableSchemeManagement */
247     bufferSize += 1; /* u8 primitive->coexConfig.coexPeriodicWakeHost */
248     bufferSize += 2; /* u16 primitive->coexConfig.coexTrafficBurstyLatencyMs */
249     bufferSize += 2; /* u16 primitive->coexConfig.coexTrafficContinuousLatencyMs */
250     bufferSize += 2; /* u16 primitive->coexConfig.coexObexBlackoutDurationMs */
251     bufferSize += 2; /* u16 primitive->coexConfig.coexObexBlackoutPeriodMs */
252     bufferSize += 2; /* u16 primitive->coexConfig.coexA2dpBrBlackoutDurationMs */
253     bufferSize += 2; /* u16 primitive->coexConfig.coexA2dpBrBlackoutPeriodMs */
254     bufferSize += 2; /* u16 primitive->coexConfig.coexA2dpEdrBlackoutDurationMs */
255     bufferSize += 2; /* u16 primitive->coexConfig.coexA2dpEdrBlackoutPeriodMs */
256     bufferSize += 2; /* u16 primitive->coexConfig.coexPagingBlackoutDurationMs */
257     bufferSize += 2; /* u16 primitive->coexConfig.coexPagingBlackoutPeriodMs */
258     bufferSize += 2; /* u16 primitive->coexConfig.coexInquiryBlackoutDurationMs */
259     bufferSize += 2; /* u16 primitive->coexConfig.coexInquiryBlackoutPeriodMs */
260     return bufferSize;
261 }
262
263
264 u8* CsrWifiSmeCoexConfigSetReqSer(u8 *ptr, size_t *len, void *msg)
265 {
266     CsrWifiSmeCoexConfigSetReq *primitive = (CsrWifiSmeCoexConfigSetReq *)msg;
267     *len = 0;
268     CsrUint16Ser(ptr, len, primitive->common.type);
269     CsrUint8Ser(ptr, len, (u8) primitive->coexConfig.coexEnableSchemeManagement);
270     CsrUint8Ser(ptr, len, (u8) primitive->coexConfig.coexPeriodicWakeHost);
271     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexTrafficBurstyLatencyMs);
272     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexTrafficContinuousLatencyMs);
273     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexObexBlackoutDurationMs);
274     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexObexBlackoutPeriodMs);
275     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexA2dpBrBlackoutDurationMs);
276     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexA2dpBrBlackoutPeriodMs);
277     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexA2dpEdrBlackoutDurationMs);
278     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexA2dpEdrBlackoutPeriodMs);
279     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexPagingBlackoutDurationMs);
280     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexPagingBlackoutPeriodMs);
281     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexInquiryBlackoutDurationMs);
282     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexInquiryBlackoutPeriodMs);
283     return(ptr);
284 }
285
286
287 void* CsrWifiSmeCoexConfigSetReqDes(u8 *buffer, size_t length)
288 {
289     CsrWifiSmeCoexConfigSetReq *primitive = kmalloc(sizeof(CsrWifiSmeCoexConfigSetReq), GFP_KERNEL);
290     size_t offset;
291     offset = 0;
292
293     CsrUint16Des(&primitive->common.type, buffer, &offset);
294     CsrUint8Des((u8 *) &primitive->coexConfig.coexEnableSchemeManagement, buffer, &offset);
295     CsrUint8Des((u8 *) &primitive->coexConfig.coexPeriodicWakeHost, buffer, &offset);
296     CsrUint16Des((u16 *) &primitive->coexConfig.coexTrafficBurstyLatencyMs, buffer, &offset);
297     CsrUint16Des((u16 *) &primitive->coexConfig.coexTrafficContinuousLatencyMs, buffer, &offset);
298     CsrUint16Des((u16 *) &primitive->coexConfig.coexObexBlackoutDurationMs, buffer, &offset);
299     CsrUint16Des((u16 *) &primitive->coexConfig.coexObexBlackoutPeriodMs, buffer, &offset);
300     CsrUint16Des((u16 *) &primitive->coexConfig.coexA2dpBrBlackoutDurationMs, buffer, &offset);
301     CsrUint16Des((u16 *) &primitive->coexConfig.coexA2dpBrBlackoutPeriodMs, buffer, &offset);
302     CsrUint16Des((u16 *) &primitive->coexConfig.coexA2dpEdrBlackoutDurationMs, buffer, &offset);
303     CsrUint16Des((u16 *) &primitive->coexConfig.coexA2dpEdrBlackoutPeriodMs, buffer, &offset);
304     CsrUint16Des((u16 *) &primitive->coexConfig.coexPagingBlackoutDurationMs, buffer, &offset);
305     CsrUint16Des((u16 *) &primitive->coexConfig.coexPagingBlackoutPeriodMs, buffer, &offset);
306     CsrUint16Des((u16 *) &primitive->coexConfig.coexInquiryBlackoutDurationMs, buffer, &offset);
307     CsrUint16Des((u16 *) &primitive->coexConfig.coexInquiryBlackoutPeriodMs, buffer, &offset);
308
309     return primitive;
310 }
311
312
313 size_t CsrWifiSmeConnectReqSizeof(void *msg)
314 {
315     CsrWifiSmeConnectReq *primitive = (CsrWifiSmeConnectReq *) msg;
316     size_t bufferSize = 2;
317
318     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 57) */
319     bufferSize += 2;                                                                     /* u16 primitive->interfaceTag */
320     bufferSize += 32;                                                                    /* u8 primitive->connectionConfig.ssid.ssid[32] */
321     bufferSize += 1;                                                                     /* u8 primitive->connectionConfig.ssid.length */
322     bufferSize += 6;                                                                     /* u8 primitive->connectionConfig.bssid.a[6] */
323     bufferSize += 1;                                                                     /* CsrWifiSmeBssType primitive->connectionConfig.bssType */
324     bufferSize += 1;                                                                     /* CsrWifiSmeRadioIF primitive->connectionConfig.ifIndex */
325     bufferSize += 1;                                                                     /* CsrWifiSme80211PrivacyMode primitive->connectionConfig.privacyMode */
326     bufferSize += 2;                                                                     /* CsrWifiSmeAuthModeMask primitive->connectionConfig.authModeMask */
327     bufferSize += 2;                                                                     /* CsrWifiSmeEncryptionMask primitive->connectionConfig.encryptionModeMask */
328     bufferSize += 2;                                                                     /* u16 primitive->connectionConfig.mlmeAssociateReqInformationElementsLength */
329     bufferSize += primitive->connectionConfig.mlmeAssociateReqInformationElementsLength; /* u8 primitive->connectionConfig.mlmeAssociateReqInformationElements */
330     bufferSize += 1;                                                                     /* CsrWifiSmeWmmQosInfoMask primitive->connectionConfig.wmmQosInfo */
331     bufferSize += 1;                                                                     /* u8 primitive->connectionConfig.adhocJoinOnly */
332     bufferSize += 1;                                                                     /* u8 primitive->connectionConfig.adhocChannel */
333     return bufferSize;
334 }
335
336
337 u8* CsrWifiSmeConnectReqSer(u8 *ptr, size_t *len, void *msg)
338 {
339     CsrWifiSmeConnectReq *primitive = (CsrWifiSmeConnectReq *)msg;
340     *len = 0;
341     CsrUint16Ser(ptr, len, primitive->common.type);
342     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
343     CsrMemCpySer(ptr, len, (const void *) primitive->connectionConfig.ssid.ssid, ((u16) (32)));
344     CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.ssid.length);
345     CsrMemCpySer(ptr, len, (const void *) primitive->connectionConfig.bssid.a, ((u16) (6)));
346     CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.bssType);
347     CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.ifIndex);
348     CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.privacyMode);
349     CsrUint16Ser(ptr, len, (u16) primitive->connectionConfig.authModeMask);
350     CsrUint16Ser(ptr, len, (u16) primitive->connectionConfig.encryptionModeMask);
351     CsrUint16Ser(ptr, len, (u16) primitive->connectionConfig.mlmeAssociateReqInformationElementsLength);
352     if (primitive->connectionConfig.mlmeAssociateReqInformationElementsLength)
353     {
354         CsrMemCpySer(ptr, len, (const void *) primitive->connectionConfig.mlmeAssociateReqInformationElements, ((u16) (primitive->connectionConfig.mlmeAssociateReqInformationElementsLength)));
355     }
356     CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.wmmQosInfo);
357     CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.adhocJoinOnly);
358     CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.adhocChannel);
359     return(ptr);
360 }
361
362
363 void* CsrWifiSmeConnectReqDes(u8 *buffer, size_t length)
364 {
365     CsrWifiSmeConnectReq *primitive = kmalloc(sizeof(CsrWifiSmeConnectReq), GFP_KERNEL);
366     size_t offset;
367     offset = 0;
368
369     CsrUint16Des(&primitive->common.type, buffer, &offset);
370     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
371     CsrMemCpyDes(primitive->connectionConfig.ssid.ssid, buffer, &offset, ((u16) (32)));
372     CsrUint8Des((u8 *) &primitive->connectionConfig.ssid.length, buffer, &offset);
373     CsrMemCpyDes(primitive->connectionConfig.bssid.a, buffer, &offset, ((u16) (6)));
374     CsrUint8Des((u8 *) &primitive->connectionConfig.bssType, buffer, &offset);
375     CsrUint8Des((u8 *) &primitive->connectionConfig.ifIndex, buffer, &offset);
376     CsrUint8Des((u8 *) &primitive->connectionConfig.privacyMode, buffer, &offset);
377     CsrUint16Des((u16 *) &primitive->connectionConfig.authModeMask, buffer, &offset);
378     CsrUint16Des((u16 *) &primitive->connectionConfig.encryptionModeMask, buffer, &offset);
379     CsrUint16Des((u16 *) &primitive->connectionConfig.mlmeAssociateReqInformationElementsLength, buffer, &offset);
380     if (primitive->connectionConfig.mlmeAssociateReqInformationElementsLength)
381     {
382         primitive->connectionConfig.mlmeAssociateReqInformationElements = kmalloc(primitive->connectionConfig.mlmeAssociateReqInformationElementsLength, GFP_KERNEL);
383         CsrMemCpyDes(primitive->connectionConfig.mlmeAssociateReqInformationElements, buffer, &offset, ((u16) (primitive->connectionConfig.mlmeAssociateReqInformationElementsLength)));
384     }
385     else
386     {
387         primitive->connectionConfig.mlmeAssociateReqInformationElements = NULL;
388     }
389     CsrUint8Des((u8 *) &primitive->connectionConfig.wmmQosInfo, buffer, &offset);
390     CsrUint8Des((u8 *) &primitive->connectionConfig.adhocJoinOnly, buffer, &offset);
391     CsrUint8Des((u8 *) &primitive->connectionConfig.adhocChannel, buffer, &offset);
392
393     return primitive;
394 }
395
396
397 void CsrWifiSmeConnectReqSerFree(void *voidPrimitivePointer)
398 {
399     CsrWifiSmeConnectReq *primitive = (CsrWifiSmeConnectReq *) voidPrimitivePointer;
400     kfree(primitive->connectionConfig.mlmeAssociateReqInformationElements);
401     kfree(primitive);
402 }
403
404
405 size_t CsrWifiSmeHostConfigSetReqSizeof(void *msg)
406 {
407     size_t bufferSize = 2;
408
409     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 8) */
410     bufferSize += 2; /* u16 primitive->interfaceTag */
411     bufferSize += 1; /* CsrWifiSmeHostPowerMode primitive->hostConfig.powerMode */
412     bufferSize += 2; /* u16 primitive->hostConfig.applicationDataPeriodMs */
413     return bufferSize;
414 }
415
416
417 u8* CsrWifiSmeHostConfigSetReqSer(u8 *ptr, size_t *len, void *msg)
418 {
419     CsrWifiSmeHostConfigSetReq *primitive = (CsrWifiSmeHostConfigSetReq *)msg;
420     *len = 0;
421     CsrUint16Ser(ptr, len, primitive->common.type);
422     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
423     CsrUint8Ser(ptr, len, (u8) primitive->hostConfig.powerMode);
424     CsrUint16Ser(ptr, len, (u16) primitive->hostConfig.applicationDataPeriodMs);
425     return(ptr);
426 }
427
428
429 void* CsrWifiSmeHostConfigSetReqDes(u8 *buffer, size_t length)
430 {
431     CsrWifiSmeHostConfigSetReq *primitive = kmalloc(sizeof(CsrWifiSmeHostConfigSetReq), GFP_KERNEL);
432     size_t offset;
433     offset = 0;
434
435     CsrUint16Des(&primitive->common.type, buffer, &offset);
436     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
437     CsrUint8Des((u8 *) &primitive->hostConfig.powerMode, buffer, &offset);
438     CsrUint16Des((u16 *) &primitive->hostConfig.applicationDataPeriodMs, buffer, &offset);
439
440     return primitive;
441 }
442
443
444 size_t CsrWifiSmeKeyReqSizeof(void *msg)
445 {
446     size_t bufferSize = 2;
447
448     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 65) */
449     bufferSize += 2; /* u16 primitive->interfaceTag */
450     bufferSize += 1; /* CsrWifiSmeListAction primitive->action */
451     bufferSize += 1; /* CsrWifiSmeKeyType primitive->key.keyType */
452     bufferSize += 1; /* u8 primitive->key.keyIndex */
453     bufferSize += 1; /* u8 primitive->key.wepTxKey */
454     {
455         u16 i2;
456         for (i2 = 0; i2 < 8; i2++)
457         {
458             bufferSize += 2; /* u16 primitive->key.keyRsc[8] */
459         }
460     }
461     bufferSize += 1;         /* u8 primitive->key.authenticator */
462     bufferSize += 6;         /* u8 primitive->key.address.a[6] */
463     bufferSize += 1;         /* u8 primitive->key.keyLength */
464     bufferSize += 32;        /* u8 primitive->key.key[32] */
465     return bufferSize;
466 }
467
468
469 u8* CsrWifiSmeKeyReqSer(u8 *ptr, size_t *len, void *msg)
470 {
471     CsrWifiSmeKeyReq *primitive = (CsrWifiSmeKeyReq *)msg;
472     *len = 0;
473     CsrUint16Ser(ptr, len, primitive->common.type);
474     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
475     CsrUint8Ser(ptr, len, (u8) primitive->action);
476     CsrUint8Ser(ptr, len, (u8) primitive->key.keyType);
477     CsrUint8Ser(ptr, len, (u8) primitive->key.keyIndex);
478     CsrUint8Ser(ptr, len, (u8) primitive->key.wepTxKey);
479     {
480         u16 i2;
481         for (i2 = 0; i2 < 8; i2++)
482         {
483             CsrUint16Ser(ptr, len, (u16) primitive->key.keyRsc[i2]);
484         }
485     }
486     CsrUint8Ser(ptr, len, (u8) primitive->key.authenticator);
487     CsrMemCpySer(ptr, len, (const void *) primitive->key.address.a, ((u16) (6)));
488     CsrUint8Ser(ptr, len, (u8) primitive->key.keyLength);
489     CsrMemCpySer(ptr, len, (const void *) primitive->key.key, ((u16) (32)));
490     return(ptr);
491 }
492
493
494 void* CsrWifiSmeKeyReqDes(u8 *buffer, size_t length)
495 {
496     CsrWifiSmeKeyReq *primitive = kmalloc(sizeof(CsrWifiSmeKeyReq), GFP_KERNEL);
497     size_t offset;
498     offset = 0;
499
500     CsrUint16Des(&primitive->common.type, buffer, &offset);
501     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
502     CsrUint8Des((u8 *) &primitive->action, buffer, &offset);
503     CsrUint8Des((u8 *) &primitive->key.keyType, buffer, &offset);
504     CsrUint8Des((u8 *) &primitive->key.keyIndex, buffer, &offset);
505     CsrUint8Des((u8 *) &primitive->key.wepTxKey, buffer, &offset);
506     {
507         u16 i2;
508         for (i2 = 0; i2 < 8; i2++)
509         {
510             CsrUint16Des((u16 *) &primitive->key.keyRsc[i2], buffer, &offset);
511         }
512     }
513     CsrUint8Des((u8 *) &primitive->key.authenticator, buffer, &offset);
514     CsrMemCpyDes(primitive->key.address.a, buffer, &offset, ((u16) (6)));
515     CsrUint8Des((u8 *) &primitive->key.keyLength, buffer, &offset);
516     CsrMemCpyDes(primitive->key.key, buffer, &offset, ((u16) (32)));
517
518     return primitive;
519 }
520
521
522 size_t CsrWifiSmeMibConfigSetReqSizeof(void *msg)
523 {
524     size_t bufferSize = 2;
525
526     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 11) */
527     bufferSize += 1; /* u8 primitive->mibConfig.unifiFixMaxTxDataRate */
528     bufferSize += 1; /* u8 primitive->mibConfig.unifiFixTxDataRate */
529     bufferSize += 2; /* u16 primitive->mibConfig.dot11RtsThreshold */
530     bufferSize += 2; /* u16 primitive->mibConfig.dot11FragmentationThreshold */
531     bufferSize += 2; /* u16 primitive->mibConfig.dot11CurrentTxPowerLevel */
532     return bufferSize;
533 }
534
535
536 u8* CsrWifiSmeMibConfigSetReqSer(u8 *ptr, size_t *len, void *msg)
537 {
538     CsrWifiSmeMibConfigSetReq *primitive = (CsrWifiSmeMibConfigSetReq *)msg;
539     *len = 0;
540     CsrUint16Ser(ptr, len, primitive->common.type);
541     CsrUint8Ser(ptr, len, (u8) primitive->mibConfig.unifiFixMaxTxDataRate);
542     CsrUint8Ser(ptr, len, (u8) primitive->mibConfig.unifiFixTxDataRate);
543     CsrUint16Ser(ptr, len, (u16) primitive->mibConfig.dot11RtsThreshold);
544     CsrUint16Ser(ptr, len, (u16) primitive->mibConfig.dot11FragmentationThreshold);
545     CsrUint16Ser(ptr, len, (u16) primitive->mibConfig.dot11CurrentTxPowerLevel);
546     return(ptr);
547 }
548
549
550 void* CsrWifiSmeMibConfigSetReqDes(u8 *buffer, size_t length)
551 {
552     CsrWifiSmeMibConfigSetReq *primitive = kmalloc(sizeof(CsrWifiSmeMibConfigSetReq), GFP_KERNEL);
553     size_t offset;
554     offset = 0;
555
556     CsrUint16Des(&primitive->common.type, buffer, &offset);
557     CsrUint8Des((u8 *) &primitive->mibConfig.unifiFixMaxTxDataRate, buffer, &offset);
558     CsrUint8Des((u8 *) &primitive->mibConfig.unifiFixTxDataRate, buffer, &offset);
559     CsrUint16Des((u16 *) &primitive->mibConfig.dot11RtsThreshold, buffer, &offset);
560     CsrUint16Des((u16 *) &primitive->mibConfig.dot11FragmentationThreshold, buffer, &offset);
561     CsrUint16Des((u16 *) &primitive->mibConfig.dot11CurrentTxPowerLevel, buffer, &offset);
562
563     return primitive;
564 }
565
566
567 size_t CsrWifiSmeMibGetNextReqSizeof(void *msg)
568 {
569     CsrWifiSmeMibGetNextReq *primitive = (CsrWifiSmeMibGetNextReq *) msg;
570     size_t bufferSize = 2;
571
572     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 6) */
573     bufferSize += 2;                             /* u16 primitive->mibAttributeLength */
574     bufferSize += primitive->mibAttributeLength; /* u8 primitive->mibAttribute */
575     return bufferSize;
576 }
577
578
579 u8* CsrWifiSmeMibGetNextReqSer(u8 *ptr, size_t *len, void *msg)
580 {
581     CsrWifiSmeMibGetNextReq *primitive = (CsrWifiSmeMibGetNextReq *)msg;
582     *len = 0;
583     CsrUint16Ser(ptr, len, primitive->common.type);
584     CsrUint16Ser(ptr, len, (u16) primitive->mibAttributeLength);
585     if (primitive->mibAttributeLength)
586     {
587         CsrMemCpySer(ptr, len, (const void *) primitive->mibAttribute, ((u16) (primitive->mibAttributeLength)));
588     }
589     return(ptr);
590 }
591
592
593 void* CsrWifiSmeMibGetNextReqDes(u8 *buffer, size_t length)
594 {
595     CsrWifiSmeMibGetNextReq *primitive = kmalloc(sizeof(CsrWifiSmeMibGetNextReq), GFP_KERNEL);
596     size_t offset;
597     offset = 0;
598
599     CsrUint16Des(&primitive->common.type, buffer, &offset);
600     CsrUint16Des((u16 *) &primitive->mibAttributeLength, buffer, &offset);
601     if (primitive->mibAttributeLength)
602     {
603         primitive->mibAttribute = kmalloc(primitive->mibAttributeLength, GFP_KERNEL);
604         CsrMemCpyDes(primitive->mibAttribute, buffer, &offset, ((u16) (primitive->mibAttributeLength)));
605     }
606     else
607     {
608         primitive->mibAttribute = NULL;
609     }
610
611     return primitive;
612 }
613
614
615 void CsrWifiSmeMibGetNextReqSerFree(void *voidPrimitivePointer)
616 {
617     CsrWifiSmeMibGetNextReq *primitive = (CsrWifiSmeMibGetNextReq *) voidPrimitivePointer;
618     kfree(primitive->mibAttribute);
619     kfree(primitive);
620 }
621
622
623 size_t CsrWifiSmeMibGetReqSizeof(void *msg)
624 {
625     CsrWifiSmeMibGetReq *primitive = (CsrWifiSmeMibGetReq *) msg;
626     size_t bufferSize = 2;
627
628     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 6) */
629     bufferSize += 2;                             /* u16 primitive->mibAttributeLength */
630     bufferSize += primitive->mibAttributeLength; /* u8 primitive->mibAttribute */
631     return bufferSize;
632 }
633
634
635 u8* CsrWifiSmeMibGetReqSer(u8 *ptr, size_t *len, void *msg)
636 {
637     CsrWifiSmeMibGetReq *primitive = (CsrWifiSmeMibGetReq *)msg;
638     *len = 0;
639     CsrUint16Ser(ptr, len, primitive->common.type);
640     CsrUint16Ser(ptr, len, (u16) primitive->mibAttributeLength);
641     if (primitive->mibAttributeLength)
642     {
643         CsrMemCpySer(ptr, len, (const void *) primitive->mibAttribute, ((u16) (primitive->mibAttributeLength)));
644     }
645     return(ptr);
646 }
647
648
649 void* CsrWifiSmeMibGetReqDes(u8 *buffer, size_t length)
650 {
651     CsrWifiSmeMibGetReq *primitive = kmalloc(sizeof(CsrWifiSmeMibGetReq), GFP_KERNEL);
652     size_t offset;
653     offset = 0;
654
655     CsrUint16Des(&primitive->common.type, buffer, &offset);
656     CsrUint16Des((u16 *) &primitive->mibAttributeLength, buffer, &offset);
657     if (primitive->mibAttributeLength)
658     {
659         primitive->mibAttribute = kmalloc(primitive->mibAttributeLength, GFP_KERNEL);
660         CsrMemCpyDes(primitive->mibAttribute, buffer, &offset, ((u16) (primitive->mibAttributeLength)));
661     }
662     else
663     {
664         primitive->mibAttribute = NULL;
665     }
666
667     return primitive;
668 }
669
670
671 void CsrWifiSmeMibGetReqSerFree(void *voidPrimitivePointer)
672 {
673     CsrWifiSmeMibGetReq *primitive = (CsrWifiSmeMibGetReq *) voidPrimitivePointer;
674     kfree(primitive->mibAttribute);
675     kfree(primitive);
676 }
677
678
679 size_t CsrWifiSmeMibSetReqSizeof(void *msg)
680 {
681     CsrWifiSmeMibSetReq *primitive = (CsrWifiSmeMibSetReq *) msg;
682     size_t bufferSize = 2;
683
684     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 6) */
685     bufferSize += 2;                             /* u16 primitive->mibAttributeLength */
686     bufferSize += primitive->mibAttributeLength; /* u8 primitive->mibAttribute */
687     return bufferSize;
688 }
689
690
691 u8* CsrWifiSmeMibSetReqSer(u8 *ptr, size_t *len, void *msg)
692 {
693     CsrWifiSmeMibSetReq *primitive = (CsrWifiSmeMibSetReq *)msg;
694     *len = 0;
695     CsrUint16Ser(ptr, len, primitive->common.type);
696     CsrUint16Ser(ptr, len, (u16) primitive->mibAttributeLength);
697     if (primitive->mibAttributeLength)
698     {
699         CsrMemCpySer(ptr, len, (const void *) primitive->mibAttribute, ((u16) (primitive->mibAttributeLength)));
700     }
701     return(ptr);
702 }
703
704
705 void* CsrWifiSmeMibSetReqDes(u8 *buffer, size_t length)
706 {
707     CsrWifiSmeMibSetReq *primitive = kmalloc(sizeof(CsrWifiSmeMibSetReq), GFP_KERNEL);
708     size_t offset;
709     offset = 0;
710
711     CsrUint16Des(&primitive->common.type, buffer, &offset);
712     CsrUint16Des((u16 *) &primitive->mibAttributeLength, buffer, &offset);
713     if (primitive->mibAttributeLength)
714     {
715         primitive->mibAttribute = kmalloc(primitive->mibAttributeLength, GFP_KERNEL);
716         CsrMemCpyDes(primitive->mibAttribute, buffer, &offset, ((u16) (primitive->mibAttributeLength)));
717     }
718     else
719     {
720         primitive->mibAttribute = NULL;
721     }
722
723     return primitive;
724 }
725
726
727 void CsrWifiSmeMibSetReqSerFree(void *voidPrimitivePointer)
728 {
729     CsrWifiSmeMibSetReq *primitive = (CsrWifiSmeMibSetReq *) voidPrimitivePointer;
730     kfree(primitive->mibAttribute);
731     kfree(primitive);
732 }
733
734
735 size_t CsrWifiSmeMulticastAddressReqSizeof(void *msg)
736 {
737     CsrWifiSmeMulticastAddressReq *primitive = (CsrWifiSmeMulticastAddressReq *) msg;
738     size_t bufferSize = 2;
739
740     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 13) */
741     bufferSize += 2; /* u16 primitive->interfaceTag */
742     bufferSize += 1; /* CsrWifiSmeListAction primitive->action */
743     bufferSize += 1; /* u8 primitive->setAddressesCount */
744     {
745         u16 i1;
746         for (i1 = 0; i1 < primitive->setAddressesCount; i1++)
747         {
748             bufferSize += 6; /* u8 primitive->setAddresses[i1].a[6] */
749         }
750     }
751     return bufferSize;
752 }
753
754
755 u8* CsrWifiSmeMulticastAddressReqSer(u8 *ptr, size_t *len, void *msg)
756 {
757     CsrWifiSmeMulticastAddressReq *primitive = (CsrWifiSmeMulticastAddressReq *)msg;
758     *len = 0;
759     CsrUint16Ser(ptr, len, primitive->common.type);
760     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
761     CsrUint8Ser(ptr, len, (u8) primitive->action);
762     CsrUint8Ser(ptr, len, (u8) primitive->setAddressesCount);
763     {
764         u16 i1;
765         for (i1 = 0; i1 < primitive->setAddressesCount; i1++)
766         {
767             CsrMemCpySer(ptr, len, (const void *) primitive->setAddresses[i1].a, ((u16) (6)));
768         }
769     }
770     return(ptr);
771 }
772
773
774 void* CsrWifiSmeMulticastAddressReqDes(u8 *buffer, size_t length)
775 {
776     CsrWifiSmeMulticastAddressReq *primitive = kmalloc(sizeof(CsrWifiSmeMulticastAddressReq), GFP_KERNEL);
777     size_t offset;
778     offset = 0;
779
780     CsrUint16Des(&primitive->common.type, buffer, &offset);
781     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
782     CsrUint8Des((u8 *) &primitive->action, buffer, &offset);
783     CsrUint8Des((u8 *) &primitive->setAddressesCount, buffer, &offset);
784     primitive->setAddresses = NULL;
785     if (primitive->setAddressesCount)
786     {
787         primitive->setAddresses = kmalloc(sizeof(CsrWifiMacAddress) * primitive->setAddressesCount, GFP_KERNEL);
788     }
789     {
790         u16 i1;
791         for (i1 = 0; i1 < primitive->setAddressesCount; i1++)
792         {
793             CsrMemCpyDes(primitive->setAddresses[i1].a, buffer, &offset, ((u16) (6)));
794         }
795     }
796
797     return primitive;
798 }
799
800
801 void CsrWifiSmeMulticastAddressReqSerFree(void *voidPrimitivePointer)
802 {
803     CsrWifiSmeMulticastAddressReq *primitive = (CsrWifiSmeMulticastAddressReq *) voidPrimitivePointer;
804     kfree(primitive->setAddresses);
805     kfree(primitive);
806 }
807
808
809 size_t CsrWifiSmePacketFilterSetReqSizeof(void *msg)
810 {
811     CsrWifiSmePacketFilterSetReq *primitive = (CsrWifiSmePacketFilterSetReq *) msg;
812     size_t bufferSize = 2;
813
814     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 13) */
815     bufferSize += 2;                       /* u16 primitive->interfaceTag */
816     bufferSize += 2;                       /* u16 primitive->filterLength */
817     bufferSize += primitive->filterLength; /* u8 primitive->filter */
818     bufferSize += 1;                       /* CsrWifiSmePacketFilterMode primitive->mode */
819     bufferSize += 4;                       /* u8 primitive->arpFilterAddress.a[4] */
820     return bufferSize;
821 }
822
823
824 u8* CsrWifiSmePacketFilterSetReqSer(u8 *ptr, size_t *len, void *msg)
825 {
826     CsrWifiSmePacketFilterSetReq *primitive = (CsrWifiSmePacketFilterSetReq *)msg;
827     *len = 0;
828     CsrUint16Ser(ptr, len, primitive->common.type);
829     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
830     CsrUint16Ser(ptr, len, (u16) primitive->filterLength);
831     if (primitive->filterLength)
832     {
833         CsrMemCpySer(ptr, len, (const void *) primitive->filter, ((u16) (primitive->filterLength)));
834     }
835     CsrUint8Ser(ptr, len, (u8) primitive->mode);
836     CsrMemCpySer(ptr, len, (const void *) primitive->arpFilterAddress.a, ((u16) (4)));
837     return(ptr);
838 }
839
840
841 void* CsrWifiSmePacketFilterSetReqDes(u8 *buffer, size_t length)
842 {
843     CsrWifiSmePacketFilterSetReq *primitive = kmalloc(sizeof(CsrWifiSmePacketFilterSetReq), GFP_KERNEL);
844     size_t offset;
845     offset = 0;
846
847     CsrUint16Des(&primitive->common.type, buffer, &offset);
848     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
849     CsrUint16Des((u16 *) &primitive->filterLength, buffer, &offset);
850     if (primitive->filterLength)
851     {
852         primitive->filter = kmalloc(primitive->filterLength, GFP_KERNEL);
853         CsrMemCpyDes(primitive->filter, buffer, &offset, ((u16) (primitive->filterLength)));
854     }
855     else
856     {
857         primitive->filter = NULL;
858     }
859     CsrUint8Des((u8 *) &primitive->mode, buffer, &offset);
860     CsrMemCpyDes(primitive->arpFilterAddress.a, buffer, &offset, ((u16) (4)));
861
862     return primitive;
863 }
864
865
866 void CsrWifiSmePacketFilterSetReqSerFree(void *voidPrimitivePointer)
867 {
868     CsrWifiSmePacketFilterSetReq *primitive = (CsrWifiSmePacketFilterSetReq *) voidPrimitivePointer;
869     kfree(primitive->filter);
870     kfree(primitive);
871 }
872
873
874 size_t CsrWifiSmePmkidReqSizeof(void *msg)
875 {
876     CsrWifiSmePmkidReq *primitive = (CsrWifiSmePmkidReq *) msg;
877     size_t bufferSize = 2;
878
879     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 29) */
880     bufferSize += 2; /* u16 primitive->interfaceTag */
881     bufferSize += 1; /* CsrWifiSmeListAction primitive->action */
882     bufferSize += 1; /* u8 primitive->setPmkidsCount */
883     {
884         u16 i1;
885         for (i1 = 0; i1 < primitive->setPmkidsCount; i1++)
886         {
887             bufferSize += 6;  /* u8 primitive->setPmkids[i1].bssid.a[6] */
888             bufferSize += 16; /* u8 primitive->setPmkids[i1].pmkid[16] */
889         }
890     }
891     return bufferSize;
892 }
893
894
895 u8* CsrWifiSmePmkidReqSer(u8 *ptr, size_t *len, void *msg)
896 {
897     CsrWifiSmePmkidReq *primitive = (CsrWifiSmePmkidReq *)msg;
898     *len = 0;
899     CsrUint16Ser(ptr, len, primitive->common.type);
900     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
901     CsrUint8Ser(ptr, len, (u8) primitive->action);
902     CsrUint8Ser(ptr, len, (u8) primitive->setPmkidsCount);
903     {
904         u16 i1;
905         for (i1 = 0; i1 < primitive->setPmkidsCount; i1++)
906         {
907             CsrMemCpySer(ptr, len, (const void *) primitive->setPmkids[i1].bssid.a, ((u16) (6)));
908             CsrMemCpySer(ptr, len, (const void *) primitive->setPmkids[i1].pmkid, ((u16) (16)));
909         }
910     }
911     return(ptr);
912 }
913
914
915 void* CsrWifiSmePmkidReqDes(u8 *buffer, size_t length)
916 {
917     CsrWifiSmePmkidReq *primitive = kmalloc(sizeof(CsrWifiSmePmkidReq), GFP_KERNEL);
918     size_t offset;
919     offset = 0;
920
921     CsrUint16Des(&primitive->common.type, buffer, &offset);
922     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
923     CsrUint8Des((u8 *) &primitive->action, buffer, &offset);
924     CsrUint8Des((u8 *) &primitive->setPmkidsCount, buffer, &offset);
925     primitive->setPmkids = NULL;
926     if (primitive->setPmkidsCount)
927     {
928         primitive->setPmkids = kmalloc(sizeof(CsrWifiSmePmkid) * primitive->setPmkidsCount, GFP_KERNEL);
929     }
930     {
931         u16 i1;
932         for (i1 = 0; i1 < primitive->setPmkidsCount; i1++)
933         {
934             CsrMemCpyDes(primitive->setPmkids[i1].bssid.a, buffer, &offset, ((u16) (6)));
935             CsrMemCpyDes(primitive->setPmkids[i1].pmkid, buffer, &offset, ((u16) (16)));
936         }
937     }
938
939     return primitive;
940 }
941
942
943 void CsrWifiSmePmkidReqSerFree(void *voidPrimitivePointer)
944 {
945     CsrWifiSmePmkidReq *primitive = (CsrWifiSmePmkidReq *) voidPrimitivePointer;
946     kfree(primitive->setPmkids);
947     kfree(primitive);
948 }
949
950
951 size_t CsrWifiSmePowerConfigSetReqSizeof(void *msg)
952 {
953     size_t bufferSize = 2;
954
955     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 11) */
956     bufferSize += 1; /* CsrWifiSmePowerSaveLevel primitive->powerConfig.powerSaveLevel */
957     bufferSize += 2; /* u16 primitive->powerConfig.listenIntervalTu */
958     bufferSize += 1; /* u8 primitive->powerConfig.rxDtims */
959     bufferSize += 1; /* CsrWifiSmeD3AutoScanMode primitive->powerConfig.d3AutoScanMode */
960     bufferSize += 1; /* u8 primitive->powerConfig.clientTrafficWindow */
961     bufferSize += 1; /* u8 primitive->powerConfig.opportunisticPowerSave */
962     bufferSize += 1; /* u8 primitive->powerConfig.noticeOfAbsence */
963     return bufferSize;
964 }
965
966
967 u8* CsrWifiSmePowerConfigSetReqSer(u8 *ptr, size_t *len, void *msg)
968 {
969     CsrWifiSmePowerConfigSetReq *primitive = (CsrWifiSmePowerConfigSetReq *)msg;
970     *len = 0;
971     CsrUint16Ser(ptr, len, primitive->common.type);
972     CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.powerSaveLevel);
973     CsrUint16Ser(ptr, len, (u16) primitive->powerConfig.listenIntervalTu);
974     CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.rxDtims);
975     CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.d3AutoScanMode);
976     CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.clientTrafficWindow);
977     CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.opportunisticPowerSave);
978     CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.noticeOfAbsence);
979     return(ptr);
980 }
981
982
983 void* CsrWifiSmePowerConfigSetReqDes(u8 *buffer, size_t length)
984 {
985     CsrWifiSmePowerConfigSetReq *primitive = kmalloc(sizeof(CsrWifiSmePowerConfigSetReq), GFP_KERNEL);
986     size_t offset;
987     offset = 0;
988
989     CsrUint16Des(&primitive->common.type, buffer, &offset);
990     CsrUint8Des((u8 *) &primitive->powerConfig.powerSaveLevel, buffer, &offset);
991     CsrUint16Des((u16 *) &primitive->powerConfig.listenIntervalTu, buffer, &offset);
992     CsrUint8Des((u8 *) &primitive->powerConfig.rxDtims, buffer, &offset);
993     CsrUint8Des((u8 *) &primitive->powerConfig.d3AutoScanMode, buffer, &offset);
994     CsrUint8Des((u8 *) &primitive->powerConfig.clientTrafficWindow, buffer, &offset);
995     CsrUint8Des((u8 *) &primitive->powerConfig.opportunisticPowerSave, buffer, &offset);
996     CsrUint8Des((u8 *) &primitive->powerConfig.noticeOfAbsence, buffer, &offset);
997
998     return primitive;
999 }
1000
1001
1002 size_t CsrWifiSmeRoamingConfigSetReqSizeof(void *msg)
1003 {
1004     size_t bufferSize = 2;
1005
1006     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 70) */
1007     bufferSize += 2; /* u16 primitive->interfaceTag */
1008     {
1009         u16 i2;
1010         for (i2 = 0; i2 < 3; i2++)
1011         {
1012             bufferSize += 2; /* s16 primitive->roamingConfig.roamingBands[i2].rssiHighThreshold */
1013             bufferSize += 2; /* s16 primitive->roamingConfig.roamingBands[i2].rssiLowThreshold */
1014             bufferSize += 2; /* s16 primitive->roamingConfig.roamingBands[i2].snrHighThreshold */
1015             bufferSize += 2; /* s16 primitive->roamingConfig.roamingBands[i2].snrLowThreshold */
1016         }
1017     }
1018     bufferSize += 1;         /* u8 primitive->roamingConfig.disableSmoothRoaming */
1019     bufferSize += 1;         /* u8 primitive->roamingConfig.disableRoamScans */
1020     bufferSize += 1;         /* u8 primitive->roamingConfig.reconnectLimit */
1021     bufferSize += 2;         /* u16 primitive->roamingConfig.reconnectLimitIntervalMs */
1022     {
1023         u16 i2;
1024         for (i2 = 0; i2 < 3; i2++)
1025         {
1026             bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].intervalSeconds */
1027             bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].validitySeconds */
1028             bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].minActiveChannelTimeTu */
1029             bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].maxActiveChannelTimeTu */
1030             bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].minPassiveChannelTimeTu */
1031             bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].maxPassiveChannelTimeTu */
1032         }
1033     }
1034     return bufferSize;
1035 }
1036
1037
1038 u8* CsrWifiSmeRoamingConfigSetReqSer(u8 *ptr, size_t *len, void *msg)
1039 {
1040     CsrWifiSmeRoamingConfigSetReq *primitive = (CsrWifiSmeRoamingConfigSetReq *)msg;
1041     *len = 0;
1042     CsrUint16Ser(ptr, len, primitive->common.type);
1043     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
1044     {
1045         u16 i2;
1046         for (i2 = 0; i2 < 3; i2++)
1047         {
1048             CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamingBands[i2].rssiHighThreshold);
1049             CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamingBands[i2].rssiLowThreshold);
1050             CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamingBands[i2].snrHighThreshold);
1051             CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamingBands[i2].snrLowThreshold);
1052         }
1053     }
1054     CsrUint8Ser(ptr, len, (u8) primitive->roamingConfig.disableSmoothRoaming);
1055     CsrUint8Ser(ptr, len, (u8) primitive->roamingConfig.disableRoamScans);
1056     CsrUint8Ser(ptr, len, (u8) primitive->roamingConfig.reconnectLimit);
1057     CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.reconnectLimitIntervalMs);
1058     {
1059         u16 i2;
1060         for (i2 = 0; i2 < 3; i2++)
1061         {
1062             CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].intervalSeconds);
1063             CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].validitySeconds);
1064             CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].minActiveChannelTimeTu);
1065             CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].maxActiveChannelTimeTu);
1066             CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].minPassiveChannelTimeTu);
1067             CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].maxPassiveChannelTimeTu);
1068         }
1069     }
1070     return(ptr);
1071 }
1072
1073
1074 void* CsrWifiSmeRoamingConfigSetReqDes(u8 *buffer, size_t length)
1075 {
1076     CsrWifiSmeRoamingConfigSetReq *primitive = kmalloc(sizeof(CsrWifiSmeRoamingConfigSetReq), GFP_KERNEL);
1077     size_t offset;
1078     offset = 0;
1079
1080     CsrUint16Des(&primitive->common.type, buffer, &offset);
1081     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
1082     {
1083         u16 i2;
1084         for (i2 = 0; i2 < 3; i2++)
1085         {
1086             CsrUint16Des((u16 *) &primitive->roamingConfig.roamingBands[i2].rssiHighThreshold, buffer, &offset);
1087             CsrUint16Des((u16 *) &primitive->roamingConfig.roamingBands[i2].rssiLowThreshold, buffer, &offset);
1088             CsrUint16Des((u16 *) &primitive->roamingConfig.roamingBands[i2].snrHighThreshold, buffer, &offset);
1089             CsrUint16Des((u16 *) &primitive->roamingConfig.roamingBands[i2].snrLowThreshold, buffer, &offset);
1090         }
1091     }
1092     CsrUint8Des((u8 *) &primitive->roamingConfig.disableSmoothRoaming, buffer, &offset);
1093     CsrUint8Des((u8 *) &primitive->roamingConfig.disableRoamScans, buffer, &offset);
1094     CsrUint8Des((u8 *) &primitive->roamingConfig.reconnectLimit, buffer, &offset);
1095     CsrUint16Des((u16 *) &primitive->roamingConfig.reconnectLimitIntervalMs, buffer, &offset);
1096     {
1097         u16 i2;
1098         for (i2 = 0; i2 < 3; i2++)
1099         {
1100             CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].intervalSeconds, buffer, &offset);
1101             CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].validitySeconds, buffer, &offset);
1102             CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].minActiveChannelTimeTu, buffer, &offset);
1103             CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].maxActiveChannelTimeTu, buffer, &offset);
1104             CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].minPassiveChannelTimeTu, buffer, &offset);
1105             CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].maxPassiveChannelTimeTu, buffer, &offset);
1106         }
1107     }
1108
1109     return primitive;
1110 }
1111
1112
1113 size_t CsrWifiSmeScanConfigSetReqSizeof(void *msg)
1114 {
1115     CsrWifiSmeScanConfigSetReq *primitive = (CsrWifiSmeScanConfigSetReq *) msg;
1116     size_t bufferSize = 2;
1117
1118     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 63) */
1119     {
1120         u16 i2;
1121         for (i2 = 0; i2 < 4; i2++)
1122         {
1123             bufferSize += 2;                                     /* u16 primitive->scanConfig.scanCfg[i2].intervalSeconds */
1124             bufferSize += 2;                                     /* u16 primitive->scanConfig.scanCfg[i2].validitySeconds */
1125             bufferSize += 2;                                     /* u16 primitive->scanConfig.scanCfg[i2].minActiveChannelTimeTu */
1126             bufferSize += 2;                                     /* u16 primitive->scanConfig.scanCfg[i2].maxActiveChannelTimeTu */
1127             bufferSize += 2;                                     /* u16 primitive->scanConfig.scanCfg[i2].minPassiveChannelTimeTu */
1128             bufferSize += 2;                                     /* u16 primitive->scanConfig.scanCfg[i2].maxPassiveChannelTimeTu */
1129         }
1130     }
1131     bufferSize += 1;                                             /* u8 primitive->scanConfig.disableAutonomousScans */
1132     bufferSize += 2;                                             /* u16 primitive->scanConfig.maxResults */
1133     bufferSize += 1;                                             /* s8 primitive->scanConfig.highRssiThreshold */
1134     bufferSize += 1;                                             /* s8 primitive->scanConfig.lowRssiThreshold */
1135     bufferSize += 1;                                             /* s8 primitive->scanConfig.deltaRssiThreshold */
1136     bufferSize += 1;                                             /* s8 primitive->scanConfig.highSnrThreshold */
1137     bufferSize += 1;                                             /* s8 primitive->scanConfig.lowSnrThreshold */
1138     bufferSize += 1;                                             /* s8 primitive->scanConfig.deltaSnrThreshold */
1139     bufferSize += 2;                                             /* u16 primitive->scanConfig.passiveChannelListCount */
1140     bufferSize += primitive->scanConfig.passiveChannelListCount; /* u8 primitive->scanConfig.passiveChannelList */
1141     return bufferSize;
1142 }
1143
1144
1145 u8* CsrWifiSmeScanConfigSetReqSer(u8 *ptr, size_t *len, void *msg)
1146 {
1147     CsrWifiSmeScanConfigSetReq *primitive = (CsrWifiSmeScanConfigSetReq *)msg;
1148     *len = 0;
1149     CsrUint16Ser(ptr, len, primitive->common.type);
1150     {
1151         u16 i2;
1152         for (i2 = 0; i2 < 4; i2++)
1153         {
1154             CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].intervalSeconds);
1155             CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].validitySeconds);
1156             CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].minActiveChannelTimeTu);
1157             CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].maxActiveChannelTimeTu);
1158             CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].minPassiveChannelTimeTu);
1159             CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].maxPassiveChannelTimeTu);
1160         }
1161     }
1162     CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.disableAutonomousScans);
1163     CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.maxResults);
1164     CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.highRssiThreshold);
1165     CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.lowRssiThreshold);
1166     CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.deltaRssiThreshold);
1167     CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.highSnrThreshold);
1168     CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.lowSnrThreshold);
1169     CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.deltaSnrThreshold);
1170     CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.passiveChannelListCount);
1171     if (primitive->scanConfig.passiveChannelListCount)
1172     {
1173         CsrMemCpySer(ptr, len, (const void *) primitive->scanConfig.passiveChannelList, ((u16) (primitive->scanConfig.passiveChannelListCount)));
1174     }
1175     return(ptr);
1176 }
1177
1178
1179 void* CsrWifiSmeScanConfigSetReqDes(u8 *buffer, size_t length)
1180 {
1181     CsrWifiSmeScanConfigSetReq *primitive = kmalloc(sizeof(CsrWifiSmeScanConfigSetReq), GFP_KERNEL);
1182     size_t offset;
1183     offset = 0;
1184
1185     CsrUint16Des(&primitive->common.type, buffer, &offset);
1186     {
1187         u16 i2;
1188         for (i2 = 0; i2 < 4; i2++)
1189         {
1190             CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].intervalSeconds, buffer, &offset);
1191             CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].validitySeconds, buffer, &offset);
1192             CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].minActiveChannelTimeTu, buffer, &offset);
1193             CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].maxActiveChannelTimeTu, buffer, &offset);
1194             CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].minPassiveChannelTimeTu, buffer, &offset);
1195             CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].maxPassiveChannelTimeTu, buffer, &offset);
1196         }
1197     }
1198     CsrUint8Des((u8 *) &primitive->scanConfig.disableAutonomousScans, buffer, &offset);
1199     CsrUint16Des((u16 *) &primitive->scanConfig.maxResults, buffer, &offset);
1200     CsrUint8Des((u8 *) &primitive->scanConfig.highRssiThreshold, buffer, &offset);
1201     CsrUint8Des((u8 *) &primitive->scanConfig.lowRssiThreshold, buffer, &offset);
1202     CsrUint8Des((u8 *) &primitive->scanConfig.deltaRssiThreshold, buffer, &offset);
1203     CsrUint8Des((u8 *) &primitive->scanConfig.highSnrThreshold, buffer, &offset);
1204     CsrUint8Des((u8 *) &primitive->scanConfig.lowSnrThreshold, buffer, &offset);
1205     CsrUint8Des((u8 *) &primitive->scanConfig.deltaSnrThreshold, buffer, &offset);
1206     CsrUint16Des((u16 *) &primitive->scanConfig.passiveChannelListCount, buffer, &offset);
1207     if (primitive->scanConfig.passiveChannelListCount)
1208     {
1209         primitive->scanConfig.passiveChannelList = kmalloc(primitive->scanConfig.passiveChannelListCount, GFP_KERNEL);
1210         CsrMemCpyDes(primitive->scanConfig.passiveChannelList, buffer, &offset, ((u16) (primitive->scanConfig.passiveChannelListCount)));
1211     }
1212     else
1213     {
1214         primitive->scanConfig.passiveChannelList = NULL;
1215     }
1216
1217     return primitive;
1218 }
1219
1220
1221 void CsrWifiSmeScanConfigSetReqSerFree(void *voidPrimitivePointer)
1222 {
1223     CsrWifiSmeScanConfigSetReq *primitive = (CsrWifiSmeScanConfigSetReq *) voidPrimitivePointer;
1224     kfree(primitive->scanConfig.passiveChannelList);
1225     kfree(primitive);
1226 }
1227
1228
1229 size_t CsrWifiSmeScanFullReqSizeof(void *msg)
1230 {
1231     CsrWifiSmeScanFullReq *primitive = (CsrWifiSmeScanFullReq *) msg;
1232     size_t bufferSize = 2;
1233
1234     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 52) */
1235     bufferSize += 1; /* u8 primitive->ssidCount */
1236     {
1237         u16 i1;
1238         for (i1 = 0; i1 < primitive->ssidCount; i1++)
1239         {
1240             bufferSize += 32;                  /* u8 primitive->ssid[i1].ssid[32] */
1241             bufferSize += 1;                   /* u8 primitive->ssid[i1].length */
1242         }
1243     }
1244     bufferSize += 6;                           /* u8 primitive->bssid.a[6] */
1245     bufferSize += 1;                           /* u8 primitive->forceScan */
1246     bufferSize += 1;                           /* CsrWifiSmeBssType primitive->bssType */
1247     bufferSize += 1;                           /* CsrWifiSmeScanType primitive->scanType */
1248     bufferSize += 2;                           /* u16 primitive->channelListCount */
1249     bufferSize += primitive->channelListCount; /* u8 primitive->channelList */
1250     bufferSize += 2;                           /* u16 primitive->probeIeLength */
1251     bufferSize += primitive->probeIeLength;    /* u8 primitive->probeIe */
1252     return bufferSize;
1253 }
1254
1255
1256 u8* CsrWifiSmeScanFullReqSer(u8 *ptr, size_t *len, void *msg)
1257 {
1258     CsrWifiSmeScanFullReq *primitive = (CsrWifiSmeScanFullReq *)msg;
1259     *len = 0;
1260     CsrUint16Ser(ptr, len, primitive->common.type);
1261     CsrUint8Ser(ptr, len, (u8) primitive->ssidCount);
1262     {
1263         u16 i1;
1264         for (i1 = 0; i1 < primitive->ssidCount; i1++)
1265         {
1266             CsrMemCpySer(ptr, len, (const void *) primitive->ssid[i1].ssid, ((u16) (32)));
1267             CsrUint8Ser(ptr, len, (u8) primitive->ssid[i1].length);
1268         }
1269     }
1270     CsrMemCpySer(ptr, len, (const void *) primitive->bssid.a, ((u16) (6)));
1271     CsrUint8Ser(ptr, len, (u8) primitive->forceScan);
1272     CsrUint8Ser(ptr, len, (u8) primitive->bssType);
1273     CsrUint8Ser(ptr, len, (u8) primitive->scanType);
1274     CsrUint16Ser(ptr, len, (u16) primitive->channelListCount);
1275     if (primitive->channelListCount)
1276     {
1277         CsrMemCpySer(ptr, len, (const void *) primitive->channelList, ((u16) (primitive->channelListCount)));
1278     }
1279     CsrUint16Ser(ptr, len, (u16) primitive->probeIeLength);
1280     if (primitive->probeIeLength)
1281     {
1282         CsrMemCpySer(ptr, len, (const void *) primitive->probeIe, ((u16) (primitive->probeIeLength)));
1283     }
1284     return(ptr);
1285 }
1286
1287
1288 void* CsrWifiSmeScanFullReqDes(u8 *buffer, size_t length)
1289 {
1290     CsrWifiSmeScanFullReq *primitive = kmalloc(sizeof(CsrWifiSmeScanFullReq), GFP_KERNEL);
1291     size_t offset;
1292     offset = 0;
1293
1294     CsrUint16Des(&primitive->common.type, buffer, &offset);
1295     CsrUint8Des((u8 *) &primitive->ssidCount, buffer, &offset);
1296     primitive->ssid = NULL;
1297     if (primitive->ssidCount)
1298     {
1299         primitive->ssid = kmalloc(sizeof(CsrWifiSsid) * primitive->ssidCount, GFP_KERNEL);
1300     }
1301     {
1302         u16 i1;
1303         for (i1 = 0; i1 < primitive->ssidCount; i1++)
1304         {
1305             CsrMemCpyDes(primitive->ssid[i1].ssid, buffer, &offset, ((u16) (32)));
1306             CsrUint8Des((u8 *) &primitive->ssid[i1].length, buffer, &offset);
1307         }
1308     }
1309     CsrMemCpyDes(primitive->bssid.a, buffer, &offset, ((u16) (6)));
1310     CsrUint8Des((u8 *) &primitive->forceScan, buffer, &offset);
1311     CsrUint8Des((u8 *) &primitive->bssType, buffer, &offset);
1312     CsrUint8Des((u8 *) &primitive->scanType, buffer, &offset);
1313     CsrUint16Des((u16 *) &primitive->channelListCount, buffer, &offset);
1314     if (primitive->channelListCount)
1315     {
1316         primitive->channelList = kmalloc(primitive->channelListCount, GFP_KERNEL);
1317         CsrMemCpyDes(primitive->channelList, buffer, &offset, ((u16) (primitive->channelListCount)));
1318     }
1319     else
1320     {
1321         primitive->channelList = NULL;
1322     }
1323     CsrUint16Des((u16 *) &primitive->probeIeLength, buffer, &offset);
1324     if (primitive->probeIeLength)
1325     {
1326         primitive->probeIe = kmalloc(primitive->probeIeLength, GFP_KERNEL);
1327         CsrMemCpyDes(primitive->probeIe, buffer, &offset, ((u16) (primitive->probeIeLength)));
1328     }
1329     else
1330     {
1331         primitive->probeIe = NULL;
1332     }
1333
1334     return primitive;
1335 }
1336
1337
1338 void CsrWifiSmeScanFullReqSerFree(void *voidPrimitivePointer)
1339 {
1340     CsrWifiSmeScanFullReq *primitive = (CsrWifiSmeScanFullReq *) voidPrimitivePointer;
1341     kfree(primitive->ssid);
1342     kfree(primitive->channelList);
1343     kfree(primitive->probeIe);
1344     kfree(primitive);
1345 }
1346
1347
1348 size_t CsrWifiSmeSmeStaConfigSetReqSizeof(void *msg)
1349 {
1350     size_t bufferSize = 2;
1351
1352     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 11) */
1353     bufferSize += 2; /* u16 primitive->interfaceTag */
1354     bufferSize += 1; /* u8 primitive->smeConfig.connectionQualityRssiChangeTrigger */
1355     bufferSize += 1; /* u8 primitive->smeConfig.connectionQualitySnrChangeTrigger */
1356     bufferSize += 1; /* CsrWifiSmeWmmModeMask primitive->smeConfig.wmmModeMask */
1357     bufferSize += 1; /* CsrWifiSmeRadioIF primitive->smeConfig.ifIndex */
1358     bufferSize += 1; /* u8 primitive->smeConfig.allowUnicastUseGroupCipher */
1359     bufferSize += 1; /* u8 primitive->smeConfig.enableOpportunisticKeyCaching */
1360     return bufferSize;
1361 }
1362
1363
1364 u8* CsrWifiSmeSmeStaConfigSetReqSer(u8 *ptr, size_t *len, void *msg)
1365 {
1366     CsrWifiSmeSmeStaConfigSetReq *primitive = (CsrWifiSmeSmeStaConfigSetReq *)msg;
1367     *len = 0;
1368     CsrUint16Ser(ptr, len, primitive->common.type);
1369     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
1370     CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.connectionQualityRssiChangeTrigger);
1371     CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.connectionQualitySnrChangeTrigger);
1372     CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.wmmModeMask);
1373     CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.ifIndex);
1374     CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.allowUnicastUseGroupCipher);
1375     CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.enableOpportunisticKeyCaching);
1376     return(ptr);
1377 }
1378
1379
1380 void* CsrWifiSmeSmeStaConfigSetReqDes(u8 *buffer, size_t length)
1381 {
1382     CsrWifiSmeSmeStaConfigSetReq *primitive = kmalloc(sizeof(CsrWifiSmeSmeStaConfigSetReq), GFP_KERNEL);
1383     size_t offset;
1384     offset = 0;
1385
1386     CsrUint16Des(&primitive->common.type, buffer, &offset);
1387     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
1388     CsrUint8Des((u8 *) &primitive->smeConfig.connectionQualityRssiChangeTrigger, buffer, &offset);
1389     CsrUint8Des((u8 *) &primitive->smeConfig.connectionQualitySnrChangeTrigger, buffer, &offset);
1390     CsrUint8Des((u8 *) &primitive->smeConfig.wmmModeMask, buffer, &offset);
1391     CsrUint8Des((u8 *) &primitive->smeConfig.ifIndex, buffer, &offset);
1392     CsrUint8Des((u8 *) &primitive->smeConfig.allowUnicastUseGroupCipher, buffer, &offset);
1393     CsrUint8Des((u8 *) &primitive->smeConfig.enableOpportunisticKeyCaching, buffer, &offset);
1394
1395     return primitive;
1396 }
1397
1398
1399 size_t CsrWifiSmeTspecReqSizeof(void *msg)
1400 {
1401     CsrWifiSmeTspecReq *primitive = (CsrWifiSmeTspecReq *) msg;
1402     size_t bufferSize = 2;
1403
1404     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 18) */
1405     bufferSize += 2;                      /* u16 primitive->interfaceTag */
1406     bufferSize += 1;                      /* CsrWifiSmeListAction primitive->action */
1407     bufferSize += 4;                      /* u32 primitive->transactionId */
1408     bufferSize += 1;                      /* u8 primitive->strict */
1409     bufferSize += 1;                      /* CsrWifiSmeTspecCtrlMask primitive->ctrlMask */
1410     bufferSize += 2;                      /* u16 primitive->tspecLength */
1411     bufferSize += primitive->tspecLength; /* u8 primitive->tspec */
1412     bufferSize += 2;                      /* u16 primitive->tclasLength */
1413     bufferSize += primitive->tclasLength; /* u8 primitive->tclas */
1414     return bufferSize;
1415 }
1416
1417
1418 u8* CsrWifiSmeTspecReqSer(u8 *ptr, size_t *len, void *msg)
1419 {
1420     CsrWifiSmeTspecReq *primitive = (CsrWifiSmeTspecReq *)msg;
1421     *len = 0;
1422     CsrUint16Ser(ptr, len, primitive->common.type);
1423     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
1424     CsrUint8Ser(ptr, len, (u8) primitive->action);
1425     CsrUint32Ser(ptr, len, (u32) primitive->transactionId);
1426     CsrUint8Ser(ptr, len, (u8) primitive->strict);
1427     CsrUint8Ser(ptr, len, (u8) primitive->ctrlMask);
1428     CsrUint16Ser(ptr, len, (u16) primitive->tspecLength);
1429     if (primitive->tspecLength)
1430     {
1431         CsrMemCpySer(ptr, len, (const void *) primitive->tspec, ((u16) (primitive->tspecLength)));
1432     }
1433     CsrUint16Ser(ptr, len, (u16) primitive->tclasLength);
1434     if (primitive->tclasLength)
1435     {
1436         CsrMemCpySer(ptr, len, (const void *) primitive->tclas, ((u16) (primitive->tclasLength)));
1437     }
1438     return(ptr);
1439 }
1440
1441
1442 void* CsrWifiSmeTspecReqDes(u8 *buffer, size_t length)
1443 {
1444     CsrWifiSmeTspecReq *primitive = kmalloc(sizeof(CsrWifiSmeTspecReq), GFP_KERNEL);
1445     size_t offset;
1446     offset = 0;
1447
1448     CsrUint16Des(&primitive->common.type, buffer, &offset);
1449     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
1450     CsrUint8Des((u8 *) &primitive->action, buffer, &offset);
1451     CsrUint32Des((u32 *) &primitive->transactionId, buffer, &offset);
1452     CsrUint8Des((u8 *) &primitive->strict, buffer, &offset);
1453     CsrUint8Des((u8 *) &primitive->ctrlMask, buffer, &offset);
1454     CsrUint16Des((u16 *) &primitive->tspecLength, buffer, &offset);
1455     if (primitive->tspecLength)
1456     {
1457         primitive->tspec = kmalloc(primitive->tspecLength, GFP_KERNEL);
1458         CsrMemCpyDes(primitive->tspec, buffer, &offset, ((u16) (primitive->tspecLength)));
1459     }
1460     else
1461     {
1462         primitive->tspec = NULL;
1463     }
1464     CsrUint16Des((u16 *) &primitive->tclasLength, buffer, &offset);
1465     if (primitive->tclasLength)
1466     {
1467         primitive->tclas = kmalloc(primitive->tclasLength, GFP_KERNEL);
1468         CsrMemCpyDes(primitive->tclas, buffer, &offset, ((u16) (primitive->tclasLength)));
1469     }
1470     else
1471     {
1472         primitive->tclas = NULL;
1473     }
1474
1475     return primitive;
1476 }
1477
1478
1479 void CsrWifiSmeTspecReqSerFree(void *voidPrimitivePointer)
1480 {
1481     CsrWifiSmeTspecReq *primitive = (CsrWifiSmeTspecReq *) voidPrimitivePointer;
1482     kfree(primitive->tspec);
1483     kfree(primitive->tclas);
1484     kfree(primitive);
1485 }
1486
1487
1488 size_t CsrWifiSmeWifiFlightmodeReqSizeof(void *msg)
1489 {
1490     CsrWifiSmeWifiFlightmodeReq *primitive = (CsrWifiSmeWifiFlightmodeReq *) msg;
1491     size_t bufferSize = 2;
1492
1493     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 14) */
1494     bufferSize += 6; /* u8 primitive->address.a[6] */
1495     bufferSize += 2; /* u16 primitive->mibFilesCount */
1496     {
1497         u16 i1;
1498         for (i1 = 0; i1 < primitive->mibFilesCount; i1++)
1499         {
1500             bufferSize += 2;                              /* u16 primitive->mibFiles[i1].length */
1501             bufferSize += primitive->mibFiles[i1].length; /* u8 primitive->mibFiles[i1].data */
1502         }
1503     }
1504     return bufferSize;
1505 }
1506
1507
1508 u8* CsrWifiSmeWifiFlightmodeReqSer(u8 *ptr, size_t *len, void *msg)
1509 {
1510     CsrWifiSmeWifiFlightmodeReq *primitive = (CsrWifiSmeWifiFlightmodeReq *)msg;
1511     *len = 0;
1512     CsrUint16Ser(ptr, len, primitive->common.type);
1513     CsrMemCpySer(ptr, len, (const void *) primitive->address.a, ((u16) (6)));
1514     CsrUint16Ser(ptr, len, (u16) primitive->mibFilesCount);
1515     {
1516         u16 i1;
1517         for (i1 = 0; i1 < primitive->mibFilesCount; i1++)
1518         {
1519             CsrUint16Ser(ptr, len, (u16) primitive->mibFiles[i1].length);
1520             if (primitive->mibFiles[i1].length)
1521             {
1522                 CsrMemCpySer(ptr, len, (const void *) primitive->mibFiles[i1].data, ((u16) (primitive->mibFiles[i1].length)));
1523             }
1524         }
1525     }
1526     return(ptr);
1527 }
1528
1529
1530 void* CsrWifiSmeWifiFlightmodeReqDes(u8 *buffer, size_t length)
1531 {
1532     CsrWifiSmeWifiFlightmodeReq *primitive = kmalloc(sizeof(CsrWifiSmeWifiFlightmodeReq), GFP_KERNEL);
1533     size_t offset;
1534     offset = 0;
1535
1536     CsrUint16Des(&primitive->common.type, buffer, &offset);
1537     CsrMemCpyDes(primitive->address.a, buffer, &offset, ((u16) (6)));
1538     CsrUint16Des((u16 *) &primitive->mibFilesCount, buffer, &offset);
1539     primitive->mibFiles = NULL;
1540     if (primitive->mibFilesCount)
1541     {
1542         primitive->mibFiles = kmalloc(sizeof(CsrWifiSmeDataBlock) * primitive->mibFilesCount, GFP_KERNEL);
1543     }
1544     {
1545         u16 i1;
1546         for (i1 = 0; i1 < primitive->mibFilesCount; i1++)
1547         {
1548             CsrUint16Des((u16 *) &primitive->mibFiles[i1].length, buffer, &offset);
1549             if (primitive->mibFiles[i1].length)
1550             {
1551                 primitive->mibFiles[i1].data = kmalloc(primitive->mibFiles[i1].length, GFP_KERNEL);
1552                 CsrMemCpyDes(primitive->mibFiles[i1].data, buffer, &offset, ((u16) (primitive->mibFiles[i1].length)));
1553             }
1554             else
1555             {
1556                 primitive->mibFiles[i1].data = NULL;
1557             }
1558         }
1559     }
1560
1561     return primitive;
1562 }
1563
1564
1565 void CsrWifiSmeWifiFlightmodeReqSerFree(void *voidPrimitivePointer)
1566 {
1567     CsrWifiSmeWifiFlightmodeReq *primitive = (CsrWifiSmeWifiFlightmodeReq *) voidPrimitivePointer;
1568     {
1569         u16 i1;
1570         for (i1 = 0; i1 < primitive->mibFilesCount; i1++)
1571         {
1572             kfree(primitive->mibFiles[i1].data);
1573         }
1574     }
1575     kfree(primitive->mibFiles);
1576     kfree(primitive);
1577 }
1578
1579
1580 size_t CsrWifiSmeWifiOnReqSizeof(void *msg)
1581 {
1582     CsrWifiSmeWifiOnReq *primitive = (CsrWifiSmeWifiOnReq *) msg;
1583     size_t bufferSize = 2;
1584
1585     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 14) */
1586     bufferSize += 6; /* u8 primitive->address.a[6] */
1587     bufferSize += 2; /* u16 primitive->mibFilesCount */
1588     {
1589         u16 i1;
1590         for (i1 = 0; i1 < primitive->mibFilesCount; i1++)
1591         {
1592             bufferSize += 2;                              /* u16 primitive->mibFiles[i1].length */
1593             bufferSize += primitive->mibFiles[i1].length; /* u8 primitive->mibFiles[i1].data */
1594         }
1595     }
1596     return bufferSize;
1597 }
1598
1599
1600 u8* CsrWifiSmeWifiOnReqSer(u8 *ptr, size_t *len, void *msg)
1601 {
1602     CsrWifiSmeWifiOnReq *primitive = (CsrWifiSmeWifiOnReq *)msg;
1603     *len = 0;
1604     CsrUint16Ser(ptr, len, primitive->common.type);
1605     CsrMemCpySer(ptr, len, (const void *) primitive->address.a, ((u16) (6)));
1606     CsrUint16Ser(ptr, len, (u16) primitive->mibFilesCount);
1607     {
1608         u16 i1;
1609         for (i1 = 0; i1 < primitive->mibFilesCount; i1++)
1610         {
1611             CsrUint16Ser(ptr, len, (u16) primitive->mibFiles[i1].length);
1612             if (primitive->mibFiles[i1].length)
1613             {
1614                 CsrMemCpySer(ptr, len, (const void *) primitive->mibFiles[i1].data, ((u16) (primitive->mibFiles[i1].length)));
1615             }
1616         }
1617     }
1618     return(ptr);
1619 }
1620
1621
1622 void* CsrWifiSmeWifiOnReqDes(u8 *buffer, size_t length)
1623 {
1624     CsrWifiSmeWifiOnReq *primitive = kmalloc(sizeof(CsrWifiSmeWifiOnReq), GFP_KERNEL);
1625     size_t offset;
1626     offset = 0;
1627
1628     CsrUint16Des(&primitive->common.type, buffer, &offset);
1629     CsrMemCpyDes(primitive->address.a, buffer, &offset, ((u16) (6)));
1630     CsrUint16Des((u16 *) &primitive->mibFilesCount, buffer, &offset);
1631     primitive->mibFiles = NULL;
1632     if (primitive->mibFilesCount)
1633     {
1634         primitive->mibFiles = kmalloc(sizeof(CsrWifiSmeDataBlock) * primitive->mibFilesCount, GFP_KERNEL);
1635     }
1636     {
1637         u16 i1;
1638         for (i1 = 0; i1 < primitive->mibFilesCount; i1++)
1639         {
1640             CsrUint16Des((u16 *) &primitive->mibFiles[i1].length, buffer, &offset);
1641             if (primitive->mibFiles[i1].length)
1642             {
1643                 primitive->mibFiles[i1].data = kmalloc(primitive->mibFiles[i1].length, GFP_KERNEL);
1644                 CsrMemCpyDes(primitive->mibFiles[i1].data, buffer, &offset, ((u16) (primitive->mibFiles[i1].length)));
1645             }
1646             else
1647             {
1648                 primitive->mibFiles[i1].data = NULL;
1649             }
1650         }
1651     }
1652
1653     return primitive;
1654 }
1655
1656
1657 void CsrWifiSmeWifiOnReqSerFree(void *voidPrimitivePointer)
1658 {
1659     CsrWifiSmeWifiOnReq *primitive = (CsrWifiSmeWifiOnReq *) voidPrimitivePointer;
1660     {
1661         u16 i1;
1662         for (i1 = 0; i1 < primitive->mibFilesCount; i1++)
1663         {
1664             kfree(primitive->mibFiles[i1].data);
1665         }
1666     }
1667     kfree(primitive->mibFiles);
1668     kfree(primitive);
1669 }
1670
1671
1672 size_t CsrWifiSmeCloakedSsidsSetReqSizeof(void *msg)
1673 {
1674     CsrWifiSmeCloakedSsidsSetReq *primitive = (CsrWifiSmeCloakedSsidsSetReq *) msg;
1675     size_t bufferSize = 2;
1676
1677     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 37) */
1678     bufferSize += 1; /* u8 primitive->cloakedSsids.cloakedSsidsCount */
1679     {
1680         u16 i2;
1681         for (i2 = 0; i2 < primitive->cloakedSsids.cloakedSsidsCount; i2++)
1682         {
1683             bufferSize += 32; /* u8 primitive->cloakedSsids.cloakedSsids[i2].ssid[32] */
1684             bufferSize += 1;  /* u8 primitive->cloakedSsids.cloakedSsids[i2].length */
1685         }
1686     }
1687     return bufferSize;
1688 }
1689
1690
1691 u8* CsrWifiSmeCloakedSsidsSetReqSer(u8 *ptr, size_t *len, void *msg)
1692 {
1693     CsrWifiSmeCloakedSsidsSetReq *primitive = (CsrWifiSmeCloakedSsidsSetReq *)msg;
1694     *len = 0;
1695     CsrUint16Ser(ptr, len, primitive->common.type);
1696     CsrUint8Ser(ptr, len, (u8) primitive->cloakedSsids.cloakedSsidsCount);
1697     {
1698         u16 i2;
1699         for (i2 = 0; i2 < primitive->cloakedSsids.cloakedSsidsCount; i2++)
1700         {
1701             CsrMemCpySer(ptr, len, (const void *) primitive->cloakedSsids.cloakedSsids[i2].ssid, ((u16) (32)));
1702             CsrUint8Ser(ptr, len, (u8) primitive->cloakedSsids.cloakedSsids[i2].length);
1703         }
1704     }
1705     return(ptr);
1706 }
1707
1708
1709 void* CsrWifiSmeCloakedSsidsSetReqDes(u8 *buffer, size_t length)
1710 {
1711     CsrWifiSmeCloakedSsidsSetReq *primitive = kmalloc(sizeof(CsrWifiSmeCloakedSsidsSetReq), GFP_KERNEL);
1712     size_t offset;
1713     offset = 0;
1714
1715     CsrUint16Des(&primitive->common.type, buffer, &offset);
1716     CsrUint8Des((u8 *) &primitive->cloakedSsids.cloakedSsidsCount, buffer, &offset);
1717     primitive->cloakedSsids.cloakedSsids = NULL;
1718     if (primitive->cloakedSsids.cloakedSsidsCount)
1719     {
1720         primitive->cloakedSsids.cloakedSsids = kmalloc(sizeof(CsrWifiSsid) * primitive->cloakedSsids.cloakedSsidsCount, GFP_KERNEL);
1721     }
1722     {
1723         u16 i2;
1724         for (i2 = 0; i2 < primitive->cloakedSsids.cloakedSsidsCount; i2++)
1725         {
1726             CsrMemCpyDes(primitive->cloakedSsids.cloakedSsids[i2].ssid, buffer, &offset, ((u16) (32)));
1727             CsrUint8Des((u8 *) &primitive->cloakedSsids.cloakedSsids[i2].length, buffer, &offset);
1728         }
1729     }
1730
1731     return primitive;
1732 }
1733
1734
1735 void CsrWifiSmeCloakedSsidsSetReqSerFree(void *voidPrimitivePointer)
1736 {
1737     CsrWifiSmeCloakedSsidsSetReq *primitive = (CsrWifiSmeCloakedSsidsSetReq *) voidPrimitivePointer;
1738     kfree(primitive->cloakedSsids.cloakedSsids);
1739     kfree(primitive);
1740 }
1741
1742
1743 size_t CsrWifiSmeSmeCommonConfigSetReqSizeof(void *msg)
1744 {
1745     size_t bufferSize = 2;
1746
1747     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 8) */
1748     bufferSize += 1; /* CsrWifiSme80211dTrustLevel primitive->deviceConfig.trustLevel */
1749     bufferSize += 2; /* u8 primitive->deviceConfig.countryCode[2] */
1750     bufferSize += 1; /* CsrWifiSmeFirmwareDriverInterface primitive->deviceConfig.firmwareDriverInterface */
1751     bufferSize += 1; /* u8 primitive->deviceConfig.enableStrictDraftN */
1752     return bufferSize;
1753 }
1754
1755
1756 u8* CsrWifiSmeSmeCommonConfigSetReqSer(u8 *ptr, size_t *len, void *msg)
1757 {
1758     CsrWifiSmeSmeCommonConfigSetReq *primitive = (CsrWifiSmeSmeCommonConfigSetReq *)msg;
1759     *len = 0;
1760     CsrUint16Ser(ptr, len, primitive->common.type);
1761     CsrUint8Ser(ptr, len, (u8) primitive->deviceConfig.trustLevel);
1762     CsrMemCpySer(ptr, len, (const void *) primitive->deviceConfig.countryCode, ((u16) (2)));
1763     CsrUint8Ser(ptr, len, (u8) primitive->deviceConfig.firmwareDriverInterface);
1764     CsrUint8Ser(ptr, len, (u8) primitive->deviceConfig.enableStrictDraftN);
1765     return(ptr);
1766 }
1767
1768
1769 void* CsrWifiSmeSmeCommonConfigSetReqDes(u8 *buffer, size_t length)
1770 {
1771     CsrWifiSmeSmeCommonConfigSetReq *primitive = kmalloc(sizeof(CsrWifiSmeSmeCommonConfigSetReq), GFP_KERNEL);
1772     size_t offset;
1773     offset = 0;
1774
1775     CsrUint16Des(&primitive->common.type, buffer, &offset);
1776     CsrUint8Des((u8 *) &primitive->deviceConfig.trustLevel, buffer, &offset);
1777     CsrMemCpyDes(primitive->deviceConfig.countryCode, buffer, &offset, ((u16) (2)));
1778     CsrUint8Des((u8 *) &primitive->deviceConfig.firmwareDriverInterface, buffer, &offset);
1779     CsrUint8Des((u8 *) &primitive->deviceConfig.enableStrictDraftN, buffer, &offset);
1780
1781     return primitive;
1782 }
1783
1784
1785 size_t CsrWifiSmeWpsConfigurationReqSizeof(void *msg)
1786 {
1787     CsrWifiSmeWpsConfigurationReq *primitive = (CsrWifiSmeWpsConfigurationReq *) msg;
1788     size_t bufferSize = 2;
1789
1790     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 240) */
1791     bufferSize += 1;  /* u8 primitive->wpsConfig.wpsVersion */
1792     bufferSize += 16; /* u8 primitive->wpsConfig.uuid[16] */
1793     bufferSize += 32; /* u8 primitive->wpsConfig.deviceName[32] */
1794     bufferSize += 1;  /* u8 primitive->wpsConfig.deviceNameLength */
1795     bufferSize += 64; /* u8 primitive->wpsConfig.manufacturer[64] */
1796     bufferSize += 1;  /* u8 primitive->wpsConfig.manufacturerLength */
1797     bufferSize += 32; /* u8 primitive->wpsConfig.modelName[32] */
1798     bufferSize += 1;  /* u8 primitive->wpsConfig.modelNameLength */
1799     bufferSize += 32; /* u8 primitive->wpsConfig.modelNumber[32] */
1800     bufferSize += 1;  /* u8 primitive->wpsConfig.modelNumberLength */
1801     bufferSize += 32; /* u8 primitive->wpsConfig.serialNumber[32] */
1802     bufferSize += 8;  /* u8 primitive->wpsConfig.primDeviceType.deviceDetails[8] */
1803     bufferSize += 1;  /* u8 primitive->wpsConfig.secondaryDeviceTypeCount */
1804     {
1805         u16 i2;
1806         for (i2 = 0; i2 < primitive->wpsConfig.secondaryDeviceTypeCount; i2++)
1807         {
1808             bufferSize += 8; /* u8 primitive->wpsConfig.secondaryDeviceType[i2].deviceDetails[8] */
1809         }
1810     }
1811     bufferSize += 2;         /* CsrWifiSmeWpsConfigTypeMask primitive->wpsConfig.configMethods */
1812     bufferSize += 1;         /* u8 primitive->wpsConfig.rfBands */
1813     bufferSize += 4;         /* u8 primitive->wpsConfig.osVersion[4] */
1814     return bufferSize;
1815 }
1816
1817
1818 u8* CsrWifiSmeWpsConfigurationReqSer(u8 *ptr, size_t *len, void *msg)
1819 {
1820     CsrWifiSmeWpsConfigurationReq *primitive = (CsrWifiSmeWpsConfigurationReq *)msg;
1821     *len = 0;
1822     CsrUint16Ser(ptr, len, primitive->common.type);
1823     CsrUint8Ser(ptr, len, (u8) primitive->wpsConfig.wpsVersion);
1824     CsrMemCpySer(ptr, len, (const void *) primitive->wpsConfig.uuid, ((u16) (16)));
1825     CsrMemCpySer(ptr, len, (const void *) primitive->wpsConfig.deviceName, ((u16) (32)));
1826     CsrUint8Ser(ptr, len, (u8) primitive->wpsConfig.deviceNameLength);
1827     CsrMemCpySer(ptr, len, (const void *) primitive->wpsConfig.manufacturer, ((u16) (64)));
1828     CsrUint8Ser(ptr, len, (u8) primitive->wpsConfig.manufacturerLength);
1829     CsrMemCpySer(ptr, len, (const void *) primitive->wpsConfig.modelName, ((u16) (32)));
1830     CsrUint8Ser(ptr, len, (u8) primitive->wpsConfig.modelNameLength);
1831     CsrMemCpySer(ptr, len, (const void *) primitive->wpsConfig.modelNumber, ((u16) (32)));
1832     CsrUint8Ser(ptr, len, (u8) primitive->wpsConfig.modelNumberLength);
1833     CsrMemCpySer(ptr, len, (const void *) primitive->wpsConfig.serialNumber, ((u16) (32)));
1834     CsrMemCpySer(ptr, len, (const void *) primitive->wpsConfig.primDeviceType.deviceDetails, ((u16) (8)));
1835     CsrUint8Ser(ptr, len, (u8) primitive->wpsConfig.secondaryDeviceTypeCount);
1836     {
1837         u16 i2;
1838         for (i2 = 0; i2 < primitive->wpsConfig.secondaryDeviceTypeCount; i2++)
1839         {
1840             CsrMemCpySer(ptr, len, (const void *) primitive->wpsConfig.secondaryDeviceType[i2].deviceDetails, ((u16) (8)));
1841         }
1842     }
1843     CsrUint16Ser(ptr, len, (u16) primitive->wpsConfig.configMethods);
1844     CsrUint8Ser(ptr, len, (u8) primitive->wpsConfig.rfBands);
1845     CsrMemCpySer(ptr, len, (const void *) primitive->wpsConfig.osVersion, ((u16) (4)));
1846     return(ptr);
1847 }
1848
1849
1850 void* CsrWifiSmeWpsConfigurationReqDes(u8 *buffer, size_t length)
1851 {
1852     CsrWifiSmeWpsConfigurationReq *primitive = kmalloc(sizeof(CsrWifiSmeWpsConfigurationReq), GFP_KERNEL);
1853     size_t offset;
1854     offset = 0;
1855
1856     CsrUint16Des(&primitive->common.type, buffer, &offset);
1857     CsrUint8Des((u8 *) &primitive->wpsConfig.wpsVersion, buffer, &offset);
1858     CsrMemCpyDes(primitive->wpsConfig.uuid, buffer, &offset, ((u16) (16)));
1859     CsrMemCpyDes(primitive->wpsConfig.deviceName, buffer, &offset, ((u16) (32)));
1860     CsrUint8Des((u8 *) &primitive->wpsConfig.deviceNameLength, buffer, &offset);
1861     CsrMemCpyDes(primitive->wpsConfig.manufacturer, buffer, &offset, ((u16) (64)));
1862     CsrUint8Des((u8 *) &primitive->wpsConfig.manufacturerLength, buffer, &offset);
1863     CsrMemCpyDes(primitive->wpsConfig.modelName, buffer, &offset, ((u16) (32)));
1864     CsrUint8Des((u8 *) &primitive->wpsConfig.modelNameLength, buffer, &offset);
1865     CsrMemCpyDes(primitive->wpsConfig.modelNumber, buffer, &offset, ((u16) (32)));
1866     CsrUint8Des((u8 *) &primitive->wpsConfig.modelNumberLength, buffer, &offset);
1867     CsrMemCpyDes(primitive->wpsConfig.serialNumber, buffer, &offset, ((u16) (32)));
1868     CsrMemCpyDes(primitive->wpsConfig.primDeviceType.deviceDetails, buffer, &offset, ((u16) (8)));
1869     CsrUint8Des((u8 *) &primitive->wpsConfig.secondaryDeviceTypeCount, buffer, &offset);
1870     primitive->wpsConfig.secondaryDeviceType = NULL;
1871     if (primitive->wpsConfig.secondaryDeviceTypeCount)
1872     {
1873         primitive->wpsConfig.secondaryDeviceType = kmalloc(sizeof(CsrWifiSmeWpsDeviceType) * primitive->wpsConfig.secondaryDeviceTypeCount, GFP_KERNEL);
1874     }
1875     {
1876         u16 i2;
1877         for (i2 = 0; i2 < primitive->wpsConfig.secondaryDeviceTypeCount; i2++)
1878         {
1879             CsrMemCpyDes(primitive->wpsConfig.secondaryDeviceType[i2].deviceDetails, buffer, &offset, ((u16) (8)));
1880         }
1881     }
1882     CsrUint16Des((u16 *) &primitive->wpsConfig.configMethods, buffer, &offset);
1883     CsrUint8Des((u8 *) &primitive->wpsConfig.rfBands, buffer, &offset);
1884     CsrMemCpyDes(primitive->wpsConfig.osVersion, buffer, &offset, ((u16) (4)));
1885
1886     return primitive;
1887 }
1888
1889
1890 void CsrWifiSmeWpsConfigurationReqSerFree(void *voidPrimitivePointer)
1891 {
1892     CsrWifiSmeWpsConfigurationReq *primitive = (CsrWifiSmeWpsConfigurationReq *) voidPrimitivePointer;
1893     kfree(primitive->wpsConfig.secondaryDeviceType);
1894     kfree(primitive);
1895 }
1896
1897
1898 size_t CsrWifiSmeSetReqSizeof(void *msg)
1899 {
1900     CsrWifiSmeSetReq *primitive = (CsrWifiSmeSetReq *) msg;
1901     size_t bufferSize = 2;
1902
1903     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 8) */
1904     bufferSize += 4;                     /* u32 primitive->dataLength */
1905     bufferSize += primitive->dataLength; /* u8 primitive->data */
1906     return bufferSize;
1907 }
1908
1909
1910 u8* CsrWifiSmeSetReqSer(u8 *ptr, size_t *len, void *msg)
1911 {
1912     CsrWifiSmeSetReq *primitive = (CsrWifiSmeSetReq *)msg;
1913     *len = 0;
1914     CsrUint16Ser(ptr, len, primitive->common.type);
1915     CsrUint32Ser(ptr, len, (u32) primitive->dataLength);
1916     if (primitive->dataLength)
1917     {
1918         CsrMemCpySer(ptr, len, (const void *) primitive->data, ((u16) (primitive->dataLength)));
1919     }
1920     return(ptr);
1921 }
1922
1923
1924 void* CsrWifiSmeSetReqDes(u8 *buffer, size_t length)
1925 {
1926     CsrWifiSmeSetReq *primitive = kmalloc(sizeof(CsrWifiSmeSetReq), GFP_KERNEL);
1927     size_t offset;
1928     offset = 0;
1929
1930     CsrUint16Des(&primitive->common.type, buffer, &offset);
1931     CsrUint32Des((u32 *) &primitive->dataLength, buffer, &offset);
1932     if (primitive->dataLength)
1933     {
1934         primitive->data = kmalloc(primitive->dataLength, GFP_KERNEL);
1935         CsrMemCpyDes(primitive->data, buffer, &offset, ((u16) (primitive->dataLength)));
1936     }
1937     else
1938     {
1939         primitive->data = NULL;
1940     }
1941
1942     return primitive;
1943 }
1944
1945
1946 void CsrWifiSmeSetReqSerFree(void *voidPrimitivePointer)
1947 {
1948     CsrWifiSmeSetReq *primitive = (CsrWifiSmeSetReq *) voidPrimitivePointer;
1949     kfree(primitive->data);
1950     kfree(primitive);
1951 }
1952
1953
1954 size_t CsrWifiSmeAdhocConfigGetCfmSizeof(void *msg)
1955 {
1956     size_t bufferSize = 2;
1957
1958     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 13) */
1959     bufferSize += 2; /* CsrResult primitive->status */
1960     bufferSize += 2; /* u16 primitive->adHocConfig.atimWindowTu */
1961     bufferSize += 2; /* u16 primitive->adHocConfig.beaconPeriodTu */
1962     bufferSize += 2; /* u16 primitive->adHocConfig.joinOnlyAttempts */
1963     bufferSize += 2; /* u16 primitive->adHocConfig.joinAttemptIntervalMs */
1964     return bufferSize;
1965 }
1966
1967
1968 u8* CsrWifiSmeAdhocConfigGetCfmSer(u8 *ptr, size_t *len, void *msg)
1969 {
1970     CsrWifiSmeAdhocConfigGetCfm *primitive = (CsrWifiSmeAdhocConfigGetCfm *)msg;
1971     *len = 0;
1972     CsrUint16Ser(ptr, len, primitive->common.type);
1973     CsrUint16Ser(ptr, len, (u16) primitive->status);
1974     CsrUint16Ser(ptr, len, (u16) primitive->adHocConfig.atimWindowTu);
1975     CsrUint16Ser(ptr, len, (u16) primitive->adHocConfig.beaconPeriodTu);
1976     CsrUint16Ser(ptr, len, (u16) primitive->adHocConfig.joinOnlyAttempts);
1977     CsrUint16Ser(ptr, len, (u16) primitive->adHocConfig.joinAttemptIntervalMs);
1978     return(ptr);
1979 }
1980
1981
1982 void* CsrWifiSmeAdhocConfigGetCfmDes(u8 *buffer, size_t length)
1983 {
1984     CsrWifiSmeAdhocConfigGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeAdhocConfigGetCfm), GFP_KERNEL);
1985     size_t offset;
1986     offset = 0;
1987
1988     CsrUint16Des(&primitive->common.type, buffer, &offset);
1989     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
1990     CsrUint16Des((u16 *) &primitive->adHocConfig.atimWindowTu, buffer, &offset);
1991     CsrUint16Des((u16 *) &primitive->adHocConfig.beaconPeriodTu, buffer, &offset);
1992     CsrUint16Des((u16 *) &primitive->adHocConfig.joinOnlyAttempts, buffer, &offset);
1993     CsrUint16Des((u16 *) &primitive->adHocConfig.joinAttemptIntervalMs, buffer, &offset);
1994
1995     return primitive;
1996 }
1997
1998
1999 size_t CsrWifiSmeAssociationCompleteIndSizeof(void *msg)
2000 {
2001     CsrWifiSmeAssociationCompleteInd *primitive = (CsrWifiSmeAssociationCompleteInd *) msg;
2002     size_t bufferSize = 2;
2003
2004     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 98) */
2005     bufferSize += 2;                                                     /* u16 primitive->interfaceTag */
2006     bufferSize += 2;                                                     /* CsrResult primitive->status */
2007     bufferSize += 32;                                                    /* u8 primitive->connectionInfo.ssid.ssid[32] */
2008     bufferSize += 1;                                                     /* u8 primitive->connectionInfo.ssid.length */
2009     bufferSize += 6;                                                     /* u8 primitive->connectionInfo.bssid.a[6] */
2010     bufferSize += 1;                                                     /* CsrWifiSme80211NetworkType primitive->connectionInfo.networkType80211 */
2011     bufferSize += 1;                                                     /* u8 primitive->connectionInfo.channelNumber */
2012     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.channelFrequency */
2013     bufferSize += 2;                                                     /* CsrWifiSmeAuthMode primitive->connectionInfo.authMode */
2014     bufferSize += 2;                                                     /* CsrWifiSmeEncryption primitive->connectionInfo.pairwiseCipher */
2015     bufferSize += 2;                                                     /* CsrWifiSmeEncryption primitive->connectionInfo.groupCipher */
2016     bufferSize += 1;                                                     /* CsrWifiSmeRadioIF primitive->connectionInfo.ifIndex */
2017     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.atimWindowTu */
2018     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.beaconPeriodTu */
2019     bufferSize += 1;                                                     /* u8 primitive->connectionInfo.reassociation */
2020     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.beaconFrameLength */
2021     bufferSize += primitive->connectionInfo.beaconFrameLength;           /* u8 primitive->connectionInfo.beaconFrame */
2022     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.associationReqFrameLength */
2023     bufferSize += primitive->connectionInfo.associationReqFrameLength;   /* u8 primitive->connectionInfo.associationReqFrame */
2024     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.associationRspFrameLength */
2025     bufferSize += primitive->connectionInfo.associationRspFrameLength;   /* u8 primitive->connectionInfo.associationRspFrame */
2026     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.assocScanInfoElementsLength */
2027     bufferSize += primitive->connectionInfo.assocScanInfoElementsLength; /* u8 primitive->connectionInfo.assocScanInfoElements */
2028     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.assocReqCapabilities */
2029     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.assocReqListenIntervalTu */
2030     bufferSize += 6;                                                     /* u8 primitive->connectionInfo.assocReqApAddress.a[6] */
2031     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.assocReqInfoElementsLength */
2032     bufferSize += primitive->connectionInfo.assocReqInfoElementsLength;  /* u8 primitive->connectionInfo.assocReqInfoElements */
2033     bufferSize += 2;                                                     /* CsrWifiSmeIEEE80211Result primitive->connectionInfo.assocRspResult */
2034     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.assocRspCapabilityInfo */
2035     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.assocRspAssociationId */
2036     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.assocRspInfoElementsLength */
2037     bufferSize += primitive->connectionInfo.assocRspInfoElementsLength;  /* u8 primitive->connectionInfo.assocRspInfoElements */
2038     bufferSize += 2;                                                     /* CsrWifiSmeIEEE80211Reason primitive->deauthReason */
2039     return bufferSize;
2040 }
2041
2042
2043 u8* CsrWifiSmeAssociationCompleteIndSer(u8 *ptr, size_t *len, void *msg)
2044 {
2045     CsrWifiSmeAssociationCompleteInd *primitive = (CsrWifiSmeAssociationCompleteInd *)msg;
2046     *len = 0;
2047     CsrUint16Ser(ptr, len, primitive->common.type);
2048     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
2049     CsrUint16Ser(ptr, len, (u16) primitive->status);
2050     CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.ssid.ssid, ((u16) (32)));
2051     CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.ssid.length);
2052     CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.bssid.a, ((u16) (6)));
2053     CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.networkType80211);
2054     CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.channelNumber);
2055     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.channelFrequency);
2056     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.authMode);
2057     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.pairwiseCipher);
2058     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.groupCipher);
2059     CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.ifIndex);
2060     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.atimWindowTu);
2061     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.beaconPeriodTu);
2062     CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.reassociation);
2063     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.beaconFrameLength);
2064     if (primitive->connectionInfo.beaconFrameLength)
2065     {
2066         CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.beaconFrame, ((u16) (primitive->connectionInfo.beaconFrameLength)));
2067     }
2068     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.associationReqFrameLength);
2069     if (primitive->connectionInfo.associationReqFrameLength)
2070     {
2071         CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.associationReqFrame, ((u16) (primitive->connectionInfo.associationReqFrameLength)));
2072     }
2073     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.associationRspFrameLength);
2074     if (primitive->connectionInfo.associationRspFrameLength)
2075     {
2076         CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.associationRspFrame, ((u16) (primitive->connectionInfo.associationRspFrameLength)));
2077     }
2078     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocScanInfoElementsLength);
2079     if (primitive->connectionInfo.assocScanInfoElementsLength)
2080     {
2081         CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocScanInfoElements, ((u16) (primitive->connectionInfo.assocScanInfoElementsLength)));
2082     }
2083     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocReqCapabilities);
2084     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocReqListenIntervalTu);
2085     CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocReqApAddress.a, ((u16) (6)));
2086     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocReqInfoElementsLength);
2087     if (primitive->connectionInfo.assocReqInfoElementsLength)
2088     {
2089         CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocReqInfoElements, ((u16) (primitive->connectionInfo.assocReqInfoElementsLength)));
2090     }
2091     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspResult);
2092     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspCapabilityInfo);
2093     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspAssociationId);
2094     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspInfoElementsLength);
2095     if (primitive->connectionInfo.assocRspInfoElementsLength)
2096     {
2097         CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocRspInfoElements, ((u16) (primitive->connectionInfo.assocRspInfoElementsLength)));
2098     }
2099     CsrUint16Ser(ptr, len, (u16) primitive->deauthReason);
2100     return(ptr);
2101 }
2102
2103
2104 void* CsrWifiSmeAssociationCompleteIndDes(u8 *buffer, size_t length)
2105 {
2106     CsrWifiSmeAssociationCompleteInd *primitive = kmalloc(sizeof(CsrWifiSmeAssociationCompleteInd), GFP_KERNEL);
2107     size_t offset;
2108     offset = 0;
2109
2110     CsrUint16Des(&primitive->common.type, buffer, &offset);
2111     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
2112     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
2113     CsrMemCpyDes(primitive->connectionInfo.ssid.ssid, buffer, &offset, ((u16) (32)));
2114     CsrUint8Des((u8 *) &primitive->connectionInfo.ssid.length, buffer, &offset);
2115     CsrMemCpyDes(primitive->connectionInfo.bssid.a, buffer, &offset, ((u16) (6)));
2116     CsrUint8Des((u8 *) &primitive->connectionInfo.networkType80211, buffer, &offset);
2117     CsrUint8Des((u8 *) &primitive->connectionInfo.channelNumber, buffer, &offset);
2118     CsrUint16Des((u16 *) &primitive->connectionInfo.channelFrequency, buffer, &offset);
2119     CsrUint16Des((u16 *) &primitive->connectionInfo.authMode, buffer, &offset);
2120     CsrUint16Des((u16 *) &primitive->connectionInfo.pairwiseCipher, buffer, &offset);
2121     CsrUint16Des((u16 *) &primitive->connectionInfo.groupCipher, buffer, &offset);
2122     CsrUint8Des((u8 *) &primitive->connectionInfo.ifIndex, buffer, &offset);
2123     CsrUint16Des((u16 *) &primitive->connectionInfo.atimWindowTu, buffer, &offset);
2124     CsrUint16Des((u16 *) &primitive->connectionInfo.beaconPeriodTu, buffer, &offset);
2125     CsrUint8Des((u8 *) &primitive->connectionInfo.reassociation, buffer, &offset);
2126     CsrUint16Des((u16 *) &primitive->connectionInfo.beaconFrameLength, buffer, &offset);
2127     if (primitive->connectionInfo.beaconFrameLength)
2128     {
2129         primitive->connectionInfo.beaconFrame = kmalloc(primitive->connectionInfo.beaconFrameLength, GFP_KERNEL);
2130         CsrMemCpyDes(primitive->connectionInfo.beaconFrame, buffer, &offset, ((u16) (primitive->connectionInfo.beaconFrameLength)));
2131     }
2132     else
2133     {
2134         primitive->connectionInfo.beaconFrame = NULL;
2135     }
2136     CsrUint16Des((u16 *) &primitive->connectionInfo.associationReqFrameLength, buffer, &offset);
2137     if (primitive->connectionInfo.associationReqFrameLength)
2138     {
2139         primitive->connectionInfo.associationReqFrame = kmalloc(primitive->connectionInfo.associationReqFrameLength, GFP_KERNEL);
2140         CsrMemCpyDes(primitive->connectionInfo.associationReqFrame, buffer, &offset, ((u16) (primitive->connectionInfo.associationReqFrameLength)));
2141     }
2142     else
2143     {
2144         primitive->connectionInfo.associationReqFrame = NULL;
2145     }
2146     CsrUint16Des((u16 *) &primitive->connectionInfo.associationRspFrameLength, buffer, &offset);
2147     if (primitive->connectionInfo.associationRspFrameLength)
2148     {
2149         primitive->connectionInfo.associationRspFrame = kmalloc(primitive->connectionInfo.associationRspFrameLength, GFP_KERNEL);
2150         CsrMemCpyDes(primitive->connectionInfo.associationRspFrame, buffer, &offset, ((u16) (primitive->connectionInfo.associationRspFrameLength)));
2151     }
2152     else
2153     {
2154         primitive->connectionInfo.associationRspFrame = NULL;
2155     }
2156     CsrUint16Des((u16 *) &primitive->connectionInfo.assocScanInfoElementsLength, buffer, &offset);
2157     if (primitive->connectionInfo.assocScanInfoElementsLength)
2158     {
2159         primitive->connectionInfo.assocScanInfoElements = kmalloc(primitive->connectionInfo.assocScanInfoElementsLength, GFP_KERNEL);
2160         CsrMemCpyDes(primitive->connectionInfo.assocScanInfoElements, buffer, &offset, ((u16) (primitive->connectionInfo.assocScanInfoElementsLength)));
2161     }
2162     else
2163     {
2164         primitive->connectionInfo.assocScanInfoElements = NULL;
2165     }
2166     CsrUint16Des((u16 *) &primitive->connectionInfo.assocReqCapabilities, buffer, &offset);
2167     CsrUint16Des((u16 *) &primitive->connectionInfo.assocReqListenIntervalTu, buffer, &offset);
2168     CsrMemCpyDes(primitive->connectionInfo.assocReqApAddress.a, buffer, &offset, ((u16) (6)));
2169     CsrUint16Des((u16 *) &primitive->connectionInfo.assocReqInfoElementsLength, buffer, &offset);
2170     if (primitive->connectionInfo.assocReqInfoElementsLength)
2171     {
2172         primitive->connectionInfo.assocReqInfoElements = kmalloc(primitive->connectionInfo.assocReqInfoElementsLength, GFP_KERNEL);
2173         CsrMemCpyDes(primitive->connectionInfo.assocReqInfoElements, buffer, &offset, ((u16) (primitive->connectionInfo.assocReqInfoElementsLength)));
2174     }
2175     else
2176     {
2177         primitive->connectionInfo.assocReqInfoElements = NULL;
2178     }
2179     CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspResult, buffer, &offset);
2180     CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspCapabilityInfo, buffer, &offset);
2181     CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspAssociationId, buffer, &offset);
2182     CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspInfoElementsLength, buffer, &offset);
2183     if (primitive->connectionInfo.assocRspInfoElementsLength)
2184     {
2185         primitive->connectionInfo.assocRspInfoElements = kmalloc(primitive->connectionInfo.assocRspInfoElementsLength, GFP_KERNEL);
2186         CsrMemCpyDes(primitive->connectionInfo.assocRspInfoElements, buffer, &offset, ((u16) (primitive->connectionInfo.assocRspInfoElementsLength)));
2187     }
2188     else
2189     {
2190         primitive->connectionInfo.assocRspInfoElements = NULL;
2191     }
2192     CsrUint16Des((u16 *) &primitive->deauthReason, buffer, &offset);
2193
2194     return primitive;
2195 }
2196
2197
2198 void CsrWifiSmeAssociationCompleteIndSerFree(void *voidPrimitivePointer)
2199 {
2200     CsrWifiSmeAssociationCompleteInd *primitive = (CsrWifiSmeAssociationCompleteInd *) voidPrimitivePointer;
2201     kfree(primitive->connectionInfo.beaconFrame);
2202     kfree(primitive->connectionInfo.associationReqFrame);
2203     kfree(primitive->connectionInfo.associationRspFrame);
2204     kfree(primitive->connectionInfo.assocScanInfoElements);
2205     kfree(primitive->connectionInfo.assocReqInfoElements);
2206     kfree(primitive->connectionInfo.assocRspInfoElements);
2207     kfree(primitive);
2208 }
2209
2210
2211 size_t CsrWifiSmeAssociationStartIndSizeof(void *msg)
2212 {
2213     size_t bufferSize = 2;
2214
2215     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 44) */
2216     bufferSize += 2;  /* u16 primitive->interfaceTag */
2217     bufferSize += 6;  /* u8 primitive->address.a[6] */
2218     bufferSize += 32; /* u8 primitive->ssid.ssid[32] */
2219     bufferSize += 1;  /* u8 primitive->ssid.length */
2220     return bufferSize;
2221 }
2222
2223
2224 u8* CsrWifiSmeAssociationStartIndSer(u8 *ptr, size_t *len, void *msg)
2225 {
2226     CsrWifiSmeAssociationStartInd *primitive = (CsrWifiSmeAssociationStartInd *)msg;
2227     *len = 0;
2228     CsrUint16Ser(ptr, len, primitive->common.type);
2229     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
2230     CsrMemCpySer(ptr, len, (const void *) primitive->address.a, ((u16) (6)));
2231     CsrMemCpySer(ptr, len, (const void *) primitive->ssid.ssid, ((u16) (32)));
2232     CsrUint8Ser(ptr, len, (u8) primitive->ssid.length);
2233     return(ptr);
2234 }
2235
2236
2237 void* CsrWifiSmeAssociationStartIndDes(u8 *buffer, size_t length)
2238 {
2239     CsrWifiSmeAssociationStartInd *primitive = kmalloc(sizeof(CsrWifiSmeAssociationStartInd), GFP_KERNEL);
2240     size_t offset;
2241     offset = 0;
2242
2243     CsrUint16Des(&primitive->common.type, buffer, &offset);
2244     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
2245     CsrMemCpyDes(primitive->address.a, buffer, &offset, ((u16) (6)));
2246     CsrMemCpyDes(primitive->ssid.ssid, buffer, &offset, ((u16) (32)));
2247     CsrUint8Des((u8 *) &primitive->ssid.length, buffer, &offset);
2248
2249     return primitive;
2250 }
2251
2252
2253 size_t CsrWifiSmeBlacklistCfmSizeof(void *msg)
2254 {
2255     CsrWifiSmeBlacklistCfm *primitive = (CsrWifiSmeBlacklistCfm *) msg;
2256     size_t bufferSize = 2;
2257
2258     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 15) */
2259     bufferSize += 2; /* u16 primitive->interfaceTag */
2260     bufferSize += 2; /* CsrResult primitive->status */
2261     bufferSize += 1; /* CsrWifiSmeListAction primitive->action */
2262     bufferSize += 1; /* u8 primitive->getAddressCount */
2263     {
2264         u16 i1;
2265         for (i1 = 0; i1 < primitive->getAddressCount; i1++)
2266         {
2267             bufferSize += 6; /* u8 primitive->getAddresses[i1].a[6] */
2268         }
2269     }
2270     return bufferSize;
2271 }
2272
2273
2274 u8* CsrWifiSmeBlacklistCfmSer(u8 *ptr, size_t *len, void *msg)
2275 {
2276     CsrWifiSmeBlacklistCfm *primitive = (CsrWifiSmeBlacklistCfm *)msg;
2277     *len = 0;
2278     CsrUint16Ser(ptr, len, primitive->common.type);
2279     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
2280     CsrUint16Ser(ptr, len, (u16) primitive->status);
2281     CsrUint8Ser(ptr, len, (u8) primitive->action);
2282     CsrUint8Ser(ptr, len, (u8) primitive->getAddressCount);
2283     {
2284         u16 i1;
2285         for (i1 = 0; i1 < primitive->getAddressCount; i1++)
2286         {
2287             CsrMemCpySer(ptr, len, (const void *) primitive->getAddresses[i1].a, ((u16) (6)));
2288         }
2289     }
2290     return(ptr);
2291 }
2292
2293
2294 void* CsrWifiSmeBlacklistCfmDes(u8 *buffer, size_t length)
2295 {
2296     CsrWifiSmeBlacklistCfm *primitive = kmalloc(sizeof(CsrWifiSmeBlacklistCfm), GFP_KERNEL);
2297     size_t offset;
2298     offset = 0;
2299
2300     CsrUint16Des(&primitive->common.type, buffer, &offset);
2301     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
2302     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
2303     CsrUint8Des((u8 *) &primitive->action, buffer, &offset);
2304     CsrUint8Des((u8 *) &primitive->getAddressCount, buffer, &offset);
2305     primitive->getAddresses = NULL;
2306     if (primitive->getAddressCount)
2307     {
2308         primitive->getAddresses = kmalloc(sizeof(CsrWifiMacAddress) * primitive->getAddressCount, GFP_KERNEL);
2309     }
2310     {
2311         u16 i1;
2312         for (i1 = 0; i1 < primitive->getAddressCount; i1++)
2313         {
2314             CsrMemCpyDes(primitive->getAddresses[i1].a, buffer, &offset, ((u16) (6)));
2315         }
2316     }
2317
2318     return primitive;
2319 }
2320
2321
2322 void CsrWifiSmeBlacklistCfmSerFree(void *voidPrimitivePointer)
2323 {
2324     CsrWifiSmeBlacklistCfm *primitive = (CsrWifiSmeBlacklistCfm *) voidPrimitivePointer;
2325     kfree(primitive->getAddresses);
2326     kfree(primitive);
2327 }
2328
2329
2330 size_t CsrWifiSmeCalibrationDataGetCfmSizeof(void *msg)
2331 {
2332     CsrWifiSmeCalibrationDataGetCfm *primitive = (CsrWifiSmeCalibrationDataGetCfm *) msg;
2333     size_t bufferSize = 2;
2334
2335     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 8) */
2336     bufferSize += 2;                                /* CsrResult primitive->status */
2337     bufferSize += 2;                                /* u16 primitive->calibrationDataLength */
2338     bufferSize += primitive->calibrationDataLength; /* u8 primitive->calibrationData */
2339     return bufferSize;
2340 }
2341
2342
2343 u8* CsrWifiSmeCalibrationDataGetCfmSer(u8 *ptr, size_t *len, void *msg)
2344 {
2345     CsrWifiSmeCalibrationDataGetCfm *primitive = (CsrWifiSmeCalibrationDataGetCfm *)msg;
2346     *len = 0;
2347     CsrUint16Ser(ptr, len, primitive->common.type);
2348     CsrUint16Ser(ptr, len, (u16) primitive->status);
2349     CsrUint16Ser(ptr, len, (u16) primitive->calibrationDataLength);
2350     if (primitive->calibrationDataLength)
2351     {
2352         CsrMemCpySer(ptr, len, (const void *) primitive->calibrationData, ((u16) (primitive->calibrationDataLength)));
2353     }
2354     return(ptr);
2355 }
2356
2357
2358 void* CsrWifiSmeCalibrationDataGetCfmDes(u8 *buffer, size_t length)
2359 {
2360     CsrWifiSmeCalibrationDataGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeCalibrationDataGetCfm), GFP_KERNEL);
2361     size_t offset;
2362     offset = 0;
2363
2364     CsrUint16Des(&primitive->common.type, buffer, &offset);
2365     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
2366     CsrUint16Des((u16 *) &primitive->calibrationDataLength, buffer, &offset);
2367     if (primitive->calibrationDataLength)
2368     {
2369         primitive->calibrationData = kmalloc(primitive->calibrationDataLength, GFP_KERNEL);
2370         CsrMemCpyDes(primitive->calibrationData, buffer, &offset, ((u16) (primitive->calibrationDataLength)));
2371     }
2372     else
2373     {
2374         primitive->calibrationData = NULL;
2375     }
2376
2377     return primitive;
2378 }
2379
2380
2381 void CsrWifiSmeCalibrationDataGetCfmSerFree(void *voidPrimitivePointer)
2382 {
2383     CsrWifiSmeCalibrationDataGetCfm *primitive = (CsrWifiSmeCalibrationDataGetCfm *) voidPrimitivePointer;
2384     kfree(primitive->calibrationData);
2385     kfree(primitive);
2386 }
2387
2388
2389 size_t CsrWifiSmeCcxConfigGetCfmSizeof(void *msg)
2390 {
2391     size_t bufferSize = 2;
2392
2393     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 11) */
2394     bufferSize += 2; /* u16 primitive->interfaceTag */
2395     bufferSize += 2; /* CsrResult primitive->status */
2396     bufferSize += 1; /* u8 primitive->ccxConfig.keepAliveTimeMs */
2397     bufferSize += 1; /* u8 primitive->ccxConfig.apRoamingEnabled */
2398     bufferSize += 1; /* u8 primitive->ccxConfig.measurementsMask */
2399     bufferSize += 1; /* u8 primitive->ccxConfig.ccxRadioMgtEnabled */
2400     return bufferSize;
2401 }
2402
2403
2404 u8* CsrWifiSmeCcxConfigGetCfmSer(u8 *ptr, size_t *len, void *msg)
2405 {
2406     CsrWifiSmeCcxConfigGetCfm *primitive = (CsrWifiSmeCcxConfigGetCfm *)msg;
2407     *len = 0;
2408     CsrUint16Ser(ptr, len, primitive->common.type);
2409     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
2410     CsrUint16Ser(ptr, len, (u16) primitive->status);
2411     CsrUint8Ser(ptr, len, (u8) primitive->ccxConfig.keepAliveTimeMs);
2412     CsrUint8Ser(ptr, len, (u8) primitive->ccxConfig.apRoamingEnabled);
2413     CsrUint8Ser(ptr, len, (u8) primitive->ccxConfig.measurementsMask);
2414     CsrUint8Ser(ptr, len, (u8) primitive->ccxConfig.ccxRadioMgtEnabled);
2415     return(ptr);
2416 }
2417
2418
2419 void* CsrWifiSmeCcxConfigGetCfmDes(u8 *buffer, size_t length)
2420 {
2421     CsrWifiSmeCcxConfigGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeCcxConfigGetCfm), GFP_KERNEL);
2422     size_t offset;
2423     offset = 0;
2424
2425     CsrUint16Des(&primitive->common.type, buffer, &offset);
2426     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
2427     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
2428     CsrUint8Des((u8 *) &primitive->ccxConfig.keepAliveTimeMs, buffer, &offset);
2429     CsrUint8Des((u8 *) &primitive->ccxConfig.apRoamingEnabled, buffer, &offset);
2430     CsrUint8Des((u8 *) &primitive->ccxConfig.measurementsMask, buffer, &offset);
2431     CsrUint8Des((u8 *) &primitive->ccxConfig.ccxRadioMgtEnabled, buffer, &offset);
2432
2433     return primitive;
2434 }
2435
2436
2437 size_t CsrWifiSmeCcxConfigSetCfmSizeof(void *msg)
2438 {
2439     size_t bufferSize = 2;
2440
2441     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 7) */
2442     bufferSize += 2; /* u16 primitive->interfaceTag */
2443     bufferSize += 2; /* CsrResult primitive->status */
2444     return bufferSize;
2445 }
2446
2447
2448 u8* CsrWifiSmeCcxConfigSetCfmSer(u8 *ptr, size_t *len, void *msg)
2449 {
2450     CsrWifiSmeCcxConfigSetCfm *primitive = (CsrWifiSmeCcxConfigSetCfm *)msg;
2451     *len = 0;
2452     CsrUint16Ser(ptr, len, primitive->common.type);
2453     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
2454     CsrUint16Ser(ptr, len, (u16) primitive->status);
2455     return(ptr);
2456 }
2457
2458
2459 void* CsrWifiSmeCcxConfigSetCfmDes(u8 *buffer, size_t length)
2460 {
2461     CsrWifiSmeCcxConfigSetCfm *primitive = kmalloc(sizeof(CsrWifiSmeCcxConfigSetCfm), GFP_KERNEL);
2462     size_t offset;
2463     offset = 0;
2464
2465     CsrUint16Des(&primitive->common.type, buffer, &offset);
2466     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
2467     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
2468
2469     return primitive;
2470 }
2471
2472
2473 size_t CsrWifiSmeCoexConfigGetCfmSizeof(void *msg)
2474 {
2475     size_t bufferSize = 2;
2476
2477     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 31) */
2478     bufferSize += 2; /* CsrResult primitive->status */
2479     bufferSize += 1; /* u8 primitive->coexConfig.coexEnableSchemeManagement */
2480     bufferSize += 1; /* u8 primitive->coexConfig.coexPeriodicWakeHost */
2481     bufferSize += 2; /* u16 primitive->coexConfig.coexTrafficBurstyLatencyMs */
2482     bufferSize += 2; /* u16 primitive->coexConfig.coexTrafficContinuousLatencyMs */
2483     bufferSize += 2; /* u16 primitive->coexConfig.coexObexBlackoutDurationMs */
2484     bufferSize += 2; /* u16 primitive->coexConfig.coexObexBlackoutPeriodMs */
2485     bufferSize += 2; /* u16 primitive->coexConfig.coexA2dpBrBlackoutDurationMs */
2486     bufferSize += 2; /* u16 primitive->coexConfig.coexA2dpBrBlackoutPeriodMs */
2487     bufferSize += 2; /* u16 primitive->coexConfig.coexA2dpEdrBlackoutDurationMs */
2488     bufferSize += 2; /* u16 primitive->coexConfig.coexA2dpEdrBlackoutPeriodMs */
2489     bufferSize += 2; /* u16 primitive->coexConfig.coexPagingBlackoutDurationMs */
2490     bufferSize += 2; /* u16 primitive->coexConfig.coexPagingBlackoutPeriodMs */
2491     bufferSize += 2; /* u16 primitive->coexConfig.coexInquiryBlackoutDurationMs */
2492     bufferSize += 2; /* u16 primitive->coexConfig.coexInquiryBlackoutPeriodMs */
2493     return bufferSize;
2494 }
2495
2496
2497 u8* CsrWifiSmeCoexConfigGetCfmSer(u8 *ptr, size_t *len, void *msg)
2498 {
2499     CsrWifiSmeCoexConfigGetCfm *primitive = (CsrWifiSmeCoexConfigGetCfm *)msg;
2500     *len = 0;
2501     CsrUint16Ser(ptr, len, primitive->common.type);
2502     CsrUint16Ser(ptr, len, (u16) primitive->status);
2503     CsrUint8Ser(ptr, len, (u8) primitive->coexConfig.coexEnableSchemeManagement);
2504     CsrUint8Ser(ptr, len, (u8) primitive->coexConfig.coexPeriodicWakeHost);
2505     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexTrafficBurstyLatencyMs);
2506     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexTrafficContinuousLatencyMs);
2507     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexObexBlackoutDurationMs);
2508     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexObexBlackoutPeriodMs);
2509     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexA2dpBrBlackoutDurationMs);
2510     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexA2dpBrBlackoutPeriodMs);
2511     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexA2dpEdrBlackoutDurationMs);
2512     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexA2dpEdrBlackoutPeriodMs);
2513     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexPagingBlackoutDurationMs);
2514     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexPagingBlackoutPeriodMs);
2515     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexInquiryBlackoutDurationMs);
2516     CsrUint16Ser(ptr, len, (u16) primitive->coexConfig.coexInquiryBlackoutPeriodMs);
2517     return(ptr);
2518 }
2519
2520
2521 void* CsrWifiSmeCoexConfigGetCfmDes(u8 *buffer, size_t length)
2522 {
2523     CsrWifiSmeCoexConfigGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeCoexConfigGetCfm), GFP_KERNEL);
2524     size_t offset;
2525     offset = 0;
2526
2527     CsrUint16Des(&primitive->common.type, buffer, &offset);
2528     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
2529     CsrUint8Des((u8 *) &primitive->coexConfig.coexEnableSchemeManagement, buffer, &offset);
2530     CsrUint8Des((u8 *) &primitive->coexConfig.coexPeriodicWakeHost, buffer, &offset);
2531     CsrUint16Des((u16 *) &primitive->coexConfig.coexTrafficBurstyLatencyMs, buffer, &offset);
2532     CsrUint16Des((u16 *) &primitive->coexConfig.coexTrafficContinuousLatencyMs, buffer, &offset);
2533     CsrUint16Des((u16 *) &primitive->coexConfig.coexObexBlackoutDurationMs, buffer, &offset);
2534     CsrUint16Des((u16 *) &primitive->coexConfig.coexObexBlackoutPeriodMs, buffer, &offset);
2535     CsrUint16Des((u16 *) &primitive->coexConfig.coexA2dpBrBlackoutDurationMs, buffer, &offset);
2536     CsrUint16Des((u16 *) &primitive->coexConfig.coexA2dpBrBlackoutPeriodMs, buffer, &offset);
2537     CsrUint16Des((u16 *) &primitive->coexConfig.coexA2dpEdrBlackoutDurationMs, buffer, &offset);
2538     CsrUint16Des((u16 *) &primitive->coexConfig.coexA2dpEdrBlackoutPeriodMs, buffer, &offset);
2539     CsrUint16Des((u16 *) &primitive->coexConfig.coexPagingBlackoutDurationMs, buffer, &offset);
2540     CsrUint16Des((u16 *) &primitive->coexConfig.coexPagingBlackoutPeriodMs, buffer, &offset);
2541     CsrUint16Des((u16 *) &primitive->coexConfig.coexInquiryBlackoutDurationMs, buffer, &offset);
2542     CsrUint16Des((u16 *) &primitive->coexConfig.coexInquiryBlackoutPeriodMs, buffer, &offset);
2543
2544     return primitive;
2545 }
2546
2547
2548 size_t CsrWifiSmeCoexInfoGetCfmSizeof(void *msg)
2549 {
2550     size_t bufferSize = 2;
2551
2552     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 24) */
2553     bufferSize += 2; /* CsrResult primitive->status */
2554     bufferSize += 1; /* u8 primitive->coexInfo.hasTrafficData */
2555     bufferSize += 1; /* CsrWifiSmeTrafficType primitive->coexInfo.currentTrafficType */
2556     bufferSize += 2; /* u16 primitive->coexInfo.currentPeriodMs */
2557     bufferSize += 1; /* CsrWifiSmePowerSaveLevel primitive->coexInfo.currentPowerSave */
2558     bufferSize += 2; /* u16 primitive->coexInfo.currentCoexPeriodMs */
2559     bufferSize += 2; /* u16 primitive->coexInfo.currentCoexLatencyMs */
2560     bufferSize += 1; /* u8 primitive->coexInfo.hasBtDevice */
2561     bufferSize += 4; /* u32 primitive->coexInfo.currentBlackoutDurationUs */
2562     bufferSize += 4; /* u32 primitive->coexInfo.currentBlackoutPeriodUs */
2563     bufferSize += 1; /* CsrWifiSmeCoexScheme primitive->coexInfo.currentCoexScheme */
2564     return bufferSize;
2565 }
2566
2567
2568 u8* CsrWifiSmeCoexInfoGetCfmSer(u8 *ptr, size_t *len, void *msg)
2569 {
2570     CsrWifiSmeCoexInfoGetCfm *primitive = (CsrWifiSmeCoexInfoGetCfm *)msg;
2571     *len = 0;
2572     CsrUint16Ser(ptr, len, primitive->common.type);
2573     CsrUint16Ser(ptr, len, (u16) primitive->status);
2574     CsrUint8Ser(ptr, len, (u8) primitive->coexInfo.hasTrafficData);
2575     CsrUint8Ser(ptr, len, (u8) primitive->coexInfo.currentTrafficType);
2576     CsrUint16Ser(ptr, len, (u16) primitive->coexInfo.currentPeriodMs);
2577     CsrUint8Ser(ptr, len, (u8) primitive->coexInfo.currentPowerSave);
2578     CsrUint16Ser(ptr, len, (u16) primitive->coexInfo.currentCoexPeriodMs);
2579     CsrUint16Ser(ptr, len, (u16) primitive->coexInfo.currentCoexLatencyMs);
2580     CsrUint8Ser(ptr, len, (u8) primitive->coexInfo.hasBtDevice);
2581     CsrUint32Ser(ptr, len, (u32) primitive->coexInfo.currentBlackoutDurationUs);
2582     CsrUint32Ser(ptr, len, (u32) primitive->coexInfo.currentBlackoutPeriodUs);
2583     CsrUint8Ser(ptr, len, (u8) primitive->coexInfo.currentCoexScheme);
2584     return(ptr);
2585 }
2586
2587
2588 void* CsrWifiSmeCoexInfoGetCfmDes(u8 *buffer, size_t length)
2589 {
2590     CsrWifiSmeCoexInfoGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeCoexInfoGetCfm), GFP_KERNEL);
2591     size_t offset;
2592     offset = 0;
2593
2594     CsrUint16Des(&primitive->common.type, buffer, &offset);
2595     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
2596     CsrUint8Des((u8 *) &primitive->coexInfo.hasTrafficData, buffer, &offset);
2597     CsrUint8Des((u8 *) &primitive->coexInfo.currentTrafficType, buffer, &offset);
2598     CsrUint16Des((u16 *) &primitive->coexInfo.currentPeriodMs, buffer, &offset);
2599     CsrUint8Des((u8 *) &primitive->coexInfo.currentPowerSave, buffer, &offset);
2600     CsrUint16Des((u16 *) &primitive->coexInfo.currentCoexPeriodMs, buffer, &offset);
2601     CsrUint16Des((u16 *) &primitive->coexInfo.currentCoexLatencyMs, buffer, &offset);
2602     CsrUint8Des((u8 *) &primitive->coexInfo.hasBtDevice, buffer, &offset);
2603     CsrUint32Des((u32 *) &primitive->coexInfo.currentBlackoutDurationUs, buffer, &offset);
2604     CsrUint32Des((u32 *) &primitive->coexInfo.currentBlackoutPeriodUs, buffer, &offset);
2605     CsrUint8Des((u8 *) &primitive->coexInfo.currentCoexScheme, buffer, &offset);
2606
2607     return primitive;
2608 }
2609
2610
2611 size_t CsrWifiSmeConnectCfmSizeof(void *msg)
2612 {
2613     size_t bufferSize = 2;
2614
2615     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 7) */
2616     bufferSize += 2; /* u16 primitive->interfaceTag */
2617     bufferSize += 2; /* CsrResult primitive->status */
2618     return bufferSize;
2619 }
2620
2621
2622 u8* CsrWifiSmeConnectCfmSer(u8 *ptr, size_t *len, void *msg)
2623 {
2624     CsrWifiSmeConnectCfm *primitive = (CsrWifiSmeConnectCfm *)msg;
2625     *len = 0;
2626     CsrUint16Ser(ptr, len, primitive->common.type);
2627     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
2628     CsrUint16Ser(ptr, len, (u16) primitive->status);
2629     return(ptr);
2630 }
2631
2632
2633 void* CsrWifiSmeConnectCfmDes(u8 *buffer, size_t length)
2634 {
2635     CsrWifiSmeConnectCfm *primitive = kmalloc(sizeof(CsrWifiSmeConnectCfm), GFP_KERNEL);
2636     size_t offset;
2637     offset = 0;
2638
2639     CsrUint16Des(&primitive->common.type, buffer, &offset);
2640     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
2641     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
2642
2643     return primitive;
2644 }
2645
2646
2647 size_t CsrWifiSmeConnectionConfigGetCfmSizeof(void *msg)
2648 {
2649     CsrWifiSmeConnectionConfigGetCfm *primitive = (CsrWifiSmeConnectionConfigGetCfm *) msg;
2650     size_t bufferSize = 2;
2651
2652     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 59) */
2653     bufferSize += 2;                                                                     /* u16 primitive->interfaceTag */
2654     bufferSize += 2;                                                                     /* CsrResult primitive->status */
2655     bufferSize += 32;                                                                    /* u8 primitive->connectionConfig.ssid.ssid[32] */
2656     bufferSize += 1;                                                                     /* u8 primitive->connectionConfig.ssid.length */
2657     bufferSize += 6;                                                                     /* u8 primitive->connectionConfig.bssid.a[6] */
2658     bufferSize += 1;                                                                     /* CsrWifiSmeBssType primitive->connectionConfig.bssType */
2659     bufferSize += 1;                                                                     /* CsrWifiSmeRadioIF primitive->connectionConfig.ifIndex */
2660     bufferSize += 1;                                                                     /* CsrWifiSme80211PrivacyMode primitive->connectionConfig.privacyMode */
2661     bufferSize += 2;                                                                     /* CsrWifiSmeAuthModeMask primitive->connectionConfig.authModeMask */
2662     bufferSize += 2;                                                                     /* CsrWifiSmeEncryptionMask primitive->connectionConfig.encryptionModeMask */
2663     bufferSize += 2;                                                                     /* u16 primitive->connectionConfig.mlmeAssociateReqInformationElementsLength */
2664     bufferSize += primitive->connectionConfig.mlmeAssociateReqInformationElementsLength; /* u8 primitive->connectionConfig.mlmeAssociateReqInformationElements */
2665     bufferSize += 1;                                                                     /* CsrWifiSmeWmmQosInfoMask primitive->connectionConfig.wmmQosInfo */
2666     bufferSize += 1;                                                                     /* u8 primitive->connectionConfig.adhocJoinOnly */
2667     bufferSize += 1;                                                                     /* u8 primitive->connectionConfig.adhocChannel */
2668     return bufferSize;
2669 }
2670
2671
2672 u8* CsrWifiSmeConnectionConfigGetCfmSer(u8 *ptr, size_t *len, void *msg)
2673 {
2674     CsrWifiSmeConnectionConfigGetCfm *primitive = (CsrWifiSmeConnectionConfigGetCfm *)msg;
2675     *len = 0;
2676     CsrUint16Ser(ptr, len, primitive->common.type);
2677     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
2678     CsrUint16Ser(ptr, len, (u16) primitive->status);
2679     CsrMemCpySer(ptr, len, (const void *) primitive->connectionConfig.ssid.ssid, ((u16) (32)));
2680     CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.ssid.length);
2681     CsrMemCpySer(ptr, len, (const void *) primitive->connectionConfig.bssid.a, ((u16) (6)));
2682     CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.bssType);
2683     CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.ifIndex);
2684     CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.privacyMode);
2685     CsrUint16Ser(ptr, len, (u16) primitive->connectionConfig.authModeMask);
2686     CsrUint16Ser(ptr, len, (u16) primitive->connectionConfig.encryptionModeMask);
2687     CsrUint16Ser(ptr, len, (u16) primitive->connectionConfig.mlmeAssociateReqInformationElementsLength);
2688     if (primitive->connectionConfig.mlmeAssociateReqInformationElementsLength)
2689     {
2690         CsrMemCpySer(ptr, len, (const void *) primitive->connectionConfig.mlmeAssociateReqInformationElements, ((u16) (primitive->connectionConfig.mlmeAssociateReqInformationElementsLength)));
2691     }
2692     CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.wmmQosInfo);
2693     CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.adhocJoinOnly);
2694     CsrUint8Ser(ptr, len, (u8) primitive->connectionConfig.adhocChannel);
2695     return(ptr);
2696 }
2697
2698
2699 void* CsrWifiSmeConnectionConfigGetCfmDes(u8 *buffer, size_t length)
2700 {
2701     CsrWifiSmeConnectionConfigGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeConnectionConfigGetCfm), GFP_KERNEL);
2702     size_t offset;
2703     offset = 0;
2704
2705     CsrUint16Des(&primitive->common.type, buffer, &offset);
2706     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
2707     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
2708     CsrMemCpyDes(primitive->connectionConfig.ssid.ssid, buffer, &offset, ((u16) (32)));
2709     CsrUint8Des((u8 *) &primitive->connectionConfig.ssid.length, buffer, &offset);
2710     CsrMemCpyDes(primitive->connectionConfig.bssid.a, buffer, &offset, ((u16) (6)));
2711     CsrUint8Des((u8 *) &primitive->connectionConfig.bssType, buffer, &offset);
2712     CsrUint8Des((u8 *) &primitive->connectionConfig.ifIndex, buffer, &offset);
2713     CsrUint8Des((u8 *) &primitive->connectionConfig.privacyMode, buffer, &offset);
2714     CsrUint16Des((u16 *) &primitive->connectionConfig.authModeMask, buffer, &offset);
2715     CsrUint16Des((u16 *) &primitive->connectionConfig.encryptionModeMask, buffer, &offset);
2716     CsrUint16Des((u16 *) &primitive->connectionConfig.mlmeAssociateReqInformationElementsLength, buffer, &offset);
2717     if (primitive->connectionConfig.mlmeAssociateReqInformationElementsLength)
2718     {
2719         primitive->connectionConfig.mlmeAssociateReqInformationElements = kmalloc(primitive->connectionConfig.mlmeAssociateReqInformationElementsLength, GFP_KERNEL);
2720         CsrMemCpyDes(primitive->connectionConfig.mlmeAssociateReqInformationElements, buffer, &offset, ((u16) (primitive->connectionConfig.mlmeAssociateReqInformationElementsLength)));
2721     }
2722     else
2723     {
2724         primitive->connectionConfig.mlmeAssociateReqInformationElements = NULL;
2725     }
2726     CsrUint8Des((u8 *) &primitive->connectionConfig.wmmQosInfo, buffer, &offset);
2727     CsrUint8Des((u8 *) &primitive->connectionConfig.adhocJoinOnly, buffer, &offset);
2728     CsrUint8Des((u8 *) &primitive->connectionConfig.adhocChannel, buffer, &offset);
2729
2730     return primitive;
2731 }
2732
2733
2734 void CsrWifiSmeConnectionConfigGetCfmSerFree(void *voidPrimitivePointer)
2735 {
2736     CsrWifiSmeConnectionConfigGetCfm *primitive = (CsrWifiSmeConnectionConfigGetCfm *) voidPrimitivePointer;
2737     kfree(primitive->connectionConfig.mlmeAssociateReqInformationElements);
2738     kfree(primitive);
2739 }
2740
2741
2742 size_t CsrWifiSmeConnectionInfoGetCfmSizeof(void *msg)
2743 {
2744     CsrWifiSmeConnectionInfoGetCfm *primitive = (CsrWifiSmeConnectionInfoGetCfm *) msg;
2745     size_t bufferSize = 2;
2746
2747     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 96) */
2748     bufferSize += 2;                                                     /* u16 primitive->interfaceTag */
2749     bufferSize += 2;                                                     /* CsrResult primitive->status */
2750     bufferSize += 32;                                                    /* u8 primitive->connectionInfo.ssid.ssid[32] */
2751     bufferSize += 1;                                                     /* u8 primitive->connectionInfo.ssid.length */
2752     bufferSize += 6;                                                     /* u8 primitive->connectionInfo.bssid.a[6] */
2753     bufferSize += 1;                                                     /* CsrWifiSme80211NetworkType primitive->connectionInfo.networkType80211 */
2754     bufferSize += 1;                                                     /* u8 primitive->connectionInfo.channelNumber */
2755     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.channelFrequency */
2756     bufferSize += 2;                                                     /* CsrWifiSmeAuthMode primitive->connectionInfo.authMode */
2757     bufferSize += 2;                                                     /* CsrWifiSmeEncryption primitive->connectionInfo.pairwiseCipher */
2758     bufferSize += 2;                                                     /* CsrWifiSmeEncryption primitive->connectionInfo.groupCipher */
2759     bufferSize += 1;                                                     /* CsrWifiSmeRadioIF primitive->connectionInfo.ifIndex */
2760     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.atimWindowTu */
2761     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.beaconPeriodTu */
2762     bufferSize += 1;                                                     /* u8 primitive->connectionInfo.reassociation */
2763     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.beaconFrameLength */
2764     bufferSize += primitive->connectionInfo.beaconFrameLength;           /* u8 primitive->connectionInfo.beaconFrame */
2765     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.associationReqFrameLength */
2766     bufferSize += primitive->connectionInfo.associationReqFrameLength;   /* u8 primitive->connectionInfo.associationReqFrame */
2767     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.associationRspFrameLength */
2768     bufferSize += primitive->connectionInfo.associationRspFrameLength;   /* u8 primitive->connectionInfo.associationRspFrame */
2769     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.assocScanInfoElementsLength */
2770     bufferSize += primitive->connectionInfo.assocScanInfoElementsLength; /* u8 primitive->connectionInfo.assocScanInfoElements */
2771     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.assocReqCapabilities */
2772     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.assocReqListenIntervalTu */
2773     bufferSize += 6;                                                     /* u8 primitive->connectionInfo.assocReqApAddress.a[6] */
2774     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.assocReqInfoElementsLength */
2775     bufferSize += primitive->connectionInfo.assocReqInfoElementsLength;  /* u8 primitive->connectionInfo.assocReqInfoElements */
2776     bufferSize += 2;                                                     /* CsrWifiSmeIEEE80211Result primitive->connectionInfo.assocRspResult */
2777     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.assocRspCapabilityInfo */
2778     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.assocRspAssociationId */
2779     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.assocRspInfoElementsLength */
2780     bufferSize += primitive->connectionInfo.assocRspInfoElementsLength;  /* u8 primitive->connectionInfo.assocRspInfoElements */
2781     return bufferSize;
2782 }
2783
2784
2785 u8* CsrWifiSmeConnectionInfoGetCfmSer(u8 *ptr, size_t *len, void *msg)
2786 {
2787     CsrWifiSmeConnectionInfoGetCfm *primitive = (CsrWifiSmeConnectionInfoGetCfm *)msg;
2788     *len = 0;
2789     CsrUint16Ser(ptr, len, primitive->common.type);
2790     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
2791     CsrUint16Ser(ptr, len, (u16) primitive->status);
2792     CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.ssid.ssid, ((u16) (32)));
2793     CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.ssid.length);
2794     CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.bssid.a, ((u16) (6)));
2795     CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.networkType80211);
2796     CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.channelNumber);
2797     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.channelFrequency);
2798     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.authMode);
2799     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.pairwiseCipher);
2800     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.groupCipher);
2801     CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.ifIndex);
2802     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.atimWindowTu);
2803     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.beaconPeriodTu);
2804     CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.reassociation);
2805     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.beaconFrameLength);
2806     if (primitive->connectionInfo.beaconFrameLength)
2807     {
2808         CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.beaconFrame, ((u16) (primitive->connectionInfo.beaconFrameLength)));
2809     }
2810     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.associationReqFrameLength);
2811     if (primitive->connectionInfo.associationReqFrameLength)
2812     {
2813         CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.associationReqFrame, ((u16) (primitive->connectionInfo.associationReqFrameLength)));
2814     }
2815     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.associationRspFrameLength);
2816     if (primitive->connectionInfo.associationRspFrameLength)
2817     {
2818         CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.associationRspFrame, ((u16) (primitive->connectionInfo.associationRspFrameLength)));
2819     }
2820     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocScanInfoElementsLength);
2821     if (primitive->connectionInfo.assocScanInfoElementsLength)
2822     {
2823         CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocScanInfoElements, ((u16) (primitive->connectionInfo.assocScanInfoElementsLength)));
2824     }
2825     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocReqCapabilities);
2826     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocReqListenIntervalTu);
2827     CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocReqApAddress.a, ((u16) (6)));
2828     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocReqInfoElementsLength);
2829     if (primitive->connectionInfo.assocReqInfoElementsLength)
2830     {
2831         CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocReqInfoElements, ((u16) (primitive->connectionInfo.assocReqInfoElementsLength)));
2832     }
2833     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspResult);
2834     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspCapabilityInfo);
2835     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspAssociationId);
2836     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspInfoElementsLength);
2837     if (primitive->connectionInfo.assocRspInfoElementsLength)
2838     {
2839         CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocRspInfoElements, ((u16) (primitive->connectionInfo.assocRspInfoElementsLength)));
2840     }
2841     return(ptr);
2842 }
2843
2844
2845 void* CsrWifiSmeConnectionInfoGetCfmDes(u8 *buffer, size_t length)
2846 {
2847     CsrWifiSmeConnectionInfoGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeConnectionInfoGetCfm), GFP_KERNEL);
2848     size_t offset;
2849     offset = 0;
2850
2851     CsrUint16Des(&primitive->common.type, buffer, &offset);
2852     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
2853     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
2854     CsrMemCpyDes(primitive->connectionInfo.ssid.ssid, buffer, &offset, ((u16) (32)));
2855     CsrUint8Des((u8 *) &primitive->connectionInfo.ssid.length, buffer, &offset);
2856     CsrMemCpyDes(primitive->connectionInfo.bssid.a, buffer, &offset, ((u16) (6)));
2857     CsrUint8Des((u8 *) &primitive->connectionInfo.networkType80211, buffer, &offset);
2858     CsrUint8Des((u8 *) &primitive->connectionInfo.channelNumber, buffer, &offset);
2859     CsrUint16Des((u16 *) &primitive->connectionInfo.channelFrequency, buffer, &offset);
2860     CsrUint16Des((u16 *) &primitive->connectionInfo.authMode, buffer, &offset);
2861     CsrUint16Des((u16 *) &primitive->connectionInfo.pairwiseCipher, buffer, &offset);
2862     CsrUint16Des((u16 *) &primitive->connectionInfo.groupCipher, buffer, &offset);
2863     CsrUint8Des((u8 *) &primitive->connectionInfo.ifIndex, buffer, &offset);
2864     CsrUint16Des((u16 *) &primitive->connectionInfo.atimWindowTu, buffer, &offset);
2865     CsrUint16Des((u16 *) &primitive->connectionInfo.beaconPeriodTu, buffer, &offset);
2866     CsrUint8Des((u8 *) &primitive->connectionInfo.reassociation, buffer, &offset);
2867     CsrUint16Des((u16 *) &primitive->connectionInfo.beaconFrameLength, buffer, &offset);
2868     if (primitive->connectionInfo.beaconFrameLength)
2869     {
2870         primitive->connectionInfo.beaconFrame = kmalloc(primitive->connectionInfo.beaconFrameLength, GFP_KERNEL);
2871         CsrMemCpyDes(primitive->connectionInfo.beaconFrame, buffer, &offset, ((u16) (primitive->connectionInfo.beaconFrameLength)));
2872     }
2873     else
2874     {
2875         primitive->connectionInfo.beaconFrame = NULL;
2876     }
2877     CsrUint16Des((u16 *) &primitive->connectionInfo.associationReqFrameLength, buffer, &offset);
2878     if (primitive->connectionInfo.associationReqFrameLength)
2879     {
2880         primitive->connectionInfo.associationReqFrame = kmalloc(primitive->connectionInfo.associationReqFrameLength, GFP_KERNEL);
2881         CsrMemCpyDes(primitive->connectionInfo.associationReqFrame, buffer, &offset, ((u16) (primitive->connectionInfo.associationReqFrameLength)));
2882     }
2883     else
2884     {
2885         primitive->connectionInfo.associationReqFrame = NULL;
2886     }
2887     CsrUint16Des((u16 *) &primitive->connectionInfo.associationRspFrameLength, buffer, &offset);
2888     if (primitive->connectionInfo.associationRspFrameLength)
2889     {
2890         primitive->connectionInfo.associationRspFrame = kmalloc(primitive->connectionInfo.associationRspFrameLength, GFP_KERNEL);
2891         CsrMemCpyDes(primitive->connectionInfo.associationRspFrame, buffer, &offset, ((u16) (primitive->connectionInfo.associationRspFrameLength)));
2892     }
2893     else
2894     {
2895         primitive->connectionInfo.associationRspFrame = NULL;
2896     }
2897     CsrUint16Des((u16 *) &primitive->connectionInfo.assocScanInfoElementsLength, buffer, &offset);
2898     if (primitive->connectionInfo.assocScanInfoElementsLength)
2899     {
2900         primitive->connectionInfo.assocScanInfoElements = kmalloc(primitive->connectionInfo.assocScanInfoElementsLength, GFP_KERNEL);
2901         CsrMemCpyDes(primitive->connectionInfo.assocScanInfoElements, buffer, &offset, ((u16) (primitive->connectionInfo.assocScanInfoElementsLength)));
2902     }
2903     else
2904     {
2905         primitive->connectionInfo.assocScanInfoElements = NULL;
2906     }
2907     CsrUint16Des((u16 *) &primitive->connectionInfo.assocReqCapabilities, buffer, &offset);
2908     CsrUint16Des((u16 *) &primitive->connectionInfo.assocReqListenIntervalTu, buffer, &offset);
2909     CsrMemCpyDes(primitive->connectionInfo.assocReqApAddress.a, buffer, &offset, ((u16) (6)));
2910     CsrUint16Des((u16 *) &primitive->connectionInfo.assocReqInfoElementsLength, buffer, &offset);
2911     if (primitive->connectionInfo.assocReqInfoElementsLength)
2912     {
2913         primitive->connectionInfo.assocReqInfoElements = kmalloc(primitive->connectionInfo.assocReqInfoElementsLength, GFP_KERNEL);
2914         CsrMemCpyDes(primitive->connectionInfo.assocReqInfoElements, buffer, &offset, ((u16) (primitive->connectionInfo.assocReqInfoElementsLength)));
2915     }
2916     else
2917     {
2918         primitive->connectionInfo.assocReqInfoElements = NULL;
2919     }
2920     CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspResult, buffer, &offset);
2921     CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspCapabilityInfo, buffer, &offset);
2922     CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspAssociationId, buffer, &offset);
2923     CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspInfoElementsLength, buffer, &offset);
2924     if (primitive->connectionInfo.assocRspInfoElementsLength)
2925     {
2926         primitive->connectionInfo.assocRspInfoElements = kmalloc(primitive->connectionInfo.assocRspInfoElementsLength, GFP_KERNEL);
2927         CsrMemCpyDes(primitive->connectionInfo.assocRspInfoElements, buffer, &offset, ((u16) (primitive->connectionInfo.assocRspInfoElementsLength)));
2928     }
2929     else
2930     {
2931         primitive->connectionInfo.assocRspInfoElements = NULL;
2932     }
2933
2934     return primitive;
2935 }
2936
2937
2938 void CsrWifiSmeConnectionInfoGetCfmSerFree(void *voidPrimitivePointer)
2939 {
2940     CsrWifiSmeConnectionInfoGetCfm *primitive = (CsrWifiSmeConnectionInfoGetCfm *) voidPrimitivePointer;
2941     kfree(primitive->connectionInfo.beaconFrame);
2942     kfree(primitive->connectionInfo.associationReqFrame);
2943     kfree(primitive->connectionInfo.associationRspFrame);
2944     kfree(primitive->connectionInfo.assocScanInfoElements);
2945     kfree(primitive->connectionInfo.assocReqInfoElements);
2946     kfree(primitive->connectionInfo.assocRspInfoElements);
2947     kfree(primitive);
2948 }
2949
2950
2951 size_t CsrWifiSmeConnectionQualityIndSizeof(void *msg)
2952 {
2953     size_t bufferSize = 2;
2954
2955     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 9) */
2956     bufferSize += 2; /* u16 primitive->interfaceTag */
2957     bufferSize += 2; /* s16 primitive->linkQuality.unifiRssi */
2958     bufferSize += 2; /* s16 primitive->linkQuality.unifiSnr */
2959     return bufferSize;
2960 }
2961
2962
2963 u8* CsrWifiSmeConnectionQualityIndSer(u8 *ptr, size_t *len, void *msg)
2964 {
2965     CsrWifiSmeConnectionQualityInd *primitive = (CsrWifiSmeConnectionQualityInd *)msg;
2966     *len = 0;
2967     CsrUint16Ser(ptr, len, primitive->common.type);
2968     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
2969     CsrUint16Ser(ptr, len, (u16) primitive->linkQuality.unifiRssi);
2970     CsrUint16Ser(ptr, len, (u16) primitive->linkQuality.unifiSnr);
2971     return(ptr);
2972 }
2973
2974
2975 void* CsrWifiSmeConnectionQualityIndDes(u8 *buffer, size_t length)
2976 {
2977     CsrWifiSmeConnectionQualityInd *primitive = kmalloc(sizeof(CsrWifiSmeConnectionQualityInd), GFP_KERNEL);
2978     size_t offset;
2979     offset = 0;
2980
2981     CsrUint16Des(&primitive->common.type, buffer, &offset);
2982     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
2983     CsrUint16Des((u16 *) &primitive->linkQuality.unifiRssi, buffer, &offset);
2984     CsrUint16Des((u16 *) &primitive->linkQuality.unifiSnr, buffer, &offset);
2985
2986     return primitive;
2987 }
2988
2989
2990 size_t CsrWifiSmeConnectionStatsGetCfmSizeof(void *msg)
2991 {
2992     size_t bufferSize = 2;
2993
2994     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 101) */
2995     bufferSize += 2; /* u16 primitive->interfaceTag */
2996     bufferSize += 2; /* CsrResult primitive->status */
2997     bufferSize += 1; /* u8 primitive->connectionStats.unifiTxDataRate */
2998     bufferSize += 1; /* u8 primitive->connectionStats.unifiRxDataRate */
2999     bufferSize += 4; /* u32 primitive->connectionStats.dot11RetryCount */
3000     bufferSize += 4; /* u32 primitive->connectionStats.dot11MultipleRetryCount */
3001     bufferSize += 4; /* u32 primitive->connectionStats.dot11AckFailureCount */
3002     bufferSize += 4; /* u32 primitive->connectionStats.dot11FrameDuplicateCount */
3003     bufferSize += 4; /* u32 primitive->connectionStats.dot11FcsErrorCount */
3004     bufferSize += 4; /* u32 primitive->connectionStats.dot11RtsSuccessCount */
3005     bufferSize += 4; /* u32 primitive->connectionStats.dot11RtsFailureCount */
3006     bufferSize += 4; /* u32 primitive->connectionStats.dot11FailedCount */
3007     bufferSize += 4; /* u32 primitive->connectionStats.dot11TransmittedFragmentCount */
3008     bufferSize += 4; /* u32 primitive->connectionStats.dot11TransmittedFrameCount */
3009     bufferSize += 4; /* u32 primitive->connectionStats.dot11WepExcludedCount */
3010     bufferSize += 4; /* u32 primitive->connectionStats.dot11WepIcvErrorCount */
3011     bufferSize += 4; /* u32 primitive->connectionStats.dot11WepUndecryptableCount */
3012     bufferSize += 4; /* u32 primitive->connectionStats.dot11MulticastReceivedFrameCount */
3013     bufferSize += 4; /* u32 primitive->connectionStats.dot11MulticastTransmittedFrameCount */
3014     bufferSize += 4; /* u32 primitive->connectionStats.dot11ReceivedFragmentCount */
3015     bufferSize += 4; /* u32 primitive->connectionStats.dot11Rsna4WayHandshakeFailures */
3016     bufferSize += 4; /* u32 primitive->connectionStats.dot11RsnaTkipCounterMeasuresInvoked */
3017     bufferSize += 4; /* u32 primitive->connectionStats.dot11RsnaStatsTkipLocalMicFailures */
3018     bufferSize += 4; /* u32 primitive->connectionStats.dot11RsnaStatsTkipReplays */
3019     bufferSize += 4; /* u32 primitive->connectionStats.dot11RsnaStatsTkipIcvErrors */
3020     bufferSize += 4; /* u32 primitive->connectionStats.dot11RsnaStatsCcmpReplays */
3021     bufferSize += 4; /* u32 primitive->connectionStats.dot11RsnaStatsCcmpDecryptErrors */
3022     return bufferSize;
3023 }
3024
3025
3026 u8* CsrWifiSmeConnectionStatsGetCfmSer(u8 *ptr, size_t *len, void *msg)
3027 {
3028     CsrWifiSmeConnectionStatsGetCfm *primitive = (CsrWifiSmeConnectionStatsGetCfm *)msg;
3029     *len = 0;
3030     CsrUint16Ser(ptr, len, primitive->common.type);
3031     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
3032     CsrUint16Ser(ptr, len, (u16) primitive->status);
3033     CsrUint8Ser(ptr, len, (u8) primitive->connectionStats.unifiTxDataRate);
3034     CsrUint8Ser(ptr, len, (u8) primitive->connectionStats.unifiRxDataRate);
3035     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11RetryCount);
3036     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11MultipleRetryCount);
3037     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11AckFailureCount);
3038     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11FrameDuplicateCount);
3039     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11FcsErrorCount);
3040     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11RtsSuccessCount);
3041     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11RtsFailureCount);
3042     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11FailedCount);
3043     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11TransmittedFragmentCount);
3044     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11TransmittedFrameCount);
3045     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11WepExcludedCount);
3046     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11WepIcvErrorCount);
3047     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11WepUndecryptableCount);
3048     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11MulticastReceivedFrameCount);
3049     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11MulticastTransmittedFrameCount);
3050     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11ReceivedFragmentCount);
3051     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11Rsna4WayHandshakeFailures);
3052     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11RsnaTkipCounterMeasuresInvoked);
3053     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11RsnaStatsTkipLocalMicFailures);
3054     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11RsnaStatsTkipReplays);
3055     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11RsnaStatsTkipIcvErrors);
3056     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11RsnaStatsCcmpReplays);
3057     CsrUint32Ser(ptr, len, (u32) primitive->connectionStats.dot11RsnaStatsCcmpDecryptErrors);
3058     return(ptr);
3059 }
3060
3061
3062 void* CsrWifiSmeConnectionStatsGetCfmDes(u8 *buffer, size_t length)
3063 {
3064     CsrWifiSmeConnectionStatsGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeConnectionStatsGetCfm), GFP_KERNEL);
3065     size_t offset;
3066     offset = 0;
3067
3068     CsrUint16Des(&primitive->common.type, buffer, &offset);
3069     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
3070     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
3071     CsrUint8Des((u8 *) &primitive->connectionStats.unifiTxDataRate, buffer, &offset);
3072     CsrUint8Des((u8 *) &primitive->connectionStats.unifiRxDataRate, buffer, &offset);
3073     CsrUint32Des((u32 *) &primitive->connectionStats.dot11RetryCount, buffer, &offset);
3074     CsrUint32Des((u32 *) &primitive->connectionStats.dot11MultipleRetryCount, buffer, &offset);
3075     CsrUint32Des((u32 *) &primitive->connectionStats.dot11AckFailureCount, buffer, &offset);
3076     CsrUint32Des((u32 *) &primitive->connectionStats.dot11FrameDuplicateCount, buffer, &offset);
3077     CsrUint32Des((u32 *) &primitive->connectionStats.dot11FcsErrorCount, buffer, &offset);
3078     CsrUint32Des((u32 *) &primitive->connectionStats.dot11RtsSuccessCount, buffer, &offset);
3079     CsrUint32Des((u32 *) &primitive->connectionStats.dot11RtsFailureCount, buffer, &offset);
3080     CsrUint32Des((u32 *) &primitive->connectionStats.dot11FailedCount, buffer, &offset);
3081     CsrUint32Des((u32 *) &primitive->connectionStats.dot11TransmittedFragmentCount, buffer, &offset);
3082     CsrUint32Des((u32 *) &primitive->connectionStats.dot11TransmittedFrameCount, buffer, &offset);
3083     CsrUint32Des((u32 *) &primitive->connectionStats.dot11WepExcludedCount, buffer, &offset);
3084     CsrUint32Des((u32 *) &primitive->connectionStats.dot11WepIcvErrorCount, buffer, &offset);
3085     CsrUint32Des((u32 *) &primitive->connectionStats.dot11WepUndecryptableCount, buffer, &offset);
3086     CsrUint32Des((u32 *) &primitive->connectionStats.dot11MulticastReceivedFrameCount, buffer, &offset);
3087     CsrUint32Des((u32 *) &primitive->connectionStats.dot11MulticastTransmittedFrameCount, buffer, &offset);
3088     CsrUint32Des((u32 *) &primitive->connectionStats.dot11ReceivedFragmentCount, buffer, &offset);
3089     CsrUint32Des((u32 *) &primitive->connectionStats.dot11Rsna4WayHandshakeFailures, buffer, &offset);
3090     CsrUint32Des((u32 *) &primitive->connectionStats.dot11RsnaTkipCounterMeasuresInvoked, buffer, &offset);
3091     CsrUint32Des((u32 *) &primitive->connectionStats.dot11RsnaStatsTkipLocalMicFailures, buffer, &offset);
3092     CsrUint32Des((u32 *) &primitive->connectionStats.dot11RsnaStatsTkipReplays, buffer, &offset);
3093     CsrUint32Des((u32 *) &primitive->connectionStats.dot11RsnaStatsTkipIcvErrors, buffer, &offset);
3094     CsrUint32Des((u32 *) &primitive->connectionStats.dot11RsnaStatsCcmpReplays, buffer, &offset);
3095     CsrUint32Des((u32 *) &primitive->connectionStats.dot11RsnaStatsCcmpDecryptErrors, buffer, &offset);
3096
3097     return primitive;
3098 }
3099
3100
3101 size_t CsrWifiSmeDisconnectCfmSizeof(void *msg)
3102 {
3103     size_t bufferSize = 2;
3104
3105     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 7) */
3106     bufferSize += 2; /* u16 primitive->interfaceTag */
3107     bufferSize += 2; /* CsrResult primitive->status */
3108     return bufferSize;
3109 }
3110
3111
3112 u8* CsrWifiSmeDisconnectCfmSer(u8 *ptr, size_t *len, void *msg)
3113 {
3114     CsrWifiSmeDisconnectCfm *primitive = (CsrWifiSmeDisconnectCfm *)msg;
3115     *len = 0;
3116     CsrUint16Ser(ptr, len, primitive->common.type);
3117     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
3118     CsrUint16Ser(ptr, len, (u16) primitive->status);
3119     return(ptr);
3120 }
3121
3122
3123 void* CsrWifiSmeDisconnectCfmDes(u8 *buffer, size_t length)
3124 {
3125     CsrWifiSmeDisconnectCfm *primitive = kmalloc(sizeof(CsrWifiSmeDisconnectCfm), GFP_KERNEL);
3126     size_t offset;
3127     offset = 0;
3128
3129     CsrUint16Des(&primitive->common.type, buffer, &offset);
3130     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
3131     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
3132
3133     return primitive;
3134 }
3135
3136
3137 size_t CsrWifiSmeHostConfigGetCfmSizeof(void *msg)
3138 {
3139     size_t bufferSize = 2;
3140
3141     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 10) */
3142     bufferSize += 2; /* u16 primitive->interfaceTag */
3143     bufferSize += 2; /* CsrResult primitive->status */
3144     bufferSize += 1; /* CsrWifiSmeHostPowerMode primitive->hostConfig.powerMode */
3145     bufferSize += 2; /* u16 primitive->hostConfig.applicationDataPeriodMs */
3146     return bufferSize;
3147 }
3148
3149
3150 u8* CsrWifiSmeHostConfigGetCfmSer(u8 *ptr, size_t *len, void *msg)
3151 {
3152     CsrWifiSmeHostConfigGetCfm *primitive = (CsrWifiSmeHostConfigGetCfm *)msg;
3153     *len = 0;
3154     CsrUint16Ser(ptr, len, primitive->common.type);
3155     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
3156     CsrUint16Ser(ptr, len, (u16) primitive->status);
3157     CsrUint8Ser(ptr, len, (u8) primitive->hostConfig.powerMode);
3158     CsrUint16Ser(ptr, len, (u16) primitive->hostConfig.applicationDataPeriodMs);
3159     return(ptr);
3160 }
3161
3162
3163 void* CsrWifiSmeHostConfigGetCfmDes(u8 *buffer, size_t length)
3164 {
3165     CsrWifiSmeHostConfigGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeHostConfigGetCfm), GFP_KERNEL);
3166     size_t offset;
3167     offset = 0;
3168
3169     CsrUint16Des(&primitive->common.type, buffer, &offset);
3170     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
3171     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
3172     CsrUint8Des((u8 *) &primitive->hostConfig.powerMode, buffer, &offset);
3173     CsrUint16Des((u16 *) &primitive->hostConfig.applicationDataPeriodMs, buffer, &offset);
3174
3175     return primitive;
3176 }
3177
3178
3179 size_t CsrWifiSmeHostConfigSetCfmSizeof(void *msg)
3180 {
3181     size_t bufferSize = 2;
3182
3183     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 7) */
3184     bufferSize += 2; /* u16 primitive->interfaceTag */
3185     bufferSize += 2; /* CsrResult primitive->status */
3186     return bufferSize;
3187 }
3188
3189
3190 u8* CsrWifiSmeHostConfigSetCfmSer(u8 *ptr, size_t *len, void *msg)
3191 {
3192     CsrWifiSmeHostConfigSetCfm *primitive = (CsrWifiSmeHostConfigSetCfm *)msg;
3193     *len = 0;
3194     CsrUint16Ser(ptr, len, primitive->common.type);
3195     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
3196     CsrUint16Ser(ptr, len, (u16) primitive->status);
3197     return(ptr);
3198 }
3199
3200
3201 void* CsrWifiSmeHostConfigSetCfmDes(u8 *buffer, size_t length)
3202 {
3203     CsrWifiSmeHostConfigSetCfm *primitive = kmalloc(sizeof(CsrWifiSmeHostConfigSetCfm), GFP_KERNEL);
3204     size_t offset;
3205     offset = 0;
3206
3207     CsrUint16Des(&primitive->common.type, buffer, &offset);
3208     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
3209     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
3210
3211     return primitive;
3212 }
3213
3214
3215 size_t CsrWifiSmeIbssStationIndSizeof(void *msg)
3216 {
3217     size_t bufferSize = 2;
3218
3219     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 10) */
3220     bufferSize += 6; /* u8 primitive->address.a[6] */
3221     bufferSize += 1; /* u8 primitive->isconnected */
3222     return bufferSize;
3223 }
3224
3225
3226 u8* CsrWifiSmeIbssStationIndSer(u8 *ptr, size_t *len, void *msg)
3227 {
3228     CsrWifiSmeIbssStationInd *primitive = (CsrWifiSmeIbssStationInd *)msg;
3229     *len = 0;
3230     CsrUint16Ser(ptr, len, primitive->common.type);
3231     CsrMemCpySer(ptr, len, (const void *) primitive->address.a, ((u16) (6)));
3232     CsrUint8Ser(ptr, len, (u8) primitive->isconnected);
3233     return(ptr);
3234 }
3235
3236
3237 void* CsrWifiSmeIbssStationIndDes(u8 *buffer, size_t length)
3238 {
3239     CsrWifiSmeIbssStationInd *primitive = kmalloc(sizeof(CsrWifiSmeIbssStationInd), GFP_KERNEL);
3240     size_t offset;
3241     offset = 0;
3242
3243     CsrUint16Des(&primitive->common.type, buffer, &offset);
3244     CsrMemCpyDes(primitive->address.a, buffer, &offset, ((u16) (6)));
3245     CsrUint8Des((u8 *) &primitive->isconnected, buffer, &offset);
3246
3247     return primitive;
3248 }
3249
3250
3251 size_t CsrWifiSmeKeyCfmSizeof(void *msg)
3252 {
3253     size_t bufferSize = 2;
3254
3255     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 15) */
3256     bufferSize += 2; /* u16 primitive->interfaceTag */
3257     bufferSize += 2; /* CsrResult primitive->status */
3258     bufferSize += 1; /* CsrWifiSmeListAction primitive->action */
3259     bufferSize += 1; /* CsrWifiSmeKeyType primitive->keyType */
3260     bufferSize += 6; /* u8 primitive->peerMacAddress.a[6] */
3261     return bufferSize;
3262 }
3263
3264
3265 u8* CsrWifiSmeKeyCfmSer(u8 *ptr, size_t *len, void *msg)
3266 {
3267     CsrWifiSmeKeyCfm *primitive = (CsrWifiSmeKeyCfm *)msg;
3268     *len = 0;
3269     CsrUint16Ser(ptr, len, primitive->common.type);
3270     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
3271     CsrUint16Ser(ptr, len, (u16) primitive->status);
3272     CsrUint8Ser(ptr, len, (u8) primitive->action);
3273     CsrUint8Ser(ptr, len, (u8) primitive->keyType);
3274     CsrMemCpySer(ptr, len, (const void *) primitive->peerMacAddress.a, ((u16) (6)));
3275     return(ptr);
3276 }
3277
3278
3279 void* CsrWifiSmeKeyCfmDes(u8 *buffer, size_t length)
3280 {
3281     CsrWifiSmeKeyCfm *primitive = kmalloc(sizeof(CsrWifiSmeKeyCfm), GFP_KERNEL);
3282     size_t offset;
3283     offset = 0;
3284
3285     CsrUint16Des(&primitive->common.type, buffer, &offset);
3286     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
3287     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
3288     CsrUint8Des((u8 *) &primitive->action, buffer, &offset);
3289     CsrUint8Des((u8 *) &primitive->keyType, buffer, &offset);
3290     CsrMemCpyDes(primitive->peerMacAddress.a, buffer, &offset, ((u16) (6)));
3291
3292     return primitive;
3293 }
3294
3295
3296 size_t CsrWifiSmeLinkQualityGetCfmSizeof(void *msg)
3297 {
3298     size_t bufferSize = 2;
3299
3300     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 11) */
3301     bufferSize += 2; /* u16 primitive->interfaceTag */
3302     bufferSize += 2; /* CsrResult primitive->status */
3303     bufferSize += 2; /* s16 primitive->linkQuality.unifiRssi */
3304     bufferSize += 2; /* s16 primitive->linkQuality.unifiSnr */
3305     return bufferSize;
3306 }
3307
3308
3309 u8* CsrWifiSmeLinkQualityGetCfmSer(u8 *ptr, size_t *len, void *msg)
3310 {
3311     CsrWifiSmeLinkQualityGetCfm *primitive = (CsrWifiSmeLinkQualityGetCfm *)msg;
3312     *len = 0;
3313     CsrUint16Ser(ptr, len, primitive->common.type);
3314     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
3315     CsrUint16Ser(ptr, len, (u16) primitive->status);
3316     CsrUint16Ser(ptr, len, (u16) primitive->linkQuality.unifiRssi);
3317     CsrUint16Ser(ptr, len, (u16) primitive->linkQuality.unifiSnr);
3318     return(ptr);
3319 }
3320
3321
3322 void* CsrWifiSmeLinkQualityGetCfmDes(u8 *buffer, size_t length)
3323 {
3324     CsrWifiSmeLinkQualityGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeLinkQualityGetCfm), GFP_KERNEL);
3325     size_t offset;
3326     offset = 0;
3327
3328     CsrUint16Des(&primitive->common.type, buffer, &offset);
3329     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
3330     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
3331     CsrUint16Des((u16 *) &primitive->linkQuality.unifiRssi, buffer, &offset);
3332     CsrUint16Des((u16 *) &primitive->linkQuality.unifiSnr, buffer, &offset);
3333
3334     return primitive;
3335 }
3336
3337
3338 size_t CsrWifiSmeMediaStatusIndSizeof(void *msg)
3339 {
3340     CsrWifiSmeMediaStatusInd *primitive = (CsrWifiSmeMediaStatusInd *) msg;
3341     size_t bufferSize = 2;
3342
3343     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 99) */
3344     bufferSize += 2;                                                     /* u16 primitive->interfaceTag */
3345     bufferSize += 1;                                                     /* CsrWifiSmeMediaStatus primitive->mediaStatus */
3346     bufferSize += 32;                                                    /* u8 primitive->connectionInfo.ssid.ssid[32] */
3347     bufferSize += 1;                                                     /* u8 primitive->connectionInfo.ssid.length */
3348     bufferSize += 6;                                                     /* u8 primitive->connectionInfo.bssid.a[6] */
3349     bufferSize += 1;                                                     /* CsrWifiSme80211NetworkType primitive->connectionInfo.networkType80211 */
3350     bufferSize += 1;                                                     /* u8 primitive->connectionInfo.channelNumber */
3351     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.channelFrequency */
3352     bufferSize += 2;                                                     /* CsrWifiSmeAuthMode primitive->connectionInfo.authMode */
3353     bufferSize += 2;                                                     /* CsrWifiSmeEncryption primitive->connectionInfo.pairwiseCipher */
3354     bufferSize += 2;                                                     /* CsrWifiSmeEncryption primitive->connectionInfo.groupCipher */
3355     bufferSize += 1;                                                     /* CsrWifiSmeRadioIF primitive->connectionInfo.ifIndex */
3356     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.atimWindowTu */
3357     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.beaconPeriodTu */
3358     bufferSize += 1;                                                     /* u8 primitive->connectionInfo.reassociation */
3359     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.beaconFrameLength */
3360     bufferSize += primitive->connectionInfo.beaconFrameLength;           /* u8 primitive->connectionInfo.beaconFrame */
3361     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.associationReqFrameLength */
3362     bufferSize += primitive->connectionInfo.associationReqFrameLength;   /* u8 primitive->connectionInfo.associationReqFrame */
3363     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.associationRspFrameLength */
3364     bufferSize += primitive->connectionInfo.associationRspFrameLength;   /* u8 primitive->connectionInfo.associationRspFrame */
3365     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.assocScanInfoElementsLength */
3366     bufferSize += primitive->connectionInfo.assocScanInfoElementsLength; /* u8 primitive->connectionInfo.assocScanInfoElements */
3367     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.assocReqCapabilities */
3368     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.assocReqListenIntervalTu */
3369     bufferSize += 6;                                                     /* u8 primitive->connectionInfo.assocReqApAddress.a[6] */
3370     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.assocReqInfoElementsLength */
3371     bufferSize += primitive->connectionInfo.assocReqInfoElementsLength;  /* u8 primitive->connectionInfo.assocReqInfoElements */
3372     bufferSize += 2;                                                     /* CsrWifiSmeIEEE80211Result primitive->connectionInfo.assocRspResult */
3373     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.assocRspCapabilityInfo */
3374     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.assocRspAssociationId */
3375     bufferSize += 2;                                                     /* u16 primitive->connectionInfo.assocRspInfoElementsLength */
3376     bufferSize += primitive->connectionInfo.assocRspInfoElementsLength;  /* u8 primitive->connectionInfo.assocRspInfoElements */
3377     bufferSize += 2;                                                     /* CsrWifiSmeIEEE80211Reason primitive->disassocReason */
3378     bufferSize += 2;                                                     /* CsrWifiSmeIEEE80211Reason primitive->deauthReason */
3379     return bufferSize;
3380 }
3381
3382
3383 u8* CsrWifiSmeMediaStatusIndSer(u8 *ptr, size_t *len, void *msg)
3384 {
3385     CsrWifiSmeMediaStatusInd *primitive = (CsrWifiSmeMediaStatusInd *)msg;
3386     *len = 0;
3387     CsrUint16Ser(ptr, len, primitive->common.type);
3388     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
3389     CsrUint8Ser(ptr, len, (u8) primitive->mediaStatus);
3390     CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.ssid.ssid, ((u16) (32)));
3391     CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.ssid.length);
3392     CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.bssid.a, ((u16) (6)));
3393     CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.networkType80211);
3394     CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.channelNumber);
3395     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.channelFrequency);
3396     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.authMode);
3397     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.pairwiseCipher);
3398     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.groupCipher);
3399     CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.ifIndex);
3400     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.atimWindowTu);
3401     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.beaconPeriodTu);
3402     CsrUint8Ser(ptr, len, (u8) primitive->connectionInfo.reassociation);
3403     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.beaconFrameLength);
3404     if (primitive->connectionInfo.beaconFrameLength)
3405     {
3406         CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.beaconFrame, ((u16) (primitive->connectionInfo.beaconFrameLength)));
3407     }
3408     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.associationReqFrameLength);
3409     if (primitive->connectionInfo.associationReqFrameLength)
3410     {
3411         CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.associationReqFrame, ((u16) (primitive->connectionInfo.associationReqFrameLength)));
3412     }
3413     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.associationRspFrameLength);
3414     if (primitive->connectionInfo.associationRspFrameLength)
3415     {
3416         CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.associationRspFrame, ((u16) (primitive->connectionInfo.associationRspFrameLength)));
3417     }
3418     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocScanInfoElementsLength);
3419     if (primitive->connectionInfo.assocScanInfoElementsLength)
3420     {
3421         CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocScanInfoElements, ((u16) (primitive->connectionInfo.assocScanInfoElementsLength)));
3422     }
3423     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocReqCapabilities);
3424     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocReqListenIntervalTu);
3425     CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocReqApAddress.a, ((u16) (6)));
3426     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocReqInfoElementsLength);
3427     if (primitive->connectionInfo.assocReqInfoElementsLength)
3428     {
3429         CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocReqInfoElements, ((u16) (primitive->connectionInfo.assocReqInfoElementsLength)));
3430     }
3431     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspResult);
3432     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspCapabilityInfo);
3433     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspAssociationId);
3434     CsrUint16Ser(ptr, len, (u16) primitive->connectionInfo.assocRspInfoElementsLength);
3435     if (primitive->connectionInfo.assocRspInfoElementsLength)
3436     {
3437         CsrMemCpySer(ptr, len, (const void *) primitive->connectionInfo.assocRspInfoElements, ((u16) (primitive->connectionInfo.assocRspInfoElementsLength)));
3438     }
3439     CsrUint16Ser(ptr, len, (u16) primitive->disassocReason);
3440     CsrUint16Ser(ptr, len, (u16) primitive->deauthReason);
3441     return(ptr);
3442 }
3443
3444
3445 void* CsrWifiSmeMediaStatusIndDes(u8 *buffer, size_t length)
3446 {
3447     CsrWifiSmeMediaStatusInd *primitive = kmalloc(sizeof(CsrWifiSmeMediaStatusInd), GFP_KERNEL);
3448     size_t offset;
3449     offset = 0;
3450
3451     CsrUint16Des(&primitive->common.type, buffer, &offset);
3452     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
3453     CsrUint8Des((u8 *) &primitive->mediaStatus, buffer, &offset);
3454     CsrMemCpyDes(primitive->connectionInfo.ssid.ssid, buffer, &offset, ((u16) (32)));
3455     CsrUint8Des((u8 *) &primitive->connectionInfo.ssid.length, buffer, &offset);
3456     CsrMemCpyDes(primitive->connectionInfo.bssid.a, buffer, &offset, ((u16) (6)));
3457     CsrUint8Des((u8 *) &primitive->connectionInfo.networkType80211, buffer, &offset);
3458     CsrUint8Des((u8 *) &primitive->connectionInfo.channelNumber, buffer, &offset);
3459     CsrUint16Des((u16 *) &primitive->connectionInfo.channelFrequency, buffer, &offset);
3460     CsrUint16Des((u16 *) &primitive->connectionInfo.authMode, buffer, &offset);
3461     CsrUint16Des((u16 *) &primitive->connectionInfo.pairwiseCipher, buffer, &offset);
3462     CsrUint16Des((u16 *) &primitive->connectionInfo.groupCipher, buffer, &offset);
3463     CsrUint8Des((u8 *) &primitive->connectionInfo.ifIndex, buffer, &offset);
3464     CsrUint16Des((u16 *) &primitive->connectionInfo.atimWindowTu, buffer, &offset);
3465     CsrUint16Des((u16 *) &primitive->connectionInfo.beaconPeriodTu, buffer, &offset);
3466     CsrUint8Des((u8 *) &primitive->connectionInfo.reassociation, buffer, &offset);
3467     CsrUint16Des((u16 *) &primitive->connectionInfo.beaconFrameLength, buffer, &offset);
3468     if (primitive->connectionInfo.beaconFrameLength)
3469     {
3470         primitive->connectionInfo.beaconFrame = kmalloc(primitive->connectionInfo.beaconFrameLength, GFP_KERNEL);
3471         CsrMemCpyDes(primitive->connectionInfo.beaconFrame, buffer, &offset, ((u16) (primitive->connectionInfo.beaconFrameLength)));
3472     }
3473     else
3474     {
3475         primitive->connectionInfo.beaconFrame = NULL;
3476     }
3477     CsrUint16Des((u16 *) &primitive->connectionInfo.associationReqFrameLength, buffer, &offset);
3478     if (primitive->connectionInfo.associationReqFrameLength)
3479     {
3480         primitive->connectionInfo.associationReqFrame = kmalloc(primitive->connectionInfo.associationReqFrameLength, GFP_KERNEL);
3481         CsrMemCpyDes(primitive->connectionInfo.associationReqFrame, buffer, &offset, ((u16) (primitive->connectionInfo.associationReqFrameLength)));
3482     }
3483     else
3484     {
3485         primitive->connectionInfo.associationReqFrame = NULL;
3486     }
3487     CsrUint16Des((u16 *) &primitive->connectionInfo.associationRspFrameLength, buffer, &offset);
3488     if (primitive->connectionInfo.associationRspFrameLength)
3489     {
3490         primitive->connectionInfo.associationRspFrame = kmalloc(primitive->connectionInfo.associationRspFrameLength, GFP_KERNEL);
3491         CsrMemCpyDes(primitive->connectionInfo.associationRspFrame, buffer, &offset, ((u16) (primitive->connectionInfo.associationRspFrameLength)));
3492     }
3493     else
3494     {
3495         primitive->connectionInfo.associationRspFrame = NULL;
3496     }
3497     CsrUint16Des((u16 *) &primitive->connectionInfo.assocScanInfoElementsLength, buffer, &offset);
3498     if (primitive->connectionInfo.assocScanInfoElementsLength)
3499     {
3500         primitive->connectionInfo.assocScanInfoElements = kmalloc(primitive->connectionInfo.assocScanInfoElementsLength, GFP_KERNEL);
3501         CsrMemCpyDes(primitive->connectionInfo.assocScanInfoElements, buffer, &offset, ((u16) (primitive->connectionInfo.assocScanInfoElementsLength)));
3502     }
3503     else
3504     {
3505         primitive->connectionInfo.assocScanInfoElements = NULL;
3506     }
3507     CsrUint16Des((u16 *) &primitive->connectionInfo.assocReqCapabilities, buffer, &offset);
3508     CsrUint16Des((u16 *) &primitive->connectionInfo.assocReqListenIntervalTu, buffer, &offset);
3509     CsrMemCpyDes(primitive->connectionInfo.assocReqApAddress.a, buffer, &offset, ((u16) (6)));
3510     CsrUint16Des((u16 *) &primitive->connectionInfo.assocReqInfoElementsLength, buffer, &offset);
3511     if (primitive->connectionInfo.assocReqInfoElementsLength)
3512     {
3513         primitive->connectionInfo.assocReqInfoElements = kmalloc(primitive->connectionInfo.assocReqInfoElementsLength, GFP_KERNEL);
3514         CsrMemCpyDes(primitive->connectionInfo.assocReqInfoElements, buffer, &offset, ((u16) (primitive->connectionInfo.assocReqInfoElementsLength)));
3515     }
3516     else
3517     {
3518         primitive->connectionInfo.assocReqInfoElements = NULL;
3519     }
3520     CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspResult, buffer, &offset);
3521     CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspCapabilityInfo, buffer, &offset);
3522     CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspAssociationId, buffer, &offset);
3523     CsrUint16Des((u16 *) &primitive->connectionInfo.assocRspInfoElementsLength, buffer, &offset);
3524     if (primitive->connectionInfo.assocRspInfoElementsLength)
3525     {
3526         primitive->connectionInfo.assocRspInfoElements = kmalloc(primitive->connectionInfo.assocRspInfoElementsLength, GFP_KERNEL);
3527         CsrMemCpyDes(primitive->connectionInfo.assocRspInfoElements, buffer, &offset, ((u16) (primitive->connectionInfo.assocRspInfoElementsLength)));
3528     }
3529     else
3530     {
3531         primitive->connectionInfo.assocRspInfoElements = NULL;
3532     }
3533     CsrUint16Des((u16 *) &primitive->disassocReason, buffer, &offset);
3534     CsrUint16Des((u16 *) &primitive->deauthReason, buffer, &offset);
3535
3536     return primitive;
3537 }
3538
3539
3540 void CsrWifiSmeMediaStatusIndSerFree(void *voidPrimitivePointer)
3541 {
3542     CsrWifiSmeMediaStatusInd *primitive = (CsrWifiSmeMediaStatusInd *) voidPrimitivePointer;
3543     kfree(primitive->connectionInfo.beaconFrame);
3544     kfree(primitive->connectionInfo.associationReqFrame);
3545     kfree(primitive->connectionInfo.associationRspFrame);
3546     kfree(primitive->connectionInfo.assocScanInfoElements);
3547     kfree(primitive->connectionInfo.assocReqInfoElements);
3548     kfree(primitive->connectionInfo.assocRspInfoElements);
3549     kfree(primitive);
3550 }
3551
3552
3553 size_t CsrWifiSmeMibConfigGetCfmSizeof(void *msg)
3554 {
3555     size_t bufferSize = 2;
3556
3557     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 13) */
3558     bufferSize += 2; /* CsrResult primitive->status */
3559     bufferSize += 1; /* u8 primitive->mibConfig.unifiFixMaxTxDataRate */
3560     bufferSize += 1; /* u8 primitive->mibConfig.unifiFixTxDataRate */
3561     bufferSize += 2; /* u16 primitive->mibConfig.dot11RtsThreshold */
3562     bufferSize += 2; /* u16 primitive->mibConfig.dot11FragmentationThreshold */
3563     bufferSize += 2; /* u16 primitive->mibConfig.dot11CurrentTxPowerLevel */
3564     return bufferSize;
3565 }
3566
3567
3568 u8* CsrWifiSmeMibConfigGetCfmSer(u8 *ptr, size_t *len, void *msg)
3569 {
3570     CsrWifiSmeMibConfigGetCfm *primitive = (CsrWifiSmeMibConfigGetCfm *)msg;
3571     *len = 0;
3572     CsrUint16Ser(ptr, len, primitive->common.type);
3573     CsrUint16Ser(ptr, len, (u16) primitive->status);
3574     CsrUint8Ser(ptr, len, (u8) primitive->mibConfig.unifiFixMaxTxDataRate);
3575     CsrUint8Ser(ptr, len, (u8) primitive->mibConfig.unifiFixTxDataRate);
3576     CsrUint16Ser(ptr, len, (u16) primitive->mibConfig.dot11RtsThreshold);
3577     CsrUint16Ser(ptr, len, (u16) primitive->mibConfig.dot11FragmentationThreshold);
3578     CsrUint16Ser(ptr, len, (u16) primitive->mibConfig.dot11CurrentTxPowerLevel);
3579     return(ptr);
3580 }
3581
3582
3583 void* CsrWifiSmeMibConfigGetCfmDes(u8 *buffer, size_t length)
3584 {
3585     CsrWifiSmeMibConfigGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeMibConfigGetCfm), GFP_KERNEL);
3586     size_t offset;
3587     offset = 0;
3588
3589     CsrUint16Des(&primitive->common.type, buffer, &offset);
3590     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
3591     CsrUint8Des((u8 *) &primitive->mibConfig.unifiFixMaxTxDataRate, buffer, &offset);
3592     CsrUint8Des((u8 *) &primitive->mibConfig.unifiFixTxDataRate, buffer, &offset);
3593     CsrUint16Des((u16 *) &primitive->mibConfig.dot11RtsThreshold, buffer, &offset);
3594     CsrUint16Des((u16 *) &primitive->mibConfig.dot11FragmentationThreshold, buffer, &offset);
3595     CsrUint16Des((u16 *) &primitive->mibConfig.dot11CurrentTxPowerLevel, buffer, &offset);
3596
3597     return primitive;
3598 }
3599
3600
3601 size_t CsrWifiSmeMibGetCfmSizeof(void *msg)
3602 {
3603     CsrWifiSmeMibGetCfm *primitive = (CsrWifiSmeMibGetCfm *) msg;
3604     size_t bufferSize = 2;
3605
3606     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 8) */
3607     bufferSize += 2;                             /* CsrResult primitive->status */
3608     bufferSize += 2;                             /* u16 primitive->mibAttributeLength */
3609     bufferSize += primitive->mibAttributeLength; /* u8 primitive->mibAttribute */
3610     return bufferSize;
3611 }
3612
3613
3614 u8* CsrWifiSmeMibGetCfmSer(u8 *ptr, size_t *len, void *msg)
3615 {
3616     CsrWifiSmeMibGetCfm *primitive = (CsrWifiSmeMibGetCfm *)msg;
3617     *len = 0;
3618     CsrUint16Ser(ptr, len, primitive->common.type);
3619     CsrUint16Ser(ptr, len, (u16) primitive->status);
3620     CsrUint16Ser(ptr, len, (u16) primitive->mibAttributeLength);
3621     if (primitive->mibAttributeLength)
3622     {
3623         CsrMemCpySer(ptr, len, (const void *) primitive->mibAttribute, ((u16) (primitive->mibAttributeLength)));
3624     }
3625     return(ptr);
3626 }
3627
3628
3629 void* CsrWifiSmeMibGetCfmDes(u8 *buffer, size_t length)
3630 {
3631     CsrWifiSmeMibGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeMibGetCfm), GFP_KERNEL);
3632     size_t offset;
3633     offset = 0;
3634
3635     CsrUint16Des(&primitive->common.type, buffer, &offset);
3636     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
3637     CsrUint16Des((u16 *) &primitive->mibAttributeLength, buffer, &offset);
3638     if (primitive->mibAttributeLength)
3639     {
3640         primitive->mibAttribute = kmalloc(primitive->mibAttributeLength, GFP_KERNEL);
3641         CsrMemCpyDes(primitive->mibAttribute, buffer, &offset, ((u16) (primitive->mibAttributeLength)));
3642     }
3643     else
3644     {
3645         primitive->mibAttribute = NULL;
3646     }
3647
3648     return primitive;
3649 }
3650
3651
3652 void CsrWifiSmeMibGetCfmSerFree(void *voidPrimitivePointer)
3653 {
3654     CsrWifiSmeMibGetCfm *primitive = (CsrWifiSmeMibGetCfm *) voidPrimitivePointer;
3655     kfree(primitive->mibAttribute);
3656     kfree(primitive);
3657 }
3658
3659
3660 size_t CsrWifiSmeMibGetNextCfmSizeof(void *msg)
3661 {
3662     CsrWifiSmeMibGetNextCfm *primitive = (CsrWifiSmeMibGetNextCfm *) msg;
3663     size_t bufferSize = 2;
3664
3665     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 8) */
3666     bufferSize += 2;                             /* CsrResult primitive->status */
3667     bufferSize += 2;                             /* u16 primitive->mibAttributeLength */
3668     bufferSize += primitive->mibAttributeLength; /* u8 primitive->mibAttribute */
3669     return bufferSize;
3670 }
3671
3672
3673 u8* CsrWifiSmeMibGetNextCfmSer(u8 *ptr, size_t *len, void *msg)
3674 {
3675     CsrWifiSmeMibGetNextCfm *primitive = (CsrWifiSmeMibGetNextCfm *)msg;
3676     *len = 0;
3677     CsrUint16Ser(ptr, len, primitive->common.type);
3678     CsrUint16Ser(ptr, len, (u16) primitive->status);
3679     CsrUint16Ser(ptr, len, (u16) primitive->mibAttributeLength);
3680     if (primitive->mibAttributeLength)
3681     {
3682         CsrMemCpySer(ptr, len, (const void *) primitive->mibAttribute, ((u16) (primitive->mibAttributeLength)));
3683     }
3684     return(ptr);
3685 }
3686
3687
3688 void* CsrWifiSmeMibGetNextCfmDes(u8 *buffer, size_t length)
3689 {
3690     CsrWifiSmeMibGetNextCfm *primitive = kmalloc(sizeof(CsrWifiSmeMibGetNextCfm), GFP_KERNEL);
3691     size_t offset;
3692     offset = 0;
3693
3694     CsrUint16Des(&primitive->common.type, buffer, &offset);
3695     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
3696     CsrUint16Des((u16 *) &primitive->mibAttributeLength, buffer, &offset);
3697     if (primitive->mibAttributeLength)
3698     {
3699         primitive->mibAttribute = kmalloc(primitive->mibAttributeLength, GFP_KERNEL);
3700         CsrMemCpyDes(primitive->mibAttribute, buffer, &offset, ((u16) (primitive->mibAttributeLength)));
3701     }
3702     else
3703     {
3704         primitive->mibAttribute = NULL;
3705     }
3706
3707     return primitive;
3708 }
3709
3710
3711 void CsrWifiSmeMibGetNextCfmSerFree(void *voidPrimitivePointer)
3712 {
3713     CsrWifiSmeMibGetNextCfm *primitive = (CsrWifiSmeMibGetNextCfm *) voidPrimitivePointer;
3714     kfree(primitive->mibAttribute);
3715     kfree(primitive);
3716 }
3717
3718
3719 size_t CsrWifiSmeMicFailureIndSizeof(void *msg)
3720 {
3721     size_t bufferSize = 2;
3722
3723     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 15) */
3724     bufferSize += 2; /* u16 primitive->interfaceTag */
3725     bufferSize += 1; /* u8 primitive->secondFailure */
3726     bufferSize += 2; /* u16 primitive->count */
3727     bufferSize += 6; /* u8 primitive->address.a[6] */
3728     bufferSize += 1; /* CsrWifiSmeKeyType primitive->keyType */
3729     return bufferSize;
3730 }
3731
3732
3733 u8* CsrWifiSmeMicFailureIndSer(u8 *ptr, size_t *len, void *msg)
3734 {
3735     CsrWifiSmeMicFailureInd *primitive = (CsrWifiSmeMicFailureInd *)msg;
3736     *len = 0;
3737     CsrUint16Ser(ptr, len, primitive->common.type);
3738     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
3739     CsrUint8Ser(ptr, len, (u8) primitive->secondFailure);
3740     CsrUint16Ser(ptr, len, (u16) primitive->count);
3741     CsrMemCpySer(ptr, len, (const void *) primitive->address.a, ((u16) (6)));
3742     CsrUint8Ser(ptr, len, (u8) primitive->keyType);
3743     return(ptr);
3744 }
3745
3746
3747 void* CsrWifiSmeMicFailureIndDes(u8 *buffer, size_t length)
3748 {
3749     CsrWifiSmeMicFailureInd *primitive = kmalloc(sizeof(CsrWifiSmeMicFailureInd), GFP_KERNEL);
3750     size_t offset;
3751     offset = 0;
3752
3753     CsrUint16Des(&primitive->common.type, buffer, &offset);
3754     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
3755     CsrUint8Des((u8 *) &primitive->secondFailure, buffer, &offset);
3756     CsrUint16Des((u16 *) &primitive->count, buffer, &offset);
3757     CsrMemCpyDes(primitive->address.a, buffer, &offset, ((u16) (6)));
3758     CsrUint8Des((u8 *) &primitive->keyType, buffer, &offset);
3759
3760     return primitive;
3761 }
3762
3763
3764 size_t CsrWifiSmeMulticastAddressCfmSizeof(void *msg)
3765 {
3766     CsrWifiSmeMulticastAddressCfm *primitive = (CsrWifiSmeMulticastAddressCfm *) msg;
3767     size_t bufferSize = 2;
3768
3769     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 15) */
3770     bufferSize += 2; /* u16 primitive->interfaceTag */
3771     bufferSize += 2; /* CsrResult primitive->status */
3772     bufferSize += 1; /* CsrWifiSmeListAction primitive->action */
3773     bufferSize += 1; /* u8 primitive->getAddressesCount */
3774     {
3775         u16 i1;
3776         for (i1 = 0; i1 < primitive->getAddressesCount; i1++)
3777         {
3778             bufferSize += 6; /* u8 primitive->getAddresses[i1].a[6] */
3779         }
3780     }
3781     return bufferSize;
3782 }
3783
3784
3785 u8* CsrWifiSmeMulticastAddressCfmSer(u8 *ptr, size_t *len, void *msg)
3786 {
3787     CsrWifiSmeMulticastAddressCfm *primitive = (CsrWifiSmeMulticastAddressCfm *)msg;
3788     *len = 0;
3789     CsrUint16Ser(ptr, len, primitive->common.type);
3790     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
3791     CsrUint16Ser(ptr, len, (u16) primitive->status);
3792     CsrUint8Ser(ptr, len, (u8) primitive->action);
3793     CsrUint8Ser(ptr, len, (u8) primitive->getAddressesCount);
3794     {
3795         u16 i1;
3796         for (i1 = 0; i1 < primitive->getAddressesCount; i1++)
3797         {
3798             CsrMemCpySer(ptr, len, (const void *) primitive->getAddresses[i1].a, ((u16) (6)));
3799         }
3800     }
3801     return(ptr);
3802 }
3803
3804
3805 void* CsrWifiSmeMulticastAddressCfmDes(u8 *buffer, size_t length)
3806 {
3807     CsrWifiSmeMulticastAddressCfm *primitive = kmalloc(sizeof(CsrWifiSmeMulticastAddressCfm), GFP_KERNEL);
3808     size_t offset;
3809     offset = 0;
3810
3811     CsrUint16Des(&primitive->common.type, buffer, &offset);
3812     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
3813     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
3814     CsrUint8Des((u8 *) &primitive->action, buffer, &offset);
3815     CsrUint8Des((u8 *) &primitive->getAddressesCount, buffer, &offset);
3816     primitive->getAddresses = NULL;
3817     if (primitive->getAddressesCount)
3818     {
3819         primitive->getAddresses = kmalloc(sizeof(CsrWifiMacAddress) * primitive->getAddressesCount, GFP_KERNEL);
3820     }
3821     {
3822         u16 i1;
3823         for (i1 = 0; i1 < primitive->getAddressesCount; i1++)
3824         {
3825             CsrMemCpyDes(primitive->getAddresses[i1].a, buffer, &offset, ((u16) (6)));
3826         }
3827     }
3828
3829     return primitive;
3830 }
3831
3832
3833 void CsrWifiSmeMulticastAddressCfmSerFree(void *voidPrimitivePointer)
3834 {
3835     CsrWifiSmeMulticastAddressCfm *primitive = (CsrWifiSmeMulticastAddressCfm *) voidPrimitivePointer;
3836     kfree(primitive->getAddresses);
3837     kfree(primitive);
3838 }
3839
3840
3841 size_t CsrWifiSmePacketFilterSetCfmSizeof(void *msg)
3842 {
3843     size_t bufferSize = 2;
3844
3845     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 7) */
3846     bufferSize += 2; /* u16 primitive->interfaceTag */
3847     bufferSize += 2; /* CsrResult primitive->status */
3848     return bufferSize;
3849 }
3850
3851
3852 u8* CsrWifiSmePacketFilterSetCfmSer(u8 *ptr, size_t *len, void *msg)
3853 {
3854     CsrWifiSmePacketFilterSetCfm *primitive = (CsrWifiSmePacketFilterSetCfm *)msg;
3855     *len = 0;
3856     CsrUint16Ser(ptr, len, primitive->common.type);
3857     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
3858     CsrUint16Ser(ptr, len, (u16) primitive->status);
3859     return(ptr);
3860 }
3861
3862
3863 void* CsrWifiSmePacketFilterSetCfmDes(u8 *buffer, size_t length)
3864 {
3865     CsrWifiSmePacketFilterSetCfm *primitive = kmalloc(sizeof(CsrWifiSmePacketFilterSetCfm), GFP_KERNEL);
3866     size_t offset;
3867     offset = 0;
3868
3869     CsrUint16Des(&primitive->common.type, buffer, &offset);
3870     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
3871     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
3872
3873     return primitive;
3874 }
3875
3876
3877 size_t CsrWifiSmePermanentMacAddressGetCfmSizeof(void *msg)
3878 {
3879     size_t bufferSize = 2;
3880
3881     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 11) */
3882     bufferSize += 2; /* CsrResult primitive->status */
3883     bufferSize += 6; /* u8 primitive->permanentMacAddress.a[6] */
3884     return bufferSize;
3885 }
3886
3887
3888 u8* CsrWifiSmePermanentMacAddressGetCfmSer(u8 *ptr, size_t *len, void *msg)
3889 {
3890     CsrWifiSmePermanentMacAddressGetCfm *primitive = (CsrWifiSmePermanentMacAddressGetCfm *)msg;
3891     *len = 0;
3892     CsrUint16Ser(ptr, len, primitive->common.type);
3893     CsrUint16Ser(ptr, len, (u16) primitive->status);
3894     CsrMemCpySer(ptr, len, (const void *) primitive->permanentMacAddress.a, ((u16) (6)));
3895     return(ptr);
3896 }
3897
3898
3899 void* CsrWifiSmePermanentMacAddressGetCfmDes(u8 *buffer, size_t length)
3900 {
3901     CsrWifiSmePermanentMacAddressGetCfm *primitive = kmalloc(sizeof(CsrWifiSmePermanentMacAddressGetCfm), GFP_KERNEL);
3902     size_t offset;
3903     offset = 0;
3904
3905     CsrUint16Des(&primitive->common.type, buffer, &offset);
3906     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
3907     CsrMemCpyDes(primitive->permanentMacAddress.a, buffer, &offset, ((u16) (6)));
3908
3909     return primitive;
3910 }
3911
3912
3913 size_t CsrWifiSmePmkidCandidateListIndSizeof(void *msg)
3914 {
3915     CsrWifiSmePmkidCandidateListInd *primitive = (CsrWifiSmePmkidCandidateListInd *) msg;
3916     size_t bufferSize = 2;
3917
3918     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 13) */
3919     bufferSize += 2; /* u16 primitive->interfaceTag */
3920     bufferSize += 1; /* u8 primitive->pmkidCandidatesCount */
3921     {
3922         u16 i1;
3923         for (i1 = 0; i1 < primitive->pmkidCandidatesCount; i1++)
3924         {
3925             bufferSize += 6; /* u8 primitive->pmkidCandidates[i1].bssid.a[6] */
3926             bufferSize += 1; /* u8 primitive->pmkidCandidates[i1].preAuthAllowed */
3927         }
3928     }
3929     return bufferSize;
3930 }
3931
3932
3933 u8* CsrWifiSmePmkidCandidateListIndSer(u8 *ptr, size_t *len, void *msg)
3934 {
3935     CsrWifiSmePmkidCandidateListInd *primitive = (CsrWifiSmePmkidCandidateListInd *)msg;
3936     *len = 0;
3937     CsrUint16Ser(ptr, len, primitive->common.type);
3938     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
3939     CsrUint8Ser(ptr, len, (u8) primitive->pmkidCandidatesCount);
3940     {
3941         u16 i1;
3942         for (i1 = 0; i1 < primitive->pmkidCandidatesCount; i1++)
3943         {
3944             CsrMemCpySer(ptr, len, (const void *) primitive->pmkidCandidates[i1].bssid.a, ((u16) (6)));
3945             CsrUint8Ser(ptr, len, (u8) primitive->pmkidCandidates[i1].preAuthAllowed);
3946         }
3947     }
3948     return(ptr);
3949 }
3950
3951
3952 void* CsrWifiSmePmkidCandidateListIndDes(u8 *buffer, size_t length)
3953 {
3954     CsrWifiSmePmkidCandidateListInd *primitive = kmalloc(sizeof(CsrWifiSmePmkidCandidateListInd), GFP_KERNEL);
3955     size_t offset;
3956     offset = 0;
3957
3958     CsrUint16Des(&primitive->common.type, buffer, &offset);
3959     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
3960     CsrUint8Des((u8 *) &primitive->pmkidCandidatesCount, buffer, &offset);
3961     primitive->pmkidCandidates = NULL;
3962     if (primitive->pmkidCandidatesCount)
3963     {
3964         primitive->pmkidCandidates = kmalloc(sizeof(CsrWifiSmePmkidCandidate) * primitive->pmkidCandidatesCount, GFP_KERNEL);
3965     }
3966     {
3967         u16 i1;
3968         for (i1 = 0; i1 < primitive->pmkidCandidatesCount; i1++)
3969         {
3970             CsrMemCpyDes(primitive->pmkidCandidates[i1].bssid.a, buffer, &offset, ((u16) (6)));
3971             CsrUint8Des((u8 *) &primitive->pmkidCandidates[i1].preAuthAllowed, buffer, &offset);
3972         }
3973     }
3974
3975     return primitive;
3976 }
3977
3978
3979 void CsrWifiSmePmkidCandidateListIndSerFree(void *voidPrimitivePointer)
3980 {
3981     CsrWifiSmePmkidCandidateListInd *primitive = (CsrWifiSmePmkidCandidateListInd *) voidPrimitivePointer;
3982     kfree(primitive->pmkidCandidates);
3983     kfree(primitive);
3984 }
3985
3986
3987 size_t CsrWifiSmePmkidCfmSizeof(void *msg)
3988 {
3989     CsrWifiSmePmkidCfm *primitive = (CsrWifiSmePmkidCfm *) msg;
3990     size_t bufferSize = 2;
3991
3992     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 31) */
3993     bufferSize += 2; /* u16 primitive->interfaceTag */
3994     bufferSize += 2; /* CsrResult primitive->status */
3995     bufferSize += 1; /* CsrWifiSmeListAction primitive->action */
3996     bufferSize += 1; /* u8 primitive->getPmkidsCount */
3997     {
3998         u16 i1;
3999         for (i1 = 0; i1 < primitive->getPmkidsCount; i1++)
4000         {
4001             bufferSize += 6;  /* u8 primitive->getPmkids[i1].bssid.a[6] */
4002             bufferSize += 16; /* u8 primitive->getPmkids[i1].pmkid[16] */
4003         }
4004     }
4005     return bufferSize;
4006 }
4007
4008
4009 u8* CsrWifiSmePmkidCfmSer(u8 *ptr, size_t *len, void *msg)
4010 {
4011     CsrWifiSmePmkidCfm *primitive = (CsrWifiSmePmkidCfm *)msg;
4012     *len = 0;
4013     CsrUint16Ser(ptr, len, primitive->common.type);
4014     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
4015     CsrUint16Ser(ptr, len, (u16) primitive->status);
4016     CsrUint8Ser(ptr, len, (u8) primitive->action);
4017     CsrUint8Ser(ptr, len, (u8) primitive->getPmkidsCount);
4018     {
4019         u16 i1;
4020         for (i1 = 0; i1 < primitive->getPmkidsCount; i1++)
4021         {
4022             CsrMemCpySer(ptr, len, (const void *) primitive->getPmkids[i1].bssid.a, ((u16) (6)));
4023             CsrMemCpySer(ptr, len, (const void *) primitive->getPmkids[i1].pmkid, ((u16) (16)));
4024         }
4025     }
4026     return(ptr);
4027 }
4028
4029
4030 void* CsrWifiSmePmkidCfmDes(u8 *buffer, size_t length)
4031 {
4032     CsrWifiSmePmkidCfm *primitive = kmalloc(sizeof(CsrWifiSmePmkidCfm), GFP_KERNEL);
4033     size_t offset;
4034     offset = 0;
4035
4036     CsrUint16Des(&primitive->common.type, buffer, &offset);
4037     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
4038     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
4039     CsrUint8Des((u8 *) &primitive->action, buffer, &offset);
4040     CsrUint8Des((u8 *) &primitive->getPmkidsCount, buffer, &offset);
4041     primitive->getPmkids = NULL;
4042     if (primitive->getPmkidsCount)
4043     {
4044         primitive->getPmkids = kmalloc(sizeof(CsrWifiSmePmkid) * primitive->getPmkidsCount, GFP_KERNEL);
4045     }
4046     {
4047         u16 i1;
4048         for (i1 = 0; i1 < primitive->getPmkidsCount; i1++)
4049         {
4050             CsrMemCpyDes(primitive->getPmkids[i1].bssid.a, buffer, &offset, ((u16) (6)));
4051             CsrMemCpyDes(primitive->getPmkids[i1].pmkid, buffer, &offset, ((u16) (16)));
4052         }
4053     }
4054
4055     return primitive;
4056 }
4057
4058
4059 void CsrWifiSmePmkidCfmSerFree(void *voidPrimitivePointer)
4060 {
4061     CsrWifiSmePmkidCfm *primitive = (CsrWifiSmePmkidCfm *) voidPrimitivePointer;
4062     kfree(primitive->getPmkids);
4063     kfree(primitive);
4064 }
4065
4066
4067 size_t CsrWifiSmePowerConfigGetCfmSizeof(void *msg)
4068 {
4069     size_t bufferSize = 2;
4070
4071     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 13) */
4072     bufferSize += 2; /* CsrResult primitive->status */
4073     bufferSize += 1; /* CsrWifiSmePowerSaveLevel primitive->powerConfig.powerSaveLevel */
4074     bufferSize += 2; /* u16 primitive->powerConfig.listenIntervalTu */
4075     bufferSize += 1; /* u8 primitive->powerConfig.rxDtims */
4076     bufferSize += 1; /* CsrWifiSmeD3AutoScanMode primitive->powerConfig.d3AutoScanMode */
4077     bufferSize += 1; /* u8 primitive->powerConfig.clientTrafficWindow */
4078     bufferSize += 1; /* u8 primitive->powerConfig.opportunisticPowerSave */
4079     bufferSize += 1; /* u8 primitive->powerConfig.noticeOfAbsence */
4080     return bufferSize;
4081 }
4082
4083
4084 u8* CsrWifiSmePowerConfigGetCfmSer(u8 *ptr, size_t *len, void *msg)
4085 {
4086     CsrWifiSmePowerConfigGetCfm *primitive = (CsrWifiSmePowerConfigGetCfm *)msg;
4087     *len = 0;
4088     CsrUint16Ser(ptr, len, primitive->common.type);
4089     CsrUint16Ser(ptr, len, (u16) primitive->status);
4090     CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.powerSaveLevel);
4091     CsrUint16Ser(ptr, len, (u16) primitive->powerConfig.listenIntervalTu);
4092     CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.rxDtims);
4093     CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.d3AutoScanMode);
4094     CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.clientTrafficWindow);
4095     CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.opportunisticPowerSave);
4096     CsrUint8Ser(ptr, len, (u8) primitive->powerConfig.noticeOfAbsence);
4097     return(ptr);
4098 }
4099
4100
4101 void* CsrWifiSmePowerConfigGetCfmDes(u8 *buffer, size_t length)
4102 {
4103     CsrWifiSmePowerConfigGetCfm *primitive = kmalloc(sizeof(CsrWifiSmePowerConfigGetCfm), GFP_KERNEL);
4104     size_t offset;
4105     offset = 0;
4106
4107     CsrUint16Des(&primitive->common.type, buffer, &offset);
4108     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
4109     CsrUint8Des((u8 *) &primitive->powerConfig.powerSaveLevel, buffer, &offset);
4110     CsrUint16Des((u16 *) &primitive->powerConfig.listenIntervalTu, buffer, &offset);
4111     CsrUint8Des((u8 *) &primitive->powerConfig.rxDtims, buffer, &offset);
4112     CsrUint8Des((u8 *) &primitive->powerConfig.d3AutoScanMode, buffer, &offset);
4113     CsrUint8Des((u8 *) &primitive->powerConfig.clientTrafficWindow, buffer, &offset);
4114     CsrUint8Des((u8 *) &primitive->powerConfig.opportunisticPowerSave, buffer, &offset);
4115     CsrUint8Des((u8 *) &primitive->powerConfig.noticeOfAbsence, buffer, &offset);
4116
4117     return primitive;
4118 }
4119
4120
4121 size_t CsrWifiSmeRegulatoryDomainInfoGetCfmSizeof(void *msg)
4122 {
4123     size_t bufferSize = 2;
4124
4125     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 10) */
4126     bufferSize += 2; /* CsrResult primitive->status */
4127     bufferSize += 1; /* u8 primitive->regDomInfo.dot11MultiDomainCapabilityImplemented */
4128     bufferSize += 1; /* u8 primitive->regDomInfo.dot11MultiDomainCapabilityEnabled */
4129     bufferSize += 1; /* CsrWifiSmeRegulatoryDomain primitive->regDomInfo.currentRegulatoryDomain */
4130     bufferSize += 2; /* u8 primitive->regDomInfo.currentCountryCode[2] */
4131     return bufferSize;
4132 }
4133
4134
4135 u8* CsrWifiSmeRegulatoryDomainInfoGetCfmSer(u8 *ptr, size_t *len, void *msg)
4136 {
4137     CsrWifiSmeRegulatoryDomainInfoGetCfm *primitive = (CsrWifiSmeRegulatoryDomainInfoGetCfm *)msg;
4138     *len = 0;
4139     CsrUint16Ser(ptr, len, primitive->common.type);
4140     CsrUint16Ser(ptr, len, (u16) primitive->status);
4141     CsrUint8Ser(ptr, len, (u8) primitive->regDomInfo.dot11MultiDomainCapabilityImplemented);
4142     CsrUint8Ser(ptr, len, (u8) primitive->regDomInfo.dot11MultiDomainCapabilityEnabled);
4143     CsrUint8Ser(ptr, len, (u8) primitive->regDomInfo.currentRegulatoryDomain);
4144     CsrMemCpySer(ptr, len, (const void *) primitive->regDomInfo.currentCountryCode, ((u16) (2)));
4145     return(ptr);
4146 }
4147
4148
4149 void* CsrWifiSmeRegulatoryDomainInfoGetCfmDes(u8 *buffer, size_t length)
4150 {
4151     CsrWifiSmeRegulatoryDomainInfoGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeRegulatoryDomainInfoGetCfm), GFP_KERNEL);
4152     size_t offset;
4153     offset = 0;
4154
4155     CsrUint16Des(&primitive->common.type, buffer, &offset);
4156     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
4157     CsrUint8Des((u8 *) &primitive->regDomInfo.dot11MultiDomainCapabilityImplemented, buffer, &offset);
4158     CsrUint8Des((u8 *) &primitive->regDomInfo.dot11MultiDomainCapabilityEnabled, buffer, &offset);
4159     CsrUint8Des((u8 *) &primitive->regDomInfo.currentRegulatoryDomain, buffer, &offset);
4160     CsrMemCpyDes(primitive->regDomInfo.currentCountryCode, buffer, &offset, ((u16) (2)));
4161
4162     return primitive;
4163 }
4164
4165
4166 size_t CsrWifiSmeRoamCompleteIndSizeof(void *msg)
4167 {
4168     size_t bufferSize = 2;
4169
4170     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 7) */
4171     bufferSize += 2; /* u16 primitive->interfaceTag */
4172     bufferSize += 2; /* CsrResult primitive->status */
4173     return bufferSize;
4174 }
4175
4176
4177 u8* CsrWifiSmeRoamCompleteIndSer(u8 *ptr, size_t *len, void *msg)
4178 {
4179     CsrWifiSmeRoamCompleteInd *primitive = (CsrWifiSmeRoamCompleteInd *)msg;
4180     *len = 0;
4181     CsrUint16Ser(ptr, len, primitive->common.type);
4182     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
4183     CsrUint16Ser(ptr, len, (u16) primitive->status);
4184     return(ptr);
4185 }
4186
4187
4188 void* CsrWifiSmeRoamCompleteIndDes(u8 *buffer, size_t length)
4189 {
4190     CsrWifiSmeRoamCompleteInd *primitive = kmalloc(sizeof(CsrWifiSmeRoamCompleteInd), GFP_KERNEL);
4191     size_t offset;
4192     offset = 0;
4193
4194     CsrUint16Des(&primitive->common.type, buffer, &offset);
4195     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
4196     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
4197
4198     return primitive;
4199 }
4200
4201
4202 size_t CsrWifiSmeRoamStartIndSizeof(void *msg)
4203 {
4204     size_t bufferSize = 2;
4205
4206     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 8) */
4207     bufferSize += 2; /* u16 primitive->interfaceTag */
4208     bufferSize += 1; /* CsrWifiSmeRoamReason primitive->roamReason */
4209     bufferSize += 2; /* CsrWifiSmeIEEE80211Reason primitive->reason80211 */
4210     return bufferSize;
4211 }
4212
4213
4214 u8* CsrWifiSmeRoamStartIndSer(u8 *ptr, size_t *len, void *msg)
4215 {
4216     CsrWifiSmeRoamStartInd *primitive = (CsrWifiSmeRoamStartInd *)msg;
4217     *len = 0;
4218     CsrUint16Ser(ptr, len, primitive->common.type);
4219     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
4220     CsrUint8Ser(ptr, len, (u8) primitive->roamReason);
4221     CsrUint16Ser(ptr, len, (u16) primitive->reason80211);
4222     return(ptr);
4223 }
4224
4225
4226 void* CsrWifiSmeRoamStartIndDes(u8 *buffer, size_t length)
4227 {
4228     CsrWifiSmeRoamStartInd *primitive = kmalloc(sizeof(CsrWifiSmeRoamStartInd), GFP_KERNEL);
4229     size_t offset;
4230     offset = 0;
4231
4232     CsrUint16Des(&primitive->common.type, buffer, &offset);
4233     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
4234     CsrUint8Des((u8 *) &primitive->roamReason, buffer, &offset);
4235     CsrUint16Des((u16 *) &primitive->reason80211, buffer, &offset);
4236
4237     return primitive;
4238 }
4239
4240
4241 size_t CsrWifiSmeRoamingConfigGetCfmSizeof(void *msg)
4242 {
4243     size_t bufferSize = 2;
4244
4245     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 72) */
4246     bufferSize += 2; /* u16 primitive->interfaceTag */
4247     bufferSize += 2; /* CsrResult primitive->status */
4248     {
4249         u16 i2;
4250         for (i2 = 0; i2 < 3; i2++)
4251         {
4252             bufferSize += 2; /* s16 primitive->roamingConfig.roamingBands[i2].rssiHighThreshold */
4253             bufferSize += 2; /* s16 primitive->roamingConfig.roamingBands[i2].rssiLowThreshold */
4254             bufferSize += 2; /* s16 primitive->roamingConfig.roamingBands[i2].snrHighThreshold */
4255             bufferSize += 2; /* s16 primitive->roamingConfig.roamingBands[i2].snrLowThreshold */
4256         }
4257     }
4258     bufferSize += 1;         /* u8 primitive->roamingConfig.disableSmoothRoaming */
4259     bufferSize += 1;         /* u8 primitive->roamingConfig.disableRoamScans */
4260     bufferSize += 1;         /* u8 primitive->roamingConfig.reconnectLimit */
4261     bufferSize += 2;         /* u16 primitive->roamingConfig.reconnectLimitIntervalMs */
4262     {
4263         u16 i2;
4264         for (i2 = 0; i2 < 3; i2++)
4265         {
4266             bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].intervalSeconds */
4267             bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].validitySeconds */
4268             bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].minActiveChannelTimeTu */
4269             bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].maxActiveChannelTimeTu */
4270             bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].minPassiveChannelTimeTu */
4271             bufferSize += 2; /* u16 primitive->roamingConfig.roamScanCfg[i2].maxPassiveChannelTimeTu */
4272         }
4273     }
4274     return bufferSize;
4275 }
4276
4277
4278 u8* CsrWifiSmeRoamingConfigGetCfmSer(u8 *ptr, size_t *len, void *msg)
4279 {
4280     CsrWifiSmeRoamingConfigGetCfm *primitive = (CsrWifiSmeRoamingConfigGetCfm *)msg;
4281     *len = 0;
4282     CsrUint16Ser(ptr, len, primitive->common.type);
4283     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
4284     CsrUint16Ser(ptr, len, (u16) primitive->status);
4285     {
4286         u16 i2;
4287         for (i2 = 0; i2 < 3; i2++)
4288         {
4289             CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamingBands[i2].rssiHighThreshold);
4290             CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamingBands[i2].rssiLowThreshold);
4291             CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamingBands[i2].snrHighThreshold);
4292             CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamingBands[i2].snrLowThreshold);
4293         }
4294     }
4295     CsrUint8Ser(ptr, len, (u8) primitive->roamingConfig.disableSmoothRoaming);
4296     CsrUint8Ser(ptr, len, (u8) primitive->roamingConfig.disableRoamScans);
4297     CsrUint8Ser(ptr, len, (u8) primitive->roamingConfig.reconnectLimit);
4298     CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.reconnectLimitIntervalMs);
4299     {
4300         u16 i2;
4301         for (i2 = 0; i2 < 3; i2++)
4302         {
4303             CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].intervalSeconds);
4304             CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].validitySeconds);
4305             CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].minActiveChannelTimeTu);
4306             CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].maxActiveChannelTimeTu);
4307             CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].minPassiveChannelTimeTu);
4308             CsrUint16Ser(ptr, len, (u16) primitive->roamingConfig.roamScanCfg[i2].maxPassiveChannelTimeTu);
4309         }
4310     }
4311     return(ptr);
4312 }
4313
4314
4315 void* CsrWifiSmeRoamingConfigGetCfmDes(u8 *buffer, size_t length)
4316 {
4317     CsrWifiSmeRoamingConfigGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeRoamingConfigGetCfm), GFP_KERNEL);
4318     size_t offset;
4319     offset = 0;
4320
4321     CsrUint16Des(&primitive->common.type, buffer, &offset);
4322     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
4323     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
4324     {
4325         u16 i2;
4326         for (i2 = 0; i2 < 3; i2++)
4327         {
4328             CsrUint16Des((u16 *) &primitive->roamingConfig.roamingBands[i2].rssiHighThreshold, buffer, &offset);
4329             CsrUint16Des((u16 *) &primitive->roamingConfig.roamingBands[i2].rssiLowThreshold, buffer, &offset);
4330             CsrUint16Des((u16 *) &primitive->roamingConfig.roamingBands[i2].snrHighThreshold, buffer, &offset);
4331             CsrUint16Des((u16 *) &primitive->roamingConfig.roamingBands[i2].snrLowThreshold, buffer, &offset);
4332         }
4333     }
4334     CsrUint8Des((u8 *) &primitive->roamingConfig.disableSmoothRoaming, buffer, &offset);
4335     CsrUint8Des((u8 *) &primitive->roamingConfig.disableRoamScans, buffer, &offset);
4336     CsrUint8Des((u8 *) &primitive->roamingConfig.reconnectLimit, buffer, &offset);
4337     CsrUint16Des((u16 *) &primitive->roamingConfig.reconnectLimitIntervalMs, buffer, &offset);
4338     {
4339         u16 i2;
4340         for (i2 = 0; i2 < 3; i2++)
4341         {
4342             CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].intervalSeconds, buffer, &offset);
4343             CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].validitySeconds, buffer, &offset);
4344             CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].minActiveChannelTimeTu, buffer, &offset);
4345             CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].maxActiveChannelTimeTu, buffer, &offset);
4346             CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].minPassiveChannelTimeTu, buffer, &offset);
4347             CsrUint16Des((u16 *) &primitive->roamingConfig.roamScanCfg[i2].maxPassiveChannelTimeTu, buffer, &offset);
4348         }
4349     }
4350
4351     return primitive;
4352 }
4353
4354
4355 size_t CsrWifiSmeRoamingConfigSetCfmSizeof(void *msg)
4356 {
4357     size_t bufferSize = 2;
4358
4359     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 7) */
4360     bufferSize += 2; /* u16 primitive->interfaceTag */
4361     bufferSize += 2; /* CsrResult primitive->status */
4362     return bufferSize;
4363 }
4364
4365
4366 u8* CsrWifiSmeRoamingConfigSetCfmSer(u8 *ptr, size_t *len, void *msg)
4367 {
4368     CsrWifiSmeRoamingConfigSetCfm *primitive = (CsrWifiSmeRoamingConfigSetCfm *)msg;
4369     *len = 0;
4370     CsrUint16Ser(ptr, len, primitive->common.type);
4371     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
4372     CsrUint16Ser(ptr, len, (u16) primitive->status);
4373     return(ptr);
4374 }
4375
4376
4377 void* CsrWifiSmeRoamingConfigSetCfmDes(u8 *buffer, size_t length)
4378 {
4379     CsrWifiSmeRoamingConfigSetCfm *primitive = kmalloc(sizeof(CsrWifiSmeRoamingConfigSetCfm), GFP_KERNEL);
4380     size_t offset;
4381     offset = 0;
4382
4383     CsrUint16Des(&primitive->common.type, buffer, &offset);
4384     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
4385     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
4386
4387     return primitive;
4388 }
4389
4390
4391 size_t CsrWifiSmeScanConfigGetCfmSizeof(void *msg)
4392 {
4393     CsrWifiSmeScanConfigGetCfm *primitive = (CsrWifiSmeScanConfigGetCfm *) msg;
4394     size_t bufferSize = 2;
4395
4396     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 65) */
4397     bufferSize += 2; /* CsrResult primitive->status */
4398     {
4399         u16 i2;
4400         for (i2 = 0; i2 < 4; i2++)
4401         {
4402             bufferSize += 2;                                     /* u16 primitive->scanConfig.scanCfg[i2].intervalSeconds */
4403             bufferSize += 2;                                     /* u16 primitive->scanConfig.scanCfg[i2].validitySeconds */
4404             bufferSize += 2;                                     /* u16 primitive->scanConfig.scanCfg[i2].minActiveChannelTimeTu */
4405             bufferSize += 2;                                     /* u16 primitive->scanConfig.scanCfg[i2].maxActiveChannelTimeTu */
4406             bufferSize += 2;                                     /* u16 primitive->scanConfig.scanCfg[i2].minPassiveChannelTimeTu */
4407             bufferSize += 2;                                     /* u16 primitive->scanConfig.scanCfg[i2].maxPassiveChannelTimeTu */
4408         }
4409     }
4410     bufferSize += 1;                                             /* u8 primitive->scanConfig.disableAutonomousScans */
4411     bufferSize += 2;                                             /* u16 primitive->scanConfig.maxResults */
4412     bufferSize += 1;                                             /* s8 primitive->scanConfig.highRssiThreshold */
4413     bufferSize += 1;                                             /* s8 primitive->scanConfig.lowRssiThreshold */
4414     bufferSize += 1;                                             /* s8 primitive->scanConfig.deltaRssiThreshold */
4415     bufferSize += 1;                                             /* s8 primitive->scanConfig.highSnrThreshold */
4416     bufferSize += 1;                                             /* s8 primitive->scanConfig.lowSnrThreshold */
4417     bufferSize += 1;                                             /* s8 primitive->scanConfig.deltaSnrThreshold */
4418     bufferSize += 2;                                             /* u16 primitive->scanConfig.passiveChannelListCount */
4419     bufferSize += primitive->scanConfig.passiveChannelListCount; /* u8 primitive->scanConfig.passiveChannelList */
4420     return bufferSize;
4421 }
4422
4423
4424 u8* CsrWifiSmeScanConfigGetCfmSer(u8 *ptr, size_t *len, void *msg)
4425 {
4426     CsrWifiSmeScanConfigGetCfm *primitive = (CsrWifiSmeScanConfigGetCfm *)msg;
4427     *len = 0;
4428     CsrUint16Ser(ptr, len, primitive->common.type);
4429     CsrUint16Ser(ptr, len, (u16) primitive->status);
4430     {
4431         u16 i2;
4432         for (i2 = 0; i2 < 4; i2++)
4433         {
4434             CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].intervalSeconds);
4435             CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].validitySeconds);
4436             CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].minActiveChannelTimeTu);
4437             CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].maxActiveChannelTimeTu);
4438             CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].minPassiveChannelTimeTu);
4439             CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.scanCfg[i2].maxPassiveChannelTimeTu);
4440         }
4441     }
4442     CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.disableAutonomousScans);
4443     CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.maxResults);
4444     CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.highRssiThreshold);
4445     CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.lowRssiThreshold);
4446     CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.deltaRssiThreshold);
4447     CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.highSnrThreshold);
4448     CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.lowSnrThreshold);
4449     CsrUint8Ser(ptr, len, (u8) primitive->scanConfig.deltaSnrThreshold);
4450     CsrUint16Ser(ptr, len, (u16) primitive->scanConfig.passiveChannelListCount);
4451     if (primitive->scanConfig.passiveChannelListCount)
4452     {
4453         CsrMemCpySer(ptr, len, (const void *) primitive->scanConfig.passiveChannelList, ((u16) (primitive->scanConfig.passiveChannelListCount)));
4454     }
4455     return(ptr);
4456 }
4457
4458
4459 void* CsrWifiSmeScanConfigGetCfmDes(u8 *buffer, size_t length)
4460 {
4461     CsrWifiSmeScanConfigGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeScanConfigGetCfm), GFP_KERNEL);
4462     size_t offset;
4463     offset = 0;
4464
4465     CsrUint16Des(&primitive->common.type, buffer, &offset);
4466     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
4467     {
4468         u16 i2;
4469         for (i2 = 0; i2 < 4; i2++)
4470         {
4471             CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].intervalSeconds, buffer, &offset);
4472             CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].validitySeconds, buffer, &offset);
4473             CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].minActiveChannelTimeTu, buffer, &offset);
4474             CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].maxActiveChannelTimeTu, buffer, &offset);
4475             CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].minPassiveChannelTimeTu, buffer, &offset);
4476             CsrUint16Des((u16 *) &primitive->scanConfig.scanCfg[i2].maxPassiveChannelTimeTu, buffer, &offset);
4477         }
4478     }
4479     CsrUint8Des((u8 *) &primitive->scanConfig.disableAutonomousScans, buffer, &offset);
4480     CsrUint16Des((u16 *) &primitive->scanConfig.maxResults, buffer, &offset);
4481     CsrUint8Des((u8 *) &primitive->scanConfig.highRssiThreshold, buffer, &offset);
4482     CsrUint8Des((u8 *) &primitive->scanConfig.lowRssiThreshold, buffer, &offset);
4483     CsrUint8Des((u8 *) &primitive->scanConfig.deltaRssiThreshold, buffer, &offset);
4484     CsrUint8Des((u8 *) &primitive->scanConfig.highSnrThreshold, buffer, &offset);
4485     CsrUint8Des((u8 *) &primitive->scanConfig.lowSnrThreshold, buffer, &offset);
4486     CsrUint8Des((u8 *) &primitive->scanConfig.deltaSnrThreshold, buffer, &offset);
4487     CsrUint16Des((u16 *) &primitive->scanConfig.passiveChannelListCount, buffer, &offset);
4488     if (primitive->scanConfig.passiveChannelListCount)
4489     {
4490         primitive->scanConfig.passiveChannelList = kmalloc(primitive->scanConfig.passiveChannelListCount, GFP_KERNEL);
4491         CsrMemCpyDes(primitive->scanConfig.passiveChannelList, buffer, &offset, ((u16) (primitive->scanConfig.passiveChannelListCount)));
4492     }
4493     else
4494     {
4495         primitive->scanConfig.passiveChannelList = NULL;
4496     }
4497
4498     return primitive;
4499 }
4500
4501
4502 void CsrWifiSmeScanConfigGetCfmSerFree(void *voidPrimitivePointer)
4503 {
4504     CsrWifiSmeScanConfigGetCfm *primitive = (CsrWifiSmeScanConfigGetCfm *) voidPrimitivePointer;
4505     kfree(primitive->scanConfig.passiveChannelList);
4506     kfree(primitive);
4507 }
4508
4509
4510 size_t CsrWifiSmeScanResultIndSizeof(void *msg)
4511 {
4512     CsrWifiSmeScanResultInd *primitive = (CsrWifiSmeScanResultInd *) msg;
4513     size_t bufferSize = 2;
4514
4515     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 149) */
4516     bufferSize += 32;                                          /* u8 primitive->result.ssid.ssid[32] */
4517     bufferSize += 1;                                           /* u8 primitive->result.ssid.length */
4518     bufferSize += 6;                                           /* u8 primitive->result.bssid.a[6] */
4519     bufferSize += 2;                                           /* s16 primitive->result.rssi */
4520     bufferSize += 2;                                           /* s16 primitive->result.snr */
4521     bufferSize += 1;                                           /* CsrWifiSmeRadioIF primitive->result.ifIndex */
4522     bufferSize += 2;                                           /* u16 primitive->result.beaconPeriodTu */
4523     bufferSize += 8;                                           /* u8 primitive->result.timeStamp.data[8] */
4524     bufferSize += 8;                                           /* u8 primitive->result.localTime.data[8] */
4525     bufferSize += 2;                                           /* u16 primitive->result.channelFrequency */
4526     bufferSize += 2;                                           /* u16 primitive->result.capabilityInformation */
4527     bufferSize += 1;                                           /* u8 primitive->result.channelNumber */
4528     bufferSize += 1;                                           /* CsrWifiSmeBasicUsability primitive->result.usability */
4529     bufferSize += 1;                                           /* CsrWifiSmeBssType primitive->result.bssType */
4530     bufferSize += 2;                                           /* u16 primitive->result.informationElementsLength */
4531     bufferSize += primitive->result.informationElementsLength; /* u8 primitive->result.informationElements */
4532     bufferSize += 1;                                           /* CsrWifiSmeP2pRole primitive->result.p2pDeviceRole */
4533     switch (primitive->result.p2pDeviceRole)
4534     {
4535         case CSR_WIFI_SME_P2P_ROLE_CLI:
4536             bufferSize += 1; /* u8 primitive->result.deviceInfo.reservedCli.empty */
4537             break;
4538         case CSR_WIFI_SME_P2P_ROLE_GO:
4539             bufferSize += 1; /* CsrWifiSmeP2pGroupCapabilityMask primitive->result.deviceInfo.groupInfo.groupCapability */
4540             bufferSize += 6; /* u8 primitive->result.deviceInfo.groupInfo.p2pDeviceAddress.a[6] */
4541             bufferSize += 1; /* u8 primitive->result.deviceInfo.groupInfo.p2pClientInfoCount */
4542             {
4543                 u16 i4;
4544                 for (i4 = 0; i4 < primitive->result.deviceInfo.groupInfo.p2pClientInfoCount; i4++)
4545                 {
4546                     bufferSize += 6; /* u8 primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].p2PClientInterfaceAddress.a[6] */
4547                     bufferSize += 6; /* u8 primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceAddress.a[6] */
4548                     bufferSize += 2; /* CsrWifiSmeWpsConfigTypeMask primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.configMethods */
4549                     bufferSize += 1; /* CsrWifiSmeP2pCapabilityMask primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.p2PDeviceCap */
4550                     bufferSize += 8; /* u8 primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.primDeviceType.deviceDetails[8] */
4551                     bufferSize += 1; /* u8 primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount */
4552                     {
4553                         u16 i6;
4554                         for (i6 = 0; i6 < primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount; i6++)
4555                         {
4556                             bufferSize += 8; /* u8 primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType[i6].deviceDetails[8] */
4557                         }
4558                     }
4559                     bufferSize += 32;        /* u8 primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceName[32] */
4560                     bufferSize += 1;         /* u8 primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceNameLength */
4561                 }
4562             }
4563             break;
4564         case CSR_WIFI_SME_P2P_ROLE_NONE:
4565             bufferSize += 1; /* u8 primitive->result.deviceInfo.reservedNone.empty */
4566             break;
4567         case CSR_WIFI_SME_P2P_ROLE_STANDALONE:
4568             bufferSize += 6; /* u8 primitive->result.deviceInfo.standalonedevInfo.deviceAddress.a[6] */
4569             bufferSize += 2; /* CsrWifiSmeWpsConfigTypeMask primitive->result.deviceInfo.standalonedevInfo.configMethods */
4570             bufferSize += 1; /* CsrWifiSmeP2pCapabilityMask primitive->result.deviceInfo.standalonedevInfo.p2PDeviceCap */
4571             bufferSize += 8; /* u8 primitive->result.deviceInfo.standalonedevInfo.primDeviceType.deviceDetails[8] */
4572             bufferSize += 1; /* u8 primitive->result.deviceInfo.standalonedevInfo.secondaryDeviceTypeCount */
4573             {
4574                 u16 i4;
4575                 for (i4 = 0; i4 < primitive->result.deviceInfo.standalonedevInfo.secondaryDeviceTypeCount; i4++)
4576                 {
4577                     bufferSize += 8; /* u8 primitive->result.deviceInfo.standalonedevInfo.secDeviceType[i4].deviceDetails[8] */
4578                 }
4579             }
4580             bufferSize += 32;        /* u8 primitive->result.deviceInfo.standalonedevInfo.deviceName[32] */
4581             bufferSize += 1;         /* u8 primitive->result.deviceInfo.standalonedevInfo.deviceNameLength */
4582             break;
4583         default:
4584             break;
4585     }
4586     return bufferSize;
4587 }
4588
4589
4590 u8* CsrWifiSmeScanResultIndSer(u8 *ptr, size_t *len, void *msg)
4591 {
4592     CsrWifiSmeScanResultInd *primitive = (CsrWifiSmeScanResultInd *)msg;
4593     *len = 0;
4594     CsrUint16Ser(ptr, len, primitive->common.type);
4595     CsrMemCpySer(ptr, len, (const void *) primitive->result.ssid.ssid, ((u16) (32)));
4596     CsrUint8Ser(ptr, len, (u8) primitive->result.ssid.length);
4597     CsrMemCpySer(ptr, len, (const void *) primitive->result.bssid.a, ((u16) (6)));
4598     CsrUint16Ser(ptr, len, (u16) primitive->result.rssi);
4599     CsrUint16Ser(ptr, len, (u16) primitive->result.snr);
4600     CsrUint8Ser(ptr, len, (u8) primitive->result.ifIndex);
4601     CsrUint16Ser(ptr, len, (u16) primitive->result.beaconPeriodTu);
4602     CsrMemCpySer(ptr, len, (const void *) primitive->result.timeStamp.data, ((u16) (8)));
4603     CsrMemCpySer(ptr, len, (const void *) primitive->result.localTime.data, ((u16) (8)));
4604     CsrUint16Ser(ptr, len, (u16) primitive->result.channelFrequency);
4605     CsrUint16Ser(ptr, len, (u16) primitive->result.capabilityInformation);
4606     CsrUint8Ser(ptr, len, (u8) primitive->result.channelNumber);
4607     CsrUint8Ser(ptr, len, (u8) primitive->result.usability);
4608     CsrUint8Ser(ptr, len, (u8) primitive->result.bssType);
4609     CsrUint16Ser(ptr, len, (u16) primitive->result.informationElementsLength);
4610     if (primitive->result.informationElementsLength)
4611     {
4612         CsrMemCpySer(ptr, len, (const void *) primitive->result.informationElements, ((u16) (primitive->result.informationElementsLength)));
4613     }
4614     CsrUint8Ser(ptr, len, (u8) primitive->result.p2pDeviceRole);
4615     switch (primitive->result.p2pDeviceRole)
4616     {
4617         case CSR_WIFI_SME_P2P_ROLE_CLI:
4618             CsrUint8Ser(ptr, len, (u8) primitive->result.deviceInfo.reservedCli.empty);
4619             break;
4620         case CSR_WIFI_SME_P2P_ROLE_GO:
4621             CsrUint8Ser(ptr, len, (u8) primitive->result.deviceInfo.groupInfo.groupCapability);
4622             CsrMemCpySer(ptr, len, (const void *) primitive->result.deviceInfo.groupInfo.p2pDeviceAddress.a, ((u16) (6)));
4623             CsrUint8Ser(ptr, len, (u8) primitive->result.deviceInfo.groupInfo.p2pClientInfoCount);
4624             {
4625                 u16 i4;
4626                 for (i4 = 0; i4 < primitive->result.deviceInfo.groupInfo.p2pClientInfoCount; i4++)
4627                 {
4628                     CsrMemCpySer(ptr, len, (const void *) primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].p2PClientInterfaceAddress.a, ((u16) (6)));
4629                     CsrMemCpySer(ptr, len, (const void *) primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceAddress.a, ((u16) (6)));
4630                     CsrUint16Ser(ptr, len, (u16) primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.configMethods);
4631                     CsrUint8Ser(ptr, len, (u8) primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.p2PDeviceCap);
4632                     CsrMemCpySer(ptr, len, (const void *) primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.primDeviceType.deviceDetails, ((u16) (8)));
4633                     CsrUint8Ser(ptr, len, (u8) primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount);
4634                     {
4635                         u16 i6;
4636                         for (i6 = 0; i6 < primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount; i6++)
4637                         {
4638                             CsrMemCpySer(ptr, len, (const void *) primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType[i6].deviceDetails, ((u16) (8)));
4639                         }
4640                     }
4641                     CsrMemCpySer(ptr, len, (const void *) primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceName, ((u16) (32)));
4642                     CsrUint8Ser(ptr, len, (u8) primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceNameLength);
4643                 }
4644             }
4645             break;
4646         case CSR_WIFI_SME_P2P_ROLE_NONE:
4647             CsrUint8Ser(ptr, len, (u8) primitive->result.deviceInfo.reservedNone.empty);
4648             break;
4649         case CSR_WIFI_SME_P2P_ROLE_STANDALONE:
4650             CsrMemCpySer(ptr, len, (const void *) primitive->result.deviceInfo.standalonedevInfo.deviceAddress.a, ((u16) (6)));
4651             CsrUint16Ser(ptr, len, (u16) primitive->result.deviceInfo.standalonedevInfo.configMethods);
4652             CsrUint8Ser(ptr, len, (u8) primitive->result.deviceInfo.standalonedevInfo.p2PDeviceCap);
4653             CsrMemCpySer(ptr, len, (const void *) primitive->result.deviceInfo.standalonedevInfo.primDeviceType.deviceDetails, ((u16) (8)));
4654             CsrUint8Ser(ptr, len, (u8) primitive->result.deviceInfo.standalonedevInfo.secondaryDeviceTypeCount);
4655             {
4656                 u16 i4;
4657                 for (i4 = 0; i4 < primitive->result.deviceInfo.standalonedevInfo.secondaryDeviceTypeCount; i4++)
4658                 {
4659                     CsrMemCpySer(ptr, len, (const void *) primitive->result.deviceInfo.standalonedevInfo.secDeviceType[i4].deviceDetails, ((u16) (8)));
4660                 }
4661             }
4662             CsrMemCpySer(ptr, len, (const void *) primitive->result.deviceInfo.standalonedevInfo.deviceName, ((u16) (32)));
4663             CsrUint8Ser(ptr, len, (u8) primitive->result.deviceInfo.standalonedevInfo.deviceNameLength);
4664             break;
4665         default:
4666             break;
4667     }
4668     return(ptr);
4669 }
4670
4671
4672 void* CsrWifiSmeScanResultIndDes(u8 *buffer, size_t length)
4673 {
4674     CsrWifiSmeScanResultInd *primitive = kmalloc(sizeof(CsrWifiSmeScanResultInd), GFP_KERNEL);
4675     size_t offset;
4676     offset = 0;
4677
4678     CsrUint16Des(&primitive->common.type, buffer, &offset);
4679     CsrMemCpyDes(primitive->result.ssid.ssid, buffer, &offset, ((u16) (32)));
4680     CsrUint8Des((u8 *) &primitive->result.ssid.length, buffer, &offset);
4681     CsrMemCpyDes(primitive->result.bssid.a, buffer, &offset, ((u16) (6)));
4682     CsrUint16Des((u16 *) &primitive->result.rssi, buffer, &offset);
4683     CsrUint16Des((u16 *) &primitive->result.snr, buffer, &offset);
4684     CsrUint8Des((u8 *) &primitive->result.ifIndex, buffer, &offset);
4685     CsrUint16Des((u16 *) &primitive->result.beaconPeriodTu, buffer, &offset);
4686     CsrMemCpyDes(primitive->result.timeStamp.data, buffer, &offset, ((u16) (8)));
4687     CsrMemCpyDes(primitive->result.localTime.data, buffer, &offset, ((u16) (8)));
4688     CsrUint16Des((u16 *) &primitive->result.channelFrequency, buffer, &offset);
4689     CsrUint16Des((u16 *) &primitive->result.capabilityInformation, buffer, &offset);
4690     CsrUint8Des((u8 *) &primitive->result.channelNumber, buffer, &offset);
4691     CsrUint8Des((u8 *) &primitive->result.usability, buffer, &offset);
4692     CsrUint8Des((u8 *) &primitive->result.bssType, buffer, &offset);
4693     CsrUint16Des((u16 *) &primitive->result.informationElementsLength, buffer, &offset);
4694     if (primitive->result.informationElementsLength)
4695     {
4696         primitive->result.informationElements = kmalloc(primitive->result.informationElementsLength, GFP_KERNEL);
4697         CsrMemCpyDes(primitive->result.informationElements, buffer, &offset, ((u16) (primitive->result.informationElementsLength)));
4698     }
4699     else
4700     {
4701         primitive->result.informationElements = NULL;
4702     }
4703     CsrUint8Des((u8 *) &primitive->result.p2pDeviceRole, buffer, &offset);
4704     switch (primitive->result.p2pDeviceRole)
4705     {
4706         case CSR_WIFI_SME_P2P_ROLE_CLI:
4707             CsrUint8Des((u8 *) &primitive->result.deviceInfo.reservedCli.empty, buffer, &offset);
4708             break;
4709         case CSR_WIFI_SME_P2P_ROLE_GO:
4710             CsrUint8Des((u8 *) &primitive->result.deviceInfo.groupInfo.groupCapability, buffer, &offset);
4711             CsrMemCpyDes(primitive->result.deviceInfo.groupInfo.p2pDeviceAddress.a, buffer, &offset, ((u16) (6)));
4712             CsrUint8Des((u8 *) &primitive->result.deviceInfo.groupInfo.p2pClientInfoCount, buffer, &offset);
4713             primitive->result.deviceInfo.groupInfo.p2PClientInfo = NULL;
4714             if (primitive->result.deviceInfo.groupInfo.p2pClientInfoCount)
4715             {
4716                 primitive->result.deviceInfo.groupInfo.p2PClientInfo = kmalloc(sizeof(CsrWifiSmeP2pClientInfoType) * primitive->result.deviceInfo.groupInfo.p2pClientInfoCount, GFP_KERNEL);
4717             }
4718             {
4719                 u16 i4;
4720                 for (i4 = 0; i4 < primitive->result.deviceInfo.groupInfo.p2pClientInfoCount; i4++)
4721                 {
4722                     CsrMemCpyDes(primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].p2PClientInterfaceAddress.a, buffer, &offset, ((u16) (6)));
4723                     CsrMemCpyDes(primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceAddress.a, buffer, &offset, ((u16) (6)));
4724                     CsrUint16Des((u16 *) &primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.configMethods, buffer, &offset);
4725                     CsrUint8Des((u8 *) &primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.p2PDeviceCap, buffer, &offset);
4726                     CsrMemCpyDes(primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.primDeviceType.deviceDetails, buffer, &offset, ((u16) (8)));
4727                     CsrUint8Des((u8 *) &primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount, buffer, &offset);
4728                     primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType = NULL;
4729                     if (primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount)
4730                     {
4731                         primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType = kmalloc(sizeof(CsrWifiSmeWpsDeviceType) * primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount, GFP_KERNEL);
4732                     }
4733                     {
4734                         u16 i6;
4735                         for (i6 = 0; i6 < primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount; i6++)
4736                         {
4737                             CsrMemCpyDes(primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType[i6].deviceDetails, buffer, &offset, ((u16) (8)));
4738                         }
4739                     }
4740                     CsrMemCpyDes(primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceName, buffer, &offset, ((u16) (32)));
4741                     CsrUint8Des((u8 *) &primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceNameLength, buffer, &offset);
4742                 }
4743             }
4744             break;
4745         case CSR_WIFI_SME_P2P_ROLE_NONE:
4746             CsrUint8Des((u8 *) &primitive->result.deviceInfo.reservedNone.empty, buffer, &offset);
4747             break;
4748         case CSR_WIFI_SME_P2P_ROLE_STANDALONE:
4749             CsrMemCpyDes(primitive->result.deviceInfo.standalonedevInfo.deviceAddress.a, buffer, &offset, ((u16) (6)));
4750             CsrUint16Des((u16 *) &primitive->result.deviceInfo.standalonedevInfo.configMethods, buffer, &offset);
4751             CsrUint8Des((u8 *) &primitive->result.deviceInfo.standalonedevInfo.p2PDeviceCap, buffer, &offset);
4752             CsrMemCpyDes(primitive->result.deviceInfo.standalonedevInfo.primDeviceType.deviceDetails, buffer, &offset, ((u16) (8)));
4753             CsrUint8Des((u8 *) &primitive->result.deviceInfo.standalonedevInfo.secondaryDeviceTypeCount, buffer, &offset);
4754             primitive->result.deviceInfo.standalonedevInfo.secDeviceType = NULL;
4755             if (primitive->result.deviceInfo.standalonedevInfo.secondaryDeviceTypeCount)
4756             {
4757                 primitive->result.deviceInfo.standalonedevInfo.secDeviceType = kmalloc(sizeof(CsrWifiSmeWpsDeviceType) * primitive->result.deviceInfo.standalonedevInfo.secondaryDeviceTypeCount, GFP_KERNEL);
4758             }
4759             {
4760                 u16 i4;
4761                 for (i4 = 0; i4 < primitive->result.deviceInfo.standalonedevInfo.secondaryDeviceTypeCount; i4++)
4762                 {
4763                     CsrMemCpyDes(primitive->result.deviceInfo.standalonedevInfo.secDeviceType[i4].deviceDetails, buffer, &offset, ((u16) (8)));
4764                 }
4765             }
4766             CsrMemCpyDes(primitive->result.deviceInfo.standalonedevInfo.deviceName, buffer, &offset, ((u16) (32)));
4767             CsrUint8Des((u8 *) &primitive->result.deviceInfo.standalonedevInfo.deviceNameLength, buffer, &offset);
4768             break;
4769         default:
4770             break;
4771     }
4772
4773     return primitive;
4774 }
4775
4776
4777 void CsrWifiSmeScanResultIndSerFree(void *voidPrimitivePointer)
4778 {
4779     CsrWifiSmeScanResultInd *primitive = (CsrWifiSmeScanResultInd *) voidPrimitivePointer;
4780     kfree(primitive->result.informationElements);
4781     switch (primitive->result.p2pDeviceRole)
4782     {
4783         case CSR_WIFI_SME_P2P_ROLE_GO:
4784         {
4785             u16 i4;
4786             for (i4 = 0; i4 < primitive->result.deviceInfo.groupInfo.p2pClientInfoCount; i4++)
4787             {
4788                 kfree(primitive->result.deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType);
4789             }
4790         }
4791             kfree(primitive->result.deviceInfo.groupInfo.p2PClientInfo);
4792             break;
4793         case CSR_WIFI_SME_P2P_ROLE_STANDALONE:
4794             kfree(primitive->result.deviceInfo.standalonedevInfo.secDeviceType);
4795             break;
4796         default:
4797             break;
4798     }
4799     kfree(primitive);
4800 }
4801
4802
4803 size_t CsrWifiSmeScanResultsGetCfmSizeof(void *msg)
4804 {
4805     CsrWifiSmeScanResultsGetCfm *primitive = (CsrWifiSmeScanResultsGetCfm *) msg;
4806     size_t bufferSize = 2;
4807
4808     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 153) */
4809     bufferSize += 2; /* CsrResult primitive->status */
4810     bufferSize += 2; /* u16 primitive->scanResultsCount */
4811     {
4812         u16 i1;
4813         for (i1 = 0; i1 < primitive->scanResultsCount; i1++)
4814         {
4815             bufferSize += 32;                                                   /* u8 primitive->scanResults[i1].ssid.ssid[32] */
4816             bufferSize += 1;                                                    /* u8 primitive->scanResults[i1].ssid.length */
4817             bufferSize += 6;                                                    /* u8 primitive->scanResults[i1].bssid.a[6] */
4818             bufferSize += 2;                                                    /* s16 primitive->scanResults[i1].rssi */
4819             bufferSize += 2;                                                    /* s16 primitive->scanResults[i1].snr */
4820             bufferSize += 1;                                                    /* CsrWifiSmeRadioIF primitive->scanResults[i1].ifIndex */
4821             bufferSize += 2;                                                    /* u16 primitive->scanResults[i1].beaconPeriodTu */
4822             bufferSize += 8;                                                    /* u8 primitive->scanResults[i1].timeStamp.data[8] */
4823             bufferSize += 8;                                                    /* u8 primitive->scanResults[i1].localTime.data[8] */
4824             bufferSize += 2;                                                    /* u16 primitive->scanResults[i1].channelFrequency */
4825             bufferSize += 2;                                                    /* u16 primitive->scanResults[i1].capabilityInformation */
4826             bufferSize += 1;                                                    /* u8 primitive->scanResults[i1].channelNumber */
4827             bufferSize += 1;                                                    /* CsrWifiSmeBasicUsability primitive->scanResults[i1].usability */
4828             bufferSize += 1;                                                    /* CsrWifiSmeBssType primitive->scanResults[i1].bssType */
4829             bufferSize += 2;                                                    /* u16 primitive->scanResults[i1].informationElementsLength */
4830             bufferSize += primitive->scanResults[i1].informationElementsLength; /* u8 primitive->scanResults[i1].informationElements */
4831             bufferSize += 1;                                                    /* CsrWifiSmeP2pRole primitive->scanResults[i1].p2pDeviceRole */
4832             switch (primitive->scanResults[i1].p2pDeviceRole)
4833             {
4834                 case CSR_WIFI_SME_P2P_ROLE_CLI:
4835                     bufferSize += 1; /* u8 primitive->scanResults[i1].deviceInfo.reservedCli.empty */
4836                     break;
4837                 case CSR_WIFI_SME_P2P_ROLE_GO:
4838                     bufferSize += 1; /* CsrWifiSmeP2pGroupCapabilityMask primitive->scanResults[i1].deviceInfo.groupInfo.groupCapability */
4839                     bufferSize += 6; /* u8 primitive->scanResults[i1].deviceInfo.groupInfo.p2pDeviceAddress.a[6] */
4840                     bufferSize += 1; /* u8 primitive->scanResults[i1].deviceInfo.groupInfo.p2pClientInfoCount */
4841                     {
4842                         u16 i4;
4843                         for (i4 = 0; i4 < primitive->scanResults[i1].deviceInfo.groupInfo.p2pClientInfoCount; i4++)
4844                         {
4845                             bufferSize += 6; /* u8 primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].p2PClientInterfaceAddress.a[6] */
4846                             bufferSize += 6; /* u8 primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceAddress.a[6] */
4847                             bufferSize += 2; /* CsrWifiSmeWpsConfigTypeMask primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.configMethods */
4848                             bufferSize += 1; /* CsrWifiSmeP2pCapabilityMask primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.p2PDeviceCap */
4849                             bufferSize += 8; /* u8 primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.primDeviceType.deviceDetails[8] */
4850                             bufferSize += 1; /* u8 primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount */
4851                             {
4852                                 u16 i6;
4853                                 for (i6 = 0; i6 < primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount; i6++)
4854                                 {
4855                                     bufferSize += 8; /* u8 primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType[i6].deviceDetails[8] */
4856                                 }
4857                             }
4858                             bufferSize += 32;        /* u8 primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceName[32] */
4859                             bufferSize += 1;         /* u8 primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceNameLength */
4860                         }
4861                     }
4862                     break;
4863                 case CSR_WIFI_SME_P2P_ROLE_NONE:
4864                     bufferSize += 1; /* u8 primitive->scanResults[i1].deviceInfo.reservedNone.empty */
4865                     break;
4866                 case CSR_WIFI_SME_P2P_ROLE_STANDALONE:
4867                     bufferSize += 6; /* u8 primitive->scanResults[i1].deviceInfo.standalonedevInfo.deviceAddress.a[6] */
4868                     bufferSize += 2; /* CsrWifiSmeWpsConfigTypeMask primitive->scanResults[i1].deviceInfo.standalonedevInfo.configMethods */
4869                     bufferSize += 1; /* CsrWifiSmeP2pCapabilityMask primitive->scanResults[i1].deviceInfo.standalonedevInfo.p2PDeviceCap */
4870                     bufferSize += 8; /* u8 primitive->scanResults[i1].deviceInfo.standalonedevInfo.primDeviceType.deviceDetails[8] */
4871                     bufferSize += 1; /* u8 primitive->scanResults[i1].deviceInfo.standalonedevInfo.secondaryDeviceTypeCount */
4872                     {
4873                         u16 i4;
4874                         for (i4 = 0; i4 < primitive->scanResults[i1].deviceInfo.standalonedevInfo.secondaryDeviceTypeCount; i4++)
4875                         {
4876                             bufferSize += 8; /* u8 primitive->scanResults[i1].deviceInfo.standalonedevInfo.secDeviceType[i4].deviceDetails[8] */
4877                         }
4878                     }
4879                     bufferSize += 32;        /* u8 primitive->scanResults[i1].deviceInfo.standalonedevInfo.deviceName[32] */
4880                     bufferSize += 1;         /* u8 primitive->scanResults[i1].deviceInfo.standalonedevInfo.deviceNameLength */
4881                     break;
4882                 default:
4883                     break;
4884             }
4885         }
4886     }
4887     return bufferSize;
4888 }
4889
4890
4891 u8* CsrWifiSmeScanResultsGetCfmSer(u8 *ptr, size_t *len, void *msg)
4892 {
4893     CsrWifiSmeScanResultsGetCfm *primitive = (CsrWifiSmeScanResultsGetCfm *)msg;
4894     *len = 0;
4895     CsrUint16Ser(ptr, len, primitive->common.type);
4896     CsrUint16Ser(ptr, len, (u16) primitive->status);
4897     CsrUint16Ser(ptr, len, (u16) primitive->scanResultsCount);
4898     {
4899         u16 i1;
4900         for (i1 = 0; i1 < primitive->scanResultsCount; i1++)
4901         {
4902             CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].ssid.ssid, ((u16) (32)));
4903             CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].ssid.length);
4904             CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].bssid.a, ((u16) (6)));
4905             CsrUint16Ser(ptr, len, (u16) primitive->scanResults[i1].rssi);
4906             CsrUint16Ser(ptr, len, (u16) primitive->scanResults[i1].snr);
4907             CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].ifIndex);
4908             CsrUint16Ser(ptr, len, (u16) primitive->scanResults[i1].beaconPeriodTu);
4909             CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].timeStamp.data, ((u16) (8)));
4910             CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].localTime.data, ((u16) (8)));
4911             CsrUint16Ser(ptr, len, (u16) primitive->scanResults[i1].channelFrequency);
4912             CsrUint16Ser(ptr, len, (u16) primitive->scanResults[i1].capabilityInformation);
4913             CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].channelNumber);
4914             CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].usability);
4915             CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].bssType);
4916             CsrUint16Ser(ptr, len, (u16) primitive->scanResults[i1].informationElementsLength);
4917             if (primitive->scanResults[i1].informationElementsLength)
4918             {
4919                 CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].informationElements, ((u16) (primitive->scanResults[i1].informationElementsLength)));
4920             }
4921             CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].p2pDeviceRole);
4922             switch (primitive->scanResults[i1].p2pDeviceRole)
4923             {
4924                 case CSR_WIFI_SME_P2P_ROLE_CLI:
4925                     CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].deviceInfo.reservedCli.empty);
4926                     break;
4927                 case CSR_WIFI_SME_P2P_ROLE_GO:
4928                     CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].deviceInfo.groupInfo.groupCapability);
4929                     CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].deviceInfo.groupInfo.p2pDeviceAddress.a, ((u16) (6)));
4930                     CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].deviceInfo.groupInfo.p2pClientInfoCount);
4931                     {
4932                         u16 i4;
4933                         for (i4 = 0; i4 < primitive->scanResults[i1].deviceInfo.groupInfo.p2pClientInfoCount; i4++)
4934                         {
4935                             CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].p2PClientInterfaceAddress.a, ((u16) (6)));
4936                             CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceAddress.a, ((u16) (6)));
4937                             CsrUint16Ser(ptr, len, (u16) primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.configMethods);
4938                             CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.p2PDeviceCap);
4939                             CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.primDeviceType.deviceDetails, ((u16) (8)));
4940                             CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount);
4941                             {
4942                                 u16 i6;
4943                                 for (i6 = 0; i6 < primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount; i6++)
4944                                 {
4945                                     CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType[i6].deviceDetails, ((u16) (8)));
4946                                 }
4947                             }
4948                             CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceName, ((u16) (32)));
4949                             CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceNameLength);
4950                         }
4951                     }
4952                     break;
4953                 case CSR_WIFI_SME_P2P_ROLE_NONE:
4954                     CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].deviceInfo.reservedNone.empty);
4955                     break;
4956                 case CSR_WIFI_SME_P2P_ROLE_STANDALONE:
4957                     CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].deviceInfo.standalonedevInfo.deviceAddress.a, ((u16) (6)));
4958                     CsrUint16Ser(ptr, len, (u16) primitive->scanResults[i1].deviceInfo.standalonedevInfo.configMethods);
4959                     CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].deviceInfo.standalonedevInfo.p2PDeviceCap);
4960                     CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].deviceInfo.standalonedevInfo.primDeviceType.deviceDetails, ((u16) (8)));
4961                     CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].deviceInfo.standalonedevInfo.secondaryDeviceTypeCount);
4962                     {
4963                         u16 i4;
4964                         for (i4 = 0; i4 < primitive->scanResults[i1].deviceInfo.standalonedevInfo.secondaryDeviceTypeCount; i4++)
4965                         {
4966                             CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].deviceInfo.standalonedevInfo.secDeviceType[i4].deviceDetails, ((u16) (8)));
4967                         }
4968                     }
4969                     CsrMemCpySer(ptr, len, (const void *) primitive->scanResults[i1].deviceInfo.standalonedevInfo.deviceName, ((u16) (32)));
4970                     CsrUint8Ser(ptr, len, (u8) primitive->scanResults[i1].deviceInfo.standalonedevInfo.deviceNameLength);
4971                     break;
4972                 default:
4973                     break;
4974             }
4975         }
4976     }
4977     return(ptr);
4978 }
4979
4980
4981 void* CsrWifiSmeScanResultsGetCfmDes(u8 *buffer, size_t length)
4982 {
4983     CsrWifiSmeScanResultsGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeScanResultsGetCfm), GFP_KERNEL);
4984     size_t offset;
4985     offset = 0;
4986
4987     CsrUint16Des(&primitive->common.type, buffer, &offset);
4988     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
4989     CsrUint16Des((u16 *) &primitive->scanResultsCount, buffer, &offset);
4990     primitive->scanResults = NULL;
4991     if (primitive->scanResultsCount)
4992     {
4993         primitive->scanResults = kmalloc(sizeof(CsrWifiSmeScanResult) * primitive->scanResultsCount, GFP_KERNEL);
4994     }
4995     {
4996         u16 i1;
4997         for (i1 = 0; i1 < primitive->scanResultsCount; i1++)
4998         {
4999             CsrMemCpyDes(primitive->scanResults[i1].ssid.ssid, buffer, &offset, ((u16) (32)));
5000             CsrUint8Des((u8 *) &primitive->scanResults[i1].ssid.length, buffer, &offset);
5001             CsrMemCpyDes(primitive->scanResults[i1].bssid.a, buffer, &offset, ((u16) (6)));
5002             CsrUint16Des((u16 *) &primitive->scanResults[i1].rssi, buffer, &offset);
5003             CsrUint16Des((u16 *) &primitive->scanResults[i1].snr, buffer, &offset);
5004             CsrUint8Des((u8 *) &primitive->scanResults[i1].ifIndex, buffer, &offset);
5005             CsrUint16Des((u16 *) &primitive->scanResults[i1].beaconPeriodTu, buffer, &offset);
5006             CsrMemCpyDes(primitive->scanResults[i1].timeStamp.data, buffer, &offset, ((u16) (8)));
5007             CsrMemCpyDes(primitive->scanResults[i1].localTime.data, buffer, &offset, ((u16) (8)));
5008             CsrUint16Des((u16 *) &primitive->scanResults[i1].channelFrequency, buffer, &offset);
5009             CsrUint16Des((u16 *) &primitive->scanResults[i1].capabilityInformation, buffer, &offset);
5010             CsrUint8Des((u8 *) &primitive->scanResults[i1].channelNumber, buffer, &offset);
5011             CsrUint8Des((u8 *) &primitive->scanResults[i1].usability, buffer, &offset);
5012             CsrUint8Des((u8 *) &primitive->scanResults[i1].bssType, buffer, &offset);
5013             CsrUint16Des((u16 *) &primitive->scanResults[i1].informationElementsLength, buffer, &offset);
5014             if (primitive->scanResults[i1].informationElementsLength)
5015             {
5016                 primitive->scanResults[i1].informationElements = kmalloc(primitive->scanResults[i1].informationElementsLength, GFP_KERNEL);
5017                 CsrMemCpyDes(primitive->scanResults[i1].informationElements, buffer, &offset, ((u16) (primitive->scanResults[i1].informationElementsLength)));
5018             }
5019             else
5020             {
5021                 primitive->scanResults[i1].informationElements = NULL;
5022             }
5023             CsrUint8Des((u8 *) &primitive->scanResults[i1].p2pDeviceRole, buffer, &offset);
5024             switch (primitive->scanResults[i1].p2pDeviceRole)
5025             {
5026                 case CSR_WIFI_SME_P2P_ROLE_CLI:
5027                     CsrUint8Des((u8 *) &primitive->scanResults[i1].deviceInfo.reservedCli.empty, buffer, &offset);
5028                     break;
5029                 case CSR_WIFI_SME_P2P_ROLE_GO:
5030                     CsrUint8Des((u8 *) &primitive->scanResults[i1].deviceInfo.groupInfo.groupCapability, buffer, &offset);
5031                     CsrMemCpyDes(primitive->scanResults[i1].deviceInfo.groupInfo.p2pDeviceAddress.a, buffer, &offset, ((u16) (6)));
5032                     CsrUint8Des((u8 *) &primitive->scanResults[i1].deviceInfo.groupInfo.p2pClientInfoCount, buffer, &offset);
5033                     primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo = NULL;
5034                     if (primitive->scanResults[i1].deviceInfo.groupInfo.p2pClientInfoCount)
5035                     {
5036                         primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo = kmalloc(sizeof(CsrWifiSmeP2pClientInfoType) * primitive->scanResults[i1].deviceInfo.groupInfo.p2pClientInfoCount, GFP_KERNEL);
5037                     }
5038                     {
5039                         u16 i4;
5040                         for (i4 = 0; i4 < primitive->scanResults[i1].deviceInfo.groupInfo.p2pClientInfoCount; i4++)
5041                         {
5042                             CsrMemCpyDes(primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].p2PClientInterfaceAddress.a, buffer, &offset, ((u16) (6)));
5043                             CsrMemCpyDes(primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceAddress.a, buffer, &offset, ((u16) (6)));
5044                             CsrUint16Des((u16 *) &primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.configMethods, buffer, &offset);
5045                             CsrUint8Des((u8 *) &primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.p2PDeviceCap, buffer, &offset);
5046                             CsrMemCpyDes(primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.primDeviceType.deviceDetails, buffer, &offset, ((u16) (8)));
5047                             CsrUint8Des((u8 *) &primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount, buffer, &offset);
5048                             primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType = NULL;
5049                             if (primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount)
5050                             {
5051                                 primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType = kmalloc(sizeof(CsrWifiSmeWpsDeviceType) * primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount, GFP_KERNEL);
5052                             }
5053                             {
5054                                 u16 i6;
5055                                 for (i6 = 0; i6 < primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secondaryDeviceTypeCount; i6++)
5056                                 {
5057                                     CsrMemCpyDes(primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType[i6].deviceDetails, buffer, &offset, ((u16) (8)));
5058                                 }
5059                             }
5060                             CsrMemCpyDes(primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceName, buffer, &offset, ((u16) (32)));
5061                             CsrUint8Des((u8 *) &primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.deviceNameLength, buffer, &offset);
5062                         }
5063                     }
5064                     break;
5065                 case CSR_WIFI_SME_P2P_ROLE_NONE:
5066                     CsrUint8Des((u8 *) &primitive->scanResults[i1].deviceInfo.reservedNone.empty, buffer, &offset);
5067                     break;
5068                 case CSR_WIFI_SME_P2P_ROLE_STANDALONE:
5069                     CsrMemCpyDes(primitive->scanResults[i1].deviceInfo.standalonedevInfo.deviceAddress.a, buffer, &offset, ((u16) (6)));
5070                     CsrUint16Des((u16 *) &primitive->scanResults[i1].deviceInfo.standalonedevInfo.configMethods, buffer, &offset);
5071                     CsrUint8Des((u8 *) &primitive->scanResults[i1].deviceInfo.standalonedevInfo.p2PDeviceCap, buffer, &offset);
5072                     CsrMemCpyDes(primitive->scanResults[i1].deviceInfo.standalonedevInfo.primDeviceType.deviceDetails, buffer, &offset, ((u16) (8)));
5073                     CsrUint8Des((u8 *) &primitive->scanResults[i1].deviceInfo.standalonedevInfo.secondaryDeviceTypeCount, buffer, &offset);
5074                     primitive->scanResults[i1].deviceInfo.standalonedevInfo.secDeviceType = NULL;
5075                     if (primitive->scanResults[i1].deviceInfo.standalonedevInfo.secondaryDeviceTypeCount)
5076                     {
5077                         primitive->scanResults[i1].deviceInfo.standalonedevInfo.secDeviceType = kmalloc(sizeof(CsrWifiSmeWpsDeviceType) * primitive->scanResults[i1].deviceInfo.standalonedevInfo.secondaryDeviceTypeCount, GFP_KERNEL);
5078                     }
5079                     {
5080                         u16 i4;
5081                         for (i4 = 0; i4 < primitive->scanResults[i1].deviceInfo.standalonedevInfo.secondaryDeviceTypeCount; i4++)
5082                         {
5083                             CsrMemCpyDes(primitive->scanResults[i1].deviceInfo.standalonedevInfo.secDeviceType[i4].deviceDetails, buffer, &offset, ((u16) (8)));
5084                         }
5085                     }
5086                     CsrMemCpyDes(primitive->scanResults[i1].deviceInfo.standalonedevInfo.deviceName, buffer, &offset, ((u16) (32)));
5087                     CsrUint8Des((u8 *) &primitive->scanResults[i1].deviceInfo.standalonedevInfo.deviceNameLength, buffer, &offset);
5088                     break;
5089                 default:
5090                     break;
5091             }
5092         }
5093     }
5094
5095     return primitive;
5096 }
5097
5098
5099 void CsrWifiSmeScanResultsGetCfmSerFree(void *voidPrimitivePointer)
5100 {
5101     CsrWifiSmeScanResultsGetCfm *primitive = (CsrWifiSmeScanResultsGetCfm *) voidPrimitivePointer;
5102     {
5103         u16 i1;
5104         for (i1 = 0; i1 < primitive->scanResultsCount; i1++)
5105         {
5106             kfree(primitive->scanResults[i1].informationElements);
5107             switch (primitive->scanResults[i1].p2pDeviceRole)
5108             {
5109                 case CSR_WIFI_SME_P2P_ROLE_GO:
5110                 {
5111                     u16 i4;
5112                     for (i4 = 0; i4 < primitive->scanResults[i1].deviceInfo.groupInfo.p2pClientInfoCount; i4++)
5113                     {
5114                         kfree(primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo[i4].clientDeviceInfo.secDeviceType);
5115                     }
5116                 }
5117                     kfree(primitive->scanResults[i1].deviceInfo.groupInfo.p2PClientInfo);
5118                     break;
5119                 case CSR_WIFI_SME_P2P_ROLE_STANDALONE:
5120                     kfree(primitive->scanResults[i1].deviceInfo.standalonedevInfo.secDeviceType);
5121                     break;
5122                 default:
5123                     break;
5124             }
5125         }
5126     }
5127     kfree(primitive->scanResults);
5128     kfree(primitive);
5129 }
5130
5131
5132 size_t CsrWifiSmeSmeStaConfigGetCfmSizeof(void *msg)
5133 {
5134     size_t bufferSize = 2;
5135
5136     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 13) */
5137     bufferSize += 2; /* u16 primitive->interfaceTag */
5138     bufferSize += 2; /* CsrResult primitive->status */
5139     bufferSize += 1; /* u8 primitive->smeConfig.connectionQualityRssiChangeTrigger */
5140     bufferSize += 1; /* u8 primitive->smeConfig.connectionQualitySnrChangeTrigger */
5141     bufferSize += 1; /* CsrWifiSmeWmmModeMask primitive->smeConfig.wmmModeMask */
5142     bufferSize += 1; /* CsrWifiSmeRadioIF primitive->smeConfig.ifIndex */
5143     bufferSize += 1; /* u8 primitive->smeConfig.allowUnicastUseGroupCipher */
5144     bufferSize += 1; /* u8 primitive->smeConfig.enableOpportunisticKeyCaching */
5145     return bufferSize;
5146 }
5147
5148
5149 u8* CsrWifiSmeSmeStaConfigGetCfmSer(u8 *ptr, size_t *len, void *msg)
5150 {
5151     CsrWifiSmeSmeStaConfigGetCfm *primitive = (CsrWifiSmeSmeStaConfigGetCfm *)msg;
5152     *len = 0;
5153     CsrUint16Ser(ptr, len, primitive->common.type);
5154     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
5155     CsrUint16Ser(ptr, len, (u16) primitive->status);
5156     CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.connectionQualityRssiChangeTrigger);
5157     CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.connectionQualitySnrChangeTrigger);
5158     CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.wmmModeMask);
5159     CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.ifIndex);
5160     CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.allowUnicastUseGroupCipher);
5161     CsrUint8Ser(ptr, len, (u8) primitive->smeConfig.enableOpportunisticKeyCaching);
5162     return(ptr);
5163 }
5164
5165
5166 void* CsrWifiSmeSmeStaConfigGetCfmDes(u8 *buffer, size_t length)
5167 {
5168     CsrWifiSmeSmeStaConfigGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeSmeStaConfigGetCfm), GFP_KERNEL);
5169     size_t offset;
5170     offset = 0;
5171
5172     CsrUint16Des(&primitive->common.type, buffer, &offset);
5173     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
5174     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
5175     CsrUint8Des((u8 *) &primitive->smeConfig.connectionQualityRssiChangeTrigger, buffer, &offset);
5176     CsrUint8Des((u8 *) &primitive->smeConfig.connectionQualitySnrChangeTrigger, buffer, &offset);
5177     CsrUint8Des((u8 *) &primitive->smeConfig.wmmModeMask, buffer, &offset);
5178     CsrUint8Des((u8 *) &primitive->smeConfig.ifIndex, buffer, &offset);
5179     CsrUint8Des((u8 *) &primitive->smeConfig.allowUnicastUseGroupCipher, buffer, &offset);
5180     CsrUint8Des((u8 *) &primitive->smeConfig.enableOpportunisticKeyCaching, buffer, &offset);
5181
5182     return primitive;
5183 }
5184
5185
5186 size_t CsrWifiSmeSmeStaConfigSetCfmSizeof(void *msg)
5187 {
5188     size_t bufferSize = 2;
5189
5190     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 7) */
5191     bufferSize += 2; /* u16 primitive->interfaceTag */
5192     bufferSize += 2; /* CsrResult primitive->status */
5193     return bufferSize;
5194 }
5195
5196
5197 u8* CsrWifiSmeSmeStaConfigSetCfmSer(u8 *ptr, size_t *len, void *msg)
5198 {
5199     CsrWifiSmeSmeStaConfigSetCfm *primitive = (CsrWifiSmeSmeStaConfigSetCfm *)msg;
5200     *len = 0;
5201     CsrUint16Ser(ptr, len, primitive->common.type);
5202     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
5203     CsrUint16Ser(ptr, len, (u16) primitive->status);
5204     return(ptr);
5205 }
5206
5207
5208 void* CsrWifiSmeSmeStaConfigSetCfmDes(u8 *buffer, size_t length)
5209 {
5210     CsrWifiSmeSmeStaConfigSetCfm *primitive = kmalloc(sizeof(CsrWifiSmeSmeStaConfigSetCfm), GFP_KERNEL);
5211     size_t offset;
5212     offset = 0;
5213
5214     CsrUint16Des(&primitive->common.type, buffer, &offset);
5215     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
5216     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
5217
5218     return primitive;
5219 }
5220
5221
5222 size_t CsrWifiSmeStationMacAddressGetCfmSizeof(void *msg)
5223 {
5224     size_t bufferSize = 2;
5225
5226     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 17) */
5227     bufferSize += 2; /* CsrResult primitive->status */
5228     {
5229         u16 i1;
5230         for (i1 = 0; i1 < 2; i1++)
5231         {
5232             bufferSize += 6; /* u8 primitive->stationMacAddress[i1].a[6] */
5233         }
5234     }
5235     return bufferSize;
5236 }
5237
5238
5239 u8* CsrWifiSmeStationMacAddressGetCfmSer(u8 *ptr, size_t *len, void *msg)
5240 {
5241     CsrWifiSmeStationMacAddressGetCfm *primitive = (CsrWifiSmeStationMacAddressGetCfm *)msg;
5242     *len = 0;
5243     CsrUint16Ser(ptr, len, primitive->common.type);
5244     CsrUint16Ser(ptr, len, (u16) primitive->status);
5245     {
5246         u16 i1;
5247         for (i1 = 0; i1 < 2; i1++)
5248         {
5249             CsrMemCpySer(ptr, len, (const void *) primitive->stationMacAddress[i1].a, ((u16) (6)));
5250         }
5251     }
5252     return(ptr);
5253 }
5254
5255
5256 void* CsrWifiSmeStationMacAddressGetCfmDes(u8 *buffer, size_t length)
5257 {
5258     CsrWifiSmeStationMacAddressGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeStationMacAddressGetCfm), GFP_KERNEL);
5259     size_t offset;
5260     offset = 0;
5261
5262     CsrUint16Des(&primitive->common.type, buffer, &offset);
5263     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
5264     {
5265         u16 i1;
5266         for (i1 = 0; i1 < 2; i1++)
5267         {
5268             CsrMemCpyDes(primitive->stationMacAddress[i1].a, buffer, &offset, ((u16) (6)));
5269         }
5270     }
5271
5272     return primitive;
5273 }
5274
5275
5276 size_t CsrWifiSmeTspecIndSizeof(void *msg)
5277 {
5278     CsrWifiSmeTspecInd *primitive = (CsrWifiSmeTspecInd *) msg;
5279     size_t bufferSize = 2;
5280
5281     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 13) */
5282     bufferSize += 2;                      /* u16 primitive->interfaceTag */
5283     bufferSize += 4;                      /* u32 primitive->transactionId */
5284     bufferSize += 1;                      /* CsrWifiSmeTspecResultCode primitive->tspecResultCode */
5285     bufferSize += 2;                      /* u16 primitive->tspecLength */
5286     bufferSize += primitive->tspecLength; /* u8 primitive->tspec */
5287     return bufferSize;
5288 }
5289
5290
5291 u8* CsrWifiSmeTspecIndSer(u8 *ptr, size_t *len, void *msg)
5292 {
5293     CsrWifiSmeTspecInd *primitive = (CsrWifiSmeTspecInd *)msg;
5294     *len = 0;
5295     CsrUint16Ser(ptr, len, primitive->common.type);
5296     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
5297     CsrUint32Ser(ptr, len, (u32) primitive->transactionId);
5298     CsrUint8Ser(ptr, len, (u8) primitive->tspecResultCode);
5299     CsrUint16Ser(ptr, len, (u16) primitive->tspecLength);
5300     if (primitive->tspecLength)
5301     {
5302         CsrMemCpySer(ptr, len, (const void *) primitive->tspec, ((u16) (primitive->tspecLength)));
5303     }
5304     return(ptr);
5305 }
5306
5307
5308 void* CsrWifiSmeTspecIndDes(u8 *buffer, size_t length)
5309 {
5310     CsrWifiSmeTspecInd *primitive = kmalloc(sizeof(CsrWifiSmeTspecInd), GFP_KERNEL);
5311     size_t offset;
5312     offset = 0;
5313
5314     CsrUint16Des(&primitive->common.type, buffer, &offset);
5315     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
5316     CsrUint32Des((u32 *) &primitive->transactionId, buffer, &offset);
5317     CsrUint8Des((u8 *) &primitive->tspecResultCode, buffer, &offset);
5318     CsrUint16Des((u16 *) &primitive->tspecLength, buffer, &offset);
5319     if (primitive->tspecLength)
5320     {
5321         primitive->tspec = kmalloc(primitive->tspecLength, GFP_KERNEL);
5322         CsrMemCpyDes(primitive->tspec, buffer, &offset, ((u16) (primitive->tspecLength)));
5323     }
5324     else
5325     {
5326         primitive->tspec = NULL;
5327     }
5328
5329     return primitive;
5330 }
5331
5332
5333 void CsrWifiSmeTspecIndSerFree(void *voidPrimitivePointer)
5334 {
5335     CsrWifiSmeTspecInd *primitive = (CsrWifiSmeTspecInd *) voidPrimitivePointer;
5336     kfree(primitive->tspec);
5337     kfree(primitive);
5338 }
5339
5340
5341 size_t CsrWifiSmeTspecCfmSizeof(void *msg)
5342 {
5343     CsrWifiSmeTspecCfm *primitive = (CsrWifiSmeTspecCfm *) msg;
5344     size_t bufferSize = 2;
5345
5346     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 15) */
5347     bufferSize += 2;                      /* u16 primitive->interfaceTag */
5348     bufferSize += 2;                      /* CsrResult primitive->status */
5349     bufferSize += 4;                      /* u32 primitive->transactionId */
5350     bufferSize += 1;                      /* CsrWifiSmeTspecResultCode primitive->tspecResultCode */
5351     bufferSize += 2;                      /* u16 primitive->tspecLength */
5352     bufferSize += primitive->tspecLength; /* u8 primitive->tspec */
5353     return bufferSize;
5354 }
5355
5356
5357 u8* CsrWifiSmeTspecCfmSer(u8 *ptr, size_t *len, void *msg)
5358 {
5359     CsrWifiSmeTspecCfm *primitive = (CsrWifiSmeTspecCfm *)msg;
5360     *len = 0;
5361     CsrUint16Ser(ptr, len, primitive->common.type);
5362     CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
5363     CsrUint16Ser(ptr, len, (u16) primitive->status);
5364     CsrUint32Ser(ptr, len, (u32) primitive->transactionId);
5365     CsrUint8Ser(ptr, len, (u8) primitive->tspecResultCode);
5366     CsrUint16Ser(ptr, len, (u16) primitive->tspecLength);
5367     if (primitive->tspecLength)
5368     {
5369         CsrMemCpySer(ptr, len, (const void *) primitive->tspec, ((u16) (primitive->tspecLength)));
5370     }
5371     return(ptr);
5372 }
5373
5374
5375 void* CsrWifiSmeTspecCfmDes(u8 *buffer, size_t length)
5376 {
5377     CsrWifiSmeTspecCfm *primitive = kmalloc(sizeof(CsrWifiSmeTspecCfm), GFP_KERNEL);
5378     size_t offset;
5379     offset = 0;
5380
5381     CsrUint16Des(&primitive->common.type, buffer, &offset);
5382     CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
5383     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
5384     CsrUint32Des((u32 *) &primitive->transactionId, buffer, &offset);
5385     CsrUint8Des((u8 *) &primitive->tspecResultCode, buffer, &offset);
5386     CsrUint16Des((u16 *) &primitive->tspecLength, buffer, &offset);
5387     if (primitive->tspecLength)
5388     {
5389         primitive->tspec = kmalloc(primitive->tspecLength, GFP_KERNEL);
5390         CsrMemCpyDes(primitive->tspec, buffer, &offset, ((u16) (primitive->tspecLength)));
5391     }
5392     else
5393     {
5394         primitive->tspec = NULL;
5395     }
5396
5397     return primitive;
5398 }
5399
5400
5401 void CsrWifiSmeTspecCfmSerFree(void *voidPrimitivePointer)
5402 {
5403     CsrWifiSmeTspecCfm *primitive = (CsrWifiSmeTspecCfm *) voidPrimitivePointer;
5404     kfree(primitive->tspec);
5405     kfree(primitive);
5406 }
5407
5408
5409 size_t CsrWifiSmeVersionsGetCfmSizeof(void *msg)
5410 {
5411     CsrWifiSmeVersionsGetCfm *primitive = (CsrWifiSmeVersionsGetCfm *) msg;
5412     size_t bufferSize = 2;
5413
5414     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 33) */
5415     bufferSize += 2;                                                                                    /* CsrResult primitive->status */
5416     bufferSize += 4;                                                                                    /* u32 primitive->versions.chipId */
5417     bufferSize += 4;                                                                                    /* u32 primitive->versions.chipVersion */
5418     bufferSize += 4;                                                                                    /* u32 primitive->versions.firmwareBuild */
5419     bufferSize += 4;                                                                                    /* u32 primitive->versions.firmwarePatch */
5420     bufferSize += 4;                                                                                    /* u32 primitive->versions.firmwareHip */
5421     bufferSize += (primitive->versions.routerBuild ? strlen(primitive->versions.routerBuild) : 0) + 1;  /* char* primitive->versions.routerBuild (0 byte len + 1 for NULL Term) */
5422     bufferSize += 4;                                                                                    /* u32 primitive->versions.routerHip */
5423     bufferSize += (primitive->versions.smeBuild ? strlen(primitive->versions.smeBuild) : 0) + 1;        /* char* primitive->versions.smeBuild (0 byte len + 1 for NULL Term) */
5424     bufferSize += 4;                                                                                    /* u32 primitive->versions.smeHip */
5425     return bufferSize;
5426 }
5427
5428
5429 u8* CsrWifiSmeVersionsGetCfmSer(u8 *ptr, size_t *len, void *msg)
5430 {
5431     CsrWifiSmeVersionsGetCfm *primitive = (CsrWifiSmeVersionsGetCfm *)msg;
5432     *len = 0;
5433     CsrUint16Ser(ptr, len, primitive->common.type);
5434     CsrUint16Ser(ptr, len, (u16) primitive->status);
5435     CsrUint32Ser(ptr, len, (u32) primitive->versions.chipId);
5436     CsrUint32Ser(ptr, len, (u32) primitive->versions.chipVersion);
5437     CsrUint32Ser(ptr, len, (u32) primitive->versions.firmwareBuild);
5438     CsrUint32Ser(ptr, len, (u32) primitive->versions.firmwarePatch);
5439     CsrUint32Ser(ptr, len, (u32) primitive->versions.firmwareHip);
5440     CsrCharStringSer(ptr, len, primitive->versions.routerBuild);
5441     CsrUint32Ser(ptr, len, (u32) primitive->versions.routerHip);
5442     CsrCharStringSer(ptr, len, primitive->versions.smeBuild);
5443     CsrUint32Ser(ptr, len, (u32) primitive->versions.smeHip);
5444     return(ptr);
5445 }
5446
5447
5448 void* CsrWifiSmeVersionsGetCfmDes(u8 *buffer, size_t length)
5449 {
5450     CsrWifiSmeVersionsGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeVersionsGetCfm), GFP_KERNEL);
5451     size_t offset;
5452     offset = 0;
5453
5454     CsrUint16Des(&primitive->common.type, buffer, &offset);
5455     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
5456     CsrUint32Des((u32 *) &primitive->versions.chipId, buffer, &offset);
5457     CsrUint32Des((u32 *) &primitive->versions.chipVersion, buffer, &offset);
5458     CsrUint32Des((u32 *) &primitive->versions.firmwareBuild, buffer, &offset);
5459     CsrUint32Des((u32 *) &primitive->versions.firmwarePatch, buffer, &offset);
5460     CsrUint32Des((u32 *) &primitive->versions.firmwareHip, buffer, &offset);
5461     CsrCharStringDes(&primitive->versions.routerBuild, buffer, &offset);
5462     CsrUint32Des((u32 *) &primitive->versions.routerHip, buffer, &offset);
5463     CsrCharStringDes(&primitive->versions.smeBuild, buffer, &offset);
5464     CsrUint32Des((u32 *) &primitive->versions.smeHip, buffer, &offset);
5465
5466     return primitive;
5467 }
5468
5469
5470 void CsrWifiSmeVersionsGetCfmSerFree(void *voidPrimitivePointer)
5471 {
5472     CsrWifiSmeVersionsGetCfm *primitive = (CsrWifiSmeVersionsGetCfm *) voidPrimitivePointer;
5473     kfree(primitive->versions.routerBuild);
5474     kfree(primitive->versions.smeBuild);
5475     kfree(primitive);
5476 }
5477
5478
5479 size_t CsrWifiSmeCloakedSsidsGetCfmSizeof(void *msg)
5480 {
5481     CsrWifiSmeCloakedSsidsGetCfm *primitive = (CsrWifiSmeCloakedSsidsGetCfm *) msg;
5482     size_t bufferSize = 2;
5483
5484     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 39) */
5485     bufferSize += 2; /* CsrResult primitive->status */
5486     bufferSize += 1; /* u8 primitive->cloakedSsids.cloakedSsidsCount */
5487     {
5488         u16 i2;
5489         for (i2 = 0; i2 < primitive->cloakedSsids.cloakedSsidsCount; i2++)
5490         {
5491             bufferSize += 32; /* u8 primitive->cloakedSsids.cloakedSsids[i2].ssid[32] */
5492             bufferSize += 1;  /* u8 primitive->cloakedSsids.cloakedSsids[i2].length */
5493         }
5494     }
5495     return bufferSize;
5496 }
5497
5498
5499 u8* CsrWifiSmeCloakedSsidsGetCfmSer(u8 *ptr, size_t *len, void *msg)
5500 {
5501     CsrWifiSmeCloakedSsidsGetCfm *primitive = (CsrWifiSmeCloakedSsidsGetCfm *)msg;
5502     *len = 0;
5503     CsrUint16Ser(ptr, len, primitive->common.type);
5504     CsrUint16Ser(ptr, len, (u16) primitive->status);
5505     CsrUint8Ser(ptr, len, (u8) primitive->cloakedSsids.cloakedSsidsCount);
5506     {
5507         u16 i2;
5508         for (i2 = 0; i2 < primitive->cloakedSsids.cloakedSsidsCount; i2++)
5509         {
5510             CsrMemCpySer(ptr, len, (const void *) primitive->cloakedSsids.cloakedSsids[i2].ssid, ((u16) (32)));
5511             CsrUint8Ser(ptr, len, (u8) primitive->cloakedSsids.cloakedSsids[i2].length);
5512         }
5513     }
5514     return(ptr);
5515 }
5516
5517
5518 void* CsrWifiSmeCloakedSsidsGetCfmDes(u8 *buffer, size_t length)
5519 {
5520     CsrWifiSmeCloakedSsidsGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeCloakedSsidsGetCfm), GFP_KERNEL);
5521     size_t offset;
5522     offset = 0;
5523
5524     CsrUint16Des(&primitive->common.type, buffer, &offset);
5525     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
5526     CsrUint8Des((u8 *) &primitive->cloakedSsids.cloakedSsidsCount, buffer, &offset);
5527     primitive->cloakedSsids.cloakedSsids = NULL;
5528     if (primitive->cloakedSsids.cloakedSsidsCount)
5529     {
5530         primitive->cloakedSsids.cloakedSsids = kmalloc(sizeof(CsrWifiSsid) * primitive->cloakedSsids.cloakedSsidsCount, GFP_KERNEL);
5531     }
5532     {
5533         u16 i2;
5534         for (i2 = 0; i2 < primitive->cloakedSsids.cloakedSsidsCount; i2++)
5535         {
5536             CsrMemCpyDes(primitive->cloakedSsids.cloakedSsids[i2].ssid, buffer, &offset, ((u16) (32)));
5537             CsrUint8Des((u8 *) &primitive->cloakedSsids.cloakedSsids[i2].length, buffer, &offset);
5538         }
5539     }
5540
5541     return primitive;
5542 }
5543
5544
5545 void CsrWifiSmeCloakedSsidsGetCfmSerFree(void *voidPrimitivePointer)
5546 {
5547     CsrWifiSmeCloakedSsidsGetCfm *primitive = (CsrWifiSmeCloakedSsidsGetCfm *) voidPrimitivePointer;
5548     kfree(primitive->cloakedSsids.cloakedSsids);
5549     kfree(primitive);
5550 }
5551
5552
5553 size_t CsrWifiSmeWifiOnIndSizeof(void *msg)
5554 {
5555     size_t bufferSize = 2;
5556
5557     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 9) */
5558     bufferSize += 6; /* u8 primitive->address.a[6] */
5559     return bufferSize;
5560 }
5561
5562
5563 u8* CsrWifiSmeWifiOnIndSer(u8 *ptr, size_t *len, void *msg)
5564 {
5565     CsrWifiSmeWifiOnInd *primitive = (CsrWifiSmeWifiOnInd *)msg;
5566     *len = 0;
5567     CsrUint16Ser(ptr, len, primitive->common.type);
5568     CsrMemCpySer(ptr, len, (const void *) primitive->address.a, ((u16) (6)));
5569     return(ptr);
5570 }
5571
5572
5573 void* CsrWifiSmeWifiOnIndDes(u8 *buffer, size_t length)
5574 {
5575     CsrWifiSmeWifiOnInd *primitive = kmalloc(sizeof(CsrWifiSmeWifiOnInd), GFP_KERNEL);
5576     size_t offset;
5577     offset = 0;
5578
5579     CsrUint16Des(&primitive->common.type, buffer, &offset);
5580     CsrMemCpyDes(primitive->address.a, buffer, &offset, ((u16) (6)));
5581
5582     return primitive;
5583 }
5584
5585
5586 size_t CsrWifiSmeSmeCommonConfigGetCfmSizeof(void *msg)
5587 {
5588     size_t bufferSize = 2;
5589
5590     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 10) */
5591     bufferSize += 2; /* CsrResult primitive->status */
5592     bufferSize += 1; /* CsrWifiSme80211dTrustLevel primitive->deviceConfig.trustLevel */
5593     bufferSize += 2; /* u8 primitive->deviceConfig.countryCode[2] */
5594     bufferSize += 1; /* CsrWifiSmeFirmwareDriverInterface primitive->deviceConfig.firmwareDriverInterface */
5595     bufferSize += 1; /* u8 primitive->deviceConfig.enableStrictDraftN */
5596     return bufferSize;
5597 }
5598
5599
5600 u8* CsrWifiSmeSmeCommonConfigGetCfmSer(u8 *ptr, size_t *len, void *msg)
5601 {
5602     CsrWifiSmeSmeCommonConfigGetCfm *primitive = (CsrWifiSmeSmeCommonConfigGetCfm *)msg;
5603     *len = 0;
5604     CsrUint16Ser(ptr, len, primitive->common.type);
5605     CsrUint16Ser(ptr, len, (u16) primitive->status);
5606     CsrUint8Ser(ptr, len, (u8) primitive->deviceConfig.trustLevel);
5607     CsrMemCpySer(ptr, len, (const void *) primitive->deviceConfig.countryCode, ((u16) (2)));
5608     CsrUint8Ser(ptr, len, (u8) primitive->deviceConfig.firmwareDriverInterface);
5609     CsrUint8Ser(ptr, len, (u8) primitive->deviceConfig.enableStrictDraftN);
5610     return(ptr);
5611 }
5612
5613
5614 void* CsrWifiSmeSmeCommonConfigGetCfmDes(u8 *buffer, size_t length)
5615 {
5616     CsrWifiSmeSmeCommonConfigGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeSmeCommonConfigGetCfm), GFP_KERNEL);
5617     size_t offset;
5618     offset = 0;
5619
5620     CsrUint16Des(&primitive->common.type, buffer, &offset);
5621     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
5622     CsrUint8Des((u8 *) &primitive->deviceConfig.trustLevel, buffer, &offset);
5623     CsrMemCpyDes(primitive->deviceConfig.countryCode, buffer, &offset, ((u16) (2)));
5624     CsrUint8Des((u8 *) &primitive->deviceConfig.firmwareDriverInterface, buffer, &offset);
5625     CsrUint8Des((u8 *) &primitive->deviceConfig.enableStrictDraftN, buffer, &offset);
5626
5627     return primitive;
5628 }
5629
5630
5631 size_t CsrWifiSmeInterfaceCapabilityGetCfmSizeof(void *msg)
5632 {
5633     size_t bufferSize = 2;
5634
5635     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 9) */
5636     bufferSize += 2; /* CsrResult primitive->status */
5637     bufferSize += 2; /* u16 primitive->numInterfaces */
5638     bufferSize += 2; /* u8 primitive->capBitmap[2] */
5639     return bufferSize;
5640 }
5641
5642
5643 u8* CsrWifiSmeInterfaceCapabilityGetCfmSer(u8 *ptr, size_t *len, void *msg)
5644 {
5645     CsrWifiSmeInterfaceCapabilityGetCfm *primitive = (CsrWifiSmeInterfaceCapabilityGetCfm *)msg;
5646     *len = 0;
5647     CsrUint16Ser(ptr, len, primitive->common.type);
5648     CsrUint16Ser(ptr, len, (u16) primitive->status);
5649     CsrUint16Ser(ptr, len, (u16) primitive->numInterfaces);
5650     CsrMemCpySer(ptr, len, (const void *) primitive->capBitmap, ((u16) (2)));
5651     return(ptr);
5652 }
5653
5654
5655 void* CsrWifiSmeInterfaceCapabilityGetCfmDes(u8 *buffer, size_t length)
5656 {
5657     CsrWifiSmeInterfaceCapabilityGetCfm *primitive = kmalloc(sizeof(CsrWifiSmeInterfaceCapabilityGetCfm), GFP_KERNEL);
5658     size_t offset;
5659     offset = 0;
5660
5661     CsrUint16Des(&primitive->common.type, buffer, &offset);
5662     CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
5663     CsrUint16Des((u16 *) &primitive->numInterfaces, buffer, &offset);
5664     CsrMemCpyDes(primitive->capBitmap, buffer, &offset, ((u16) (2)));
5665
5666     return primitive;
5667 }
5668
5669
5670 size_t CsrWifiSmeErrorIndSizeof(void *msg)
5671 {
5672     CsrWifiSmeErrorInd *primitive = (CsrWifiSmeErrorInd *) msg;
5673     size_t bufferSize = 2;
5674
5675     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 3) */
5676     bufferSize += (primitive->errorMessage ? strlen(primitive->errorMessage) : 0) + 1; /* char* primitive->errorMessage (0 byte len + 1 for NULL Term) */
5677     return bufferSize;
5678 }
5679
5680
5681 u8* CsrWifiSmeErrorIndSer(u8 *ptr, size_t *len, void *msg)
5682 {
5683     CsrWifiSmeErrorInd *primitive = (CsrWifiSmeErrorInd *)msg;
5684     *len = 0;
5685     CsrUint16Ser(ptr, len, primitive->common.type);
5686     CsrCharStringSer(ptr, len, primitive->errorMessage);
5687     return(ptr);
5688 }
5689
5690
5691 void* CsrWifiSmeErrorIndDes(u8 *buffer, size_t length)
5692 {
5693     CsrWifiSmeErrorInd *primitive = kmalloc(sizeof(CsrWifiSmeErrorInd), GFP_KERNEL);
5694     size_t offset;
5695     offset = 0;
5696
5697     CsrUint16Des(&primitive->common.type, buffer, &offset);
5698     CsrCharStringDes(&primitive->errorMessage, buffer, &offset);
5699
5700     return primitive;
5701 }
5702
5703
5704 void CsrWifiSmeErrorIndSerFree(void *voidPrimitivePointer)
5705 {
5706     CsrWifiSmeErrorInd *primitive = (CsrWifiSmeErrorInd *) voidPrimitivePointer;
5707     kfree(primitive->errorMessage);
5708     kfree(primitive);
5709 }
5710
5711
5712 size_t CsrWifiSmeInfoIndSizeof(void *msg)
5713 {
5714     CsrWifiSmeInfoInd *primitive = (CsrWifiSmeInfoInd *) msg;
5715     size_t bufferSize = 2;
5716
5717     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 3) */
5718     bufferSize += (primitive->infoMessage ? strlen(primitive->infoMessage) : 0) + 1; /* char* primitive->infoMessage (0 byte len + 1 for NULL Term) */
5719     return bufferSize;
5720 }
5721
5722
5723 u8* CsrWifiSmeInfoIndSer(u8 *ptr, size_t *len, void *msg)
5724 {
5725     CsrWifiSmeInfoInd *primitive = (CsrWifiSmeInfoInd *)msg;
5726     *len = 0;
5727     CsrUint16Ser(ptr, len, primitive->common.type);
5728     CsrCharStringSer(ptr, len, primitive->infoMessage);
5729     return(ptr);
5730 }
5731
5732
5733 void* CsrWifiSmeInfoIndDes(u8 *buffer, size_t length)
5734 {
5735     CsrWifiSmeInfoInd *primitive = kmalloc(sizeof(CsrWifiSmeInfoInd), GFP_KERNEL);
5736     size_t offset;
5737     offset = 0;
5738
5739     CsrUint16Des(&primitive->common.type, buffer, &offset);
5740     CsrCharStringDes(&primitive->infoMessage, buffer, &offset);
5741
5742     return primitive;
5743 }
5744
5745
5746 void CsrWifiSmeInfoIndSerFree(void *voidPrimitivePointer)
5747 {
5748     CsrWifiSmeInfoInd *primitive = (CsrWifiSmeInfoInd *) voidPrimitivePointer;
5749     kfree(primitive->infoMessage);
5750     kfree(primitive);
5751 }
5752
5753
5754 size_t CsrWifiSmeCoreDumpIndSizeof(void *msg)
5755 {
5756     CsrWifiSmeCoreDumpInd *primitive = (CsrWifiSmeCoreDumpInd *) msg;
5757     size_t bufferSize = 2;
5758
5759     /* Calculate the Size of the Serialised Data. Could be more efficient (Try 8) */
5760     bufferSize += 4;                     /* u32 primitive->dataLength */
5761     bufferSize += primitive->dataLength; /* u8 primitive->data */
5762     return bufferSize;
5763 }
5764
5765
5766 u8* CsrWifiSmeCoreDumpIndSer(u8 *ptr, size_t *len, void *msg)
5767 {
5768     CsrWifiSmeCoreDumpInd *primitive = (CsrWifiSmeCoreDumpInd *)msg;
5769     *len = 0;
5770     CsrUint16Ser(ptr, len, primitive->common.type);
5771     CsrUint32Ser(ptr, len, (u32) primitive->dataLength);
5772     if (primitive->dataLength)
5773     {
5774         CsrMemCpySer(ptr, len, (const void *) primitive->data, ((u16) (primitive->dataLength)));
5775     }
5776     return(ptr);
5777 }
5778
5779
5780 void* CsrWifiSmeCoreDumpIndDes(u8 *buffer, size_t length)
5781 {
5782     CsrWifiSmeCoreDumpInd *primitive = kmalloc(sizeof(CsrWifiSmeCoreDumpInd), GFP_KERNEL);
5783     size_t offset;
5784     offset = 0;
5785
5786     CsrUint16Des(&primitive->common.type, buffer, &offset);
5787     CsrUint32Des((u32 *) &primitive->dataLength, buffer, &offset);
5788     if (primitive->dataLength)
5789     {
5790         primitive->data = kmalloc(primitive->dataLength, GFP_KERNEL);
5791         CsrMemCpyDes(primitive->data, buffer, &offset, ((u16) (primitive->dataLength)));
5792     }
5793     else
5794     {
5795         primitive->data = NULL;
5796     }
5797
5798     return primitive;
5799 }
5800
5801
5802 void CsrWifiSmeCoreDumpIndSerFree(void *voidPrimitivePointer)
5803 {
5804     CsrWifiSmeCoreDumpInd *primitive = (CsrWifiSmeCoreDumpInd *) voidPrimitivePointer;
5805     kfree(primitive->data);
5806     kfree(primitive);
5807 }
5808
5809