blob: 1a901a70d1958846404116ad3d53caae661e76e0 [file] [log] [blame]
Lauri Hintsalafa6173a2012-06-21 13:29:12 +03001/*****************************************************************************
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. */
Greg Kroah-Hartman4bcb20f2012-07-20 14:56:57 -070012#include <linux/string.h>
Greg Kroah-Hartman55a27052012-07-20 15:59:12 -070013#include <linux/slab.h>
Lauri Hintsalafa6173a2012-06-21 13:29:12 +030014#include "csr_msgconv.h"
Lauri Hintsalafa6173a2012-06-21 13:29:12 +030015
16#ifdef CSR_WIFI_NME_ENABLE
17#ifdef CSR_WIFI_AP_ENABLE
18
19#include "csr_wifi_nme_ap_prim.h"
20#include "csr_wifi_nme_ap_serialize.h"
21
22void CsrWifiNmeApPfree(void *ptr)
23{
Greg Kroah-Hartman55a27052012-07-20 15:59:12 -070024 kfree(ptr);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +030025}
26
27
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -070028size_t CsrWifiNmeApConfigSetReqSizeof(void *msg)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +030029{
30 CsrWifiNmeApConfigSetReq *primitive = (CsrWifiNmeApConfigSetReq *) msg;
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -070031 size_t bufferSize = 2;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +030032
33 /* Calculate the Size of the Serialised Data. Could be more efficient (Try 104) */
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -070034 bufferSize += 2; /* u16 primitive->apConfig.apGroupkeyTimeout */
Greg Kroah-Hartman5379b132012-07-20 12:25:15 -070035 bufferSize += 1; /* u8 primitive->apConfig.apStrictGtkRekey */
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -070036 bufferSize += 2; /* u16 primitive->apConfig.apGmkTimeout */
37 bufferSize += 2; /* u16 primitive->apConfig.apResponseTimeout */
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -070038 bufferSize += 1; /* u8 primitive->apConfig.apRetransLimit */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +030039 bufferSize += 1; /* CsrWifiSmeApPhySupportMask primitive->apMacConfig.phySupportedBitmap */
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -070040 bufferSize += 2; /* u16 primitive->apMacConfig.beaconInterval */
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -070041 bufferSize += 1; /* u8 primitive->apMacConfig.dtimPeriod */
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -070042 bufferSize += 2; /* u16 primitive->apMacConfig.maxListenInterval */
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -070043 bufferSize += 1; /* u8 primitive->apMacConfig.supportedRatesCount */
44 bufferSize += 20; /* u8 primitive->apMacConfig.supportedRates[20] */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +030045 bufferSize += 1; /* CsrWifiSmePreambleType primitive->apMacConfig.preamble */
Greg Kroah-Hartman5379b132012-07-20 12:25:15 -070046 bufferSize += 1; /* u8 primitive->apMacConfig.shortSlotTimeEnabled */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +030047 bufferSize += 1; /* CsrWifiSmeCtsProtectionType primitive->apMacConfig.ctsProtectionType */
Greg Kroah-Hartman5379b132012-07-20 12:25:15 -070048 bufferSize += 1; /* u8 primitive->apMacConfig.wmmEnabled */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +030049 {
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -070050 u16 i2;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +030051 for (i2 = 0; i2 < 4; i2++)
52 {
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -070053 bufferSize += 1; /* u8 primitive->apMacConfig.wmmApParams[i2].cwMin */
54 bufferSize += 1; /* u8 primitive->apMacConfig.wmmApParams[i2].cwMax */
55 bufferSize += 1; /* u8 primitive->apMacConfig.wmmApParams[i2].aifs */
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -070056 bufferSize += 2; /* u16 primitive->apMacConfig.wmmApParams[i2].txopLimit */
Greg Kroah-Hartman5379b132012-07-20 12:25:15 -070057 bufferSize += 1; /* u8 primitive->apMacConfig.wmmApParams[i2].admissionControlMandatory */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +030058 }
59 }
60 {
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -070061 u16 i2;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +030062 for (i2 = 0; i2 < 4; i2++)
63 {
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -070064 bufferSize += 1; /* u8 primitive->apMacConfig.wmmApBcParams[i2].cwMin */
65 bufferSize += 1; /* u8 primitive->apMacConfig.wmmApBcParams[i2].cwMax */
66 bufferSize += 1; /* u8 primitive->apMacConfig.wmmApBcParams[i2].aifs */
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -070067 bufferSize += 2; /* u16 primitive->apMacConfig.wmmApBcParams[i2].txopLimit */
Greg Kroah-Hartman5379b132012-07-20 12:25:15 -070068 bufferSize += 1; /* u8 primitive->apMacConfig.wmmApBcParams[i2].admissionControlMandatory */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +030069 }
70 }
71 bufferSize += 1; /* CsrWifiSmeApAccessType primitive->apMacConfig.accessType */
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -070072 bufferSize += 1; /* u8 primitive->apMacConfig.macAddressListCount */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +030073 {
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -070074 u16 i2;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +030075 for (i2 = 0; i2 < primitive->apMacConfig.macAddressListCount; i2++)
76 {
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -070077 bufferSize += 6; /* u8 primitive->apMacConfig.macAddressList[i2].a[6] */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +030078 }
79 }
Greg Kroah-Hartman5379b132012-07-20 12:25:15 -070080 bufferSize += 1; /* u8 primitive->apMacConfig.apHtParams.greenfieldSupported */
81 bufferSize += 1; /* u8 primitive->apMacConfig.apHtParams.shortGi20MHz */
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -070082 bufferSize += 1; /* u8 primitive->apMacConfig.apHtParams.rxStbc */
Greg Kroah-Hartman5379b132012-07-20 12:25:15 -070083 bufferSize += 1; /* u8 primitive->apMacConfig.apHtParams.rifsModeAllowed */
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -070084 bufferSize += 1; /* u8 primitive->apMacConfig.apHtParams.htProtection */
Greg Kroah-Hartman5379b132012-07-20 12:25:15 -070085 bufferSize += 1; /* u8 primitive->apMacConfig.apHtParams.dualCtsProtection */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +030086 return bufferSize;
87}
88
89
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -070090u8* CsrWifiNmeApConfigSetReqSer(u8 *ptr, size_t *len, void *msg)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +030091{
92 CsrWifiNmeApConfigSetReq *primitive = (CsrWifiNmeApConfigSetReq *)msg;
93 *len = 0;
94 CsrUint16Ser(ptr, len, primitive->common.type);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -070095 CsrUint16Ser(ptr, len, (u16) primitive->apConfig.apGroupkeyTimeout);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -070096 CsrUint8Ser(ptr, len, (u8) primitive->apConfig.apStrictGtkRekey);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -070097 CsrUint16Ser(ptr, len, (u16) primitive->apConfig.apGmkTimeout);
98 CsrUint16Ser(ptr, len, (u16) primitive->apConfig.apResponseTimeout);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -070099 CsrUint8Ser(ptr, len, (u8) primitive->apConfig.apRetransLimit);
100 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.phySupportedBitmap);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700101 CsrUint16Ser(ptr, len, (u16) primitive->apMacConfig.beaconInterval);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700102 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.dtimPeriod);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700103 CsrUint16Ser(ptr, len, (u16) primitive->apMacConfig.maxListenInterval);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700104 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.supportedRatesCount);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700105 CsrMemCpySer(ptr, len, (const void *) primitive->apMacConfig.supportedRates, ((u16) (20)));
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700106 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.preamble);
107 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.shortSlotTimeEnabled);
108 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.ctsProtectionType);
109 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.wmmEnabled);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300110 {
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700111 u16 i2;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300112 for (i2 = 0; i2 < 4; i2++)
113 {
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700114 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.wmmApParams[i2].cwMin);
115 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.wmmApParams[i2].cwMax);
116 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.wmmApParams[i2].aifs);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700117 CsrUint16Ser(ptr, len, (u16) primitive->apMacConfig.wmmApParams[i2].txopLimit);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700118 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.wmmApParams[i2].admissionControlMandatory);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300119 }
120 }
121 {
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700122 u16 i2;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300123 for (i2 = 0; i2 < 4; i2++)
124 {
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700125 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.wmmApBcParams[i2].cwMin);
126 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.wmmApBcParams[i2].cwMax);
127 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.wmmApBcParams[i2].aifs);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700128 CsrUint16Ser(ptr, len, (u16) primitive->apMacConfig.wmmApBcParams[i2].txopLimit);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700129 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.wmmApBcParams[i2].admissionControlMandatory);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300130 }
131 }
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700132 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.accessType);
133 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.macAddressListCount);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300134 {
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700135 u16 i2;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300136 for (i2 = 0; i2 < primitive->apMacConfig.macAddressListCount; i2++)
137 {
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700138 CsrMemCpySer(ptr, len, (const void *) primitive->apMacConfig.macAddressList[i2].a, ((u16) (6)));
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300139 }
140 }
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700141 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.apHtParams.greenfieldSupported);
142 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.apHtParams.shortGi20MHz);
143 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.apHtParams.rxStbc);
144 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.apHtParams.rifsModeAllowed);
145 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.apHtParams.htProtection);
146 CsrUint8Ser(ptr, len, (u8) primitive->apMacConfig.apHtParams.dualCtsProtection);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300147 return(ptr);
148}
149
150
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700151void* CsrWifiNmeApConfigSetReqDes(u8 *buffer, size_t length)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300152{
Greg Kroah-Hartman786eeeb2012-07-20 16:41:09 -0700153 CsrWifiNmeApConfigSetReq *primitive = kmalloc(sizeof(CsrWifiNmeApConfigSetReq), GFP_KERNEL);
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700154 size_t offset;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300155 offset = 0;
156
157 CsrUint16Des(&primitive->common.type, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700158 CsrUint16Des((u16 *) &primitive->apConfig.apGroupkeyTimeout, buffer, &offset);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700159 CsrUint8Des((u8 *) &primitive->apConfig.apStrictGtkRekey, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700160 CsrUint16Des((u16 *) &primitive->apConfig.apGmkTimeout, buffer, &offset);
161 CsrUint16Des((u16 *) &primitive->apConfig.apResponseTimeout, buffer, &offset);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700162 CsrUint8Des((u8 *) &primitive->apConfig.apRetransLimit, buffer, &offset);
163 CsrUint8Des((u8 *) &primitive->apMacConfig.phySupportedBitmap, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700164 CsrUint16Des((u16 *) &primitive->apMacConfig.beaconInterval, buffer, &offset);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700165 CsrUint8Des((u8 *) &primitive->apMacConfig.dtimPeriod, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700166 CsrUint16Des((u16 *) &primitive->apMacConfig.maxListenInterval, buffer, &offset);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700167 CsrUint8Des((u8 *) &primitive->apMacConfig.supportedRatesCount, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700168 CsrMemCpyDes(primitive->apMacConfig.supportedRates, buffer, &offset, ((u16) (20)));
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700169 CsrUint8Des((u8 *) &primitive->apMacConfig.preamble, buffer, &offset);
170 CsrUint8Des((u8 *) &primitive->apMacConfig.shortSlotTimeEnabled, buffer, &offset);
171 CsrUint8Des((u8 *) &primitive->apMacConfig.ctsProtectionType, buffer, &offset);
172 CsrUint8Des((u8 *) &primitive->apMacConfig.wmmEnabled, buffer, &offset);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300173 {
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700174 u16 i2;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300175 for (i2 = 0; i2 < 4; i2++)
176 {
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700177 CsrUint8Des((u8 *) &primitive->apMacConfig.wmmApParams[i2].cwMin, buffer, &offset);
178 CsrUint8Des((u8 *) &primitive->apMacConfig.wmmApParams[i2].cwMax, buffer, &offset);
179 CsrUint8Des((u8 *) &primitive->apMacConfig.wmmApParams[i2].aifs, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700180 CsrUint16Des((u16 *) &primitive->apMacConfig.wmmApParams[i2].txopLimit, buffer, &offset);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700181 CsrUint8Des((u8 *) &primitive->apMacConfig.wmmApParams[i2].admissionControlMandatory, buffer, &offset);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300182 }
183 }
184 {
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700185 u16 i2;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300186 for (i2 = 0; i2 < 4; i2++)
187 {
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700188 CsrUint8Des((u8 *) &primitive->apMacConfig.wmmApBcParams[i2].cwMin, buffer, &offset);
189 CsrUint8Des((u8 *) &primitive->apMacConfig.wmmApBcParams[i2].cwMax, buffer, &offset);
190 CsrUint8Des((u8 *) &primitive->apMacConfig.wmmApBcParams[i2].aifs, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700191 CsrUint16Des((u16 *) &primitive->apMacConfig.wmmApBcParams[i2].txopLimit, buffer, &offset);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700192 CsrUint8Des((u8 *) &primitive->apMacConfig.wmmApBcParams[i2].admissionControlMandatory, buffer, &offset);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300193 }
194 }
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700195 CsrUint8Des((u8 *) &primitive->apMacConfig.accessType, buffer, &offset);
196 CsrUint8Des((u8 *) &primitive->apMacConfig.macAddressListCount, buffer, &offset);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300197 primitive->apMacConfig.macAddressList = NULL;
198 if (primitive->apMacConfig.macAddressListCount)
199 {
Greg Kroah-Hartman786eeeb2012-07-20 16:41:09 -0700200 primitive->apMacConfig.macAddressList = kmalloc(sizeof(CsrWifiMacAddress) * primitive->apMacConfig.macAddressListCount, GFP_KERNEL);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300201 }
202 {
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700203 u16 i2;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300204 for (i2 = 0; i2 < primitive->apMacConfig.macAddressListCount; i2++)
205 {
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700206 CsrMemCpyDes(primitive->apMacConfig.macAddressList[i2].a, buffer, &offset, ((u16) (6)));
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300207 }
208 }
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700209 CsrUint8Des((u8 *) &primitive->apMacConfig.apHtParams.greenfieldSupported, buffer, &offset);
210 CsrUint8Des((u8 *) &primitive->apMacConfig.apHtParams.shortGi20MHz, buffer, &offset);
211 CsrUint8Des((u8 *) &primitive->apMacConfig.apHtParams.rxStbc, buffer, &offset);
212 CsrUint8Des((u8 *) &primitive->apMacConfig.apHtParams.rifsModeAllowed, buffer, &offset);
213 CsrUint8Des((u8 *) &primitive->apMacConfig.apHtParams.htProtection, buffer, &offset);
214 CsrUint8Des((u8 *) &primitive->apMacConfig.apHtParams.dualCtsProtection, buffer, &offset);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300215
216 return primitive;
217}
218
219
220void CsrWifiNmeApConfigSetReqSerFree(void *voidPrimitivePointer)
221{
222 CsrWifiNmeApConfigSetReq *primitive = (CsrWifiNmeApConfigSetReq *) voidPrimitivePointer;
Greg Kroah-Hartman55a27052012-07-20 15:59:12 -0700223 kfree(primitive->apMacConfig.macAddressList);
224 kfree(primitive);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300225}
226
227
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700228size_t CsrWifiNmeApWpsRegisterReqSizeof(void *msg)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300229{
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700230 size_t bufferSize = 2;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300231
232 /* Calculate the Size of the Serialised Data. Could be more efficient (Try 17) */
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700233 bufferSize += 2; /* u16 primitive->interfaceTag */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300234 bufferSize += 2; /* CsrWifiSmeWpsDpid primitive->selectedDevicePasswordId */
235 bufferSize += 2; /* CsrWifiSmeWpsConfigType primitive->selectedConfigMethod */
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700236 bufferSize += 8; /* u8 primitive->pin[8] */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300237 return bufferSize;
238}
239
240
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700241u8* CsrWifiNmeApWpsRegisterReqSer(u8 *ptr, size_t *len, void *msg)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300242{
243 CsrWifiNmeApWpsRegisterReq *primitive = (CsrWifiNmeApWpsRegisterReq *)msg;
244 *len = 0;
245 CsrUint16Ser(ptr, len, primitive->common.type);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700246 CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
247 CsrUint16Ser(ptr, len, (u16) primitive->selectedDevicePasswordId);
248 CsrUint16Ser(ptr, len, (u16) primitive->selectedConfigMethod);
249 CsrMemCpySer(ptr, len, (const void *) primitive->pin, ((u16) (8)));
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300250 return(ptr);
251}
252
253
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700254void* CsrWifiNmeApWpsRegisterReqDes(u8 *buffer, size_t length)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300255{
Greg Kroah-Hartman786eeeb2012-07-20 16:41:09 -0700256 CsrWifiNmeApWpsRegisterReq *primitive = kmalloc(sizeof(CsrWifiNmeApWpsRegisterReq), GFP_KERNEL);
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700257 size_t offset;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300258 offset = 0;
259
260 CsrUint16Des(&primitive->common.type, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700261 CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
262 CsrUint16Des((u16 *) &primitive->selectedDevicePasswordId, buffer, &offset);
263 CsrUint16Des((u16 *) &primitive->selectedConfigMethod, buffer, &offset);
264 CsrMemCpyDes(primitive->pin, buffer, &offset, ((u16) (8)));
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300265
266 return primitive;
267}
268
269
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700270size_t CsrWifiNmeApStartReqSizeof(void *msg)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300271{
272 CsrWifiNmeApStartReq *primitive = (CsrWifiNmeApStartReq *) msg;
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700273 size_t bufferSize = 2;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300274
275 /* Calculate the Size of the Serialised Data. Could be more efficient (Try 112) */
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700276 bufferSize += 2; /* u16 primitive->interfaceTag */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300277 bufferSize += 1; /* CsrWifiSmeApType primitive->apType */
Greg Kroah-Hartman5379b132012-07-20 12:25:15 -0700278 bufferSize += 1; /* u8 primitive->cloakSsid */
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700279 bufferSize += 32; /* u8 primitive->ssid.ssid[32] */
280 bufferSize += 1; /* u8 primitive->ssid.length */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300281 bufferSize += 1; /* CsrWifiSmeRadioIF primitive->ifIndex */
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700282 bufferSize += 1; /* u8 primitive->channel */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300283 bufferSize += 1; /* CsrWifiSmeApAuthType primitive->apCredentials.authType */
284 switch (primitive->apCredentials.authType)
285 {
286 case CSR_WIFI_SME_AP_AUTH_TYPE_OPEN_SYSTEM:
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700287 bufferSize += 1; /* u8 primitive->apCredentials.nmeAuthType.openSystemEmpty.empty */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300288 break;
289 case CSR_WIFI_SME_AP_AUTH_TYPE_WEP:
290 bufferSize += 1; /* CsrWifiSmeWepCredentialType primitive->apCredentials.nmeAuthType.authwep.wepKeyType */
291 switch (primitive->apCredentials.nmeAuthType.authwep.wepKeyType)
292 {
293 case CSR_WIFI_SME_CREDENTIAL_TYPE_WEP128:
294 bufferSize += 1; /* CsrWifiSmeWepAuthMode primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep128Key.wepAuthType */
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700295 bufferSize += 1; /* u8 primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep128Key.selectedWepKey */
296 bufferSize += 13; /* u8 primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep128Key.key1[13] */
297 bufferSize += 13; /* u8 primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep128Key.key2[13] */
298 bufferSize += 13; /* u8 primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep128Key.key3[13] */
299 bufferSize += 13; /* u8 primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep128Key.key4[13] */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300300 break;
301 case CSR_WIFI_SME_CREDENTIAL_TYPE_WEP64:
302 bufferSize += 1; /* CsrWifiSmeWepAuthMode primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep64Key.wepAuthType */
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700303 bufferSize += 1; /* u8 primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep64Key.selectedWepKey */
304 bufferSize += 5; /* u8 primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep64Key.key1[5] */
305 bufferSize += 5; /* u8 primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep64Key.key2[5] */
306 bufferSize += 5; /* u8 primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep64Key.key3[5] */
307 bufferSize += 5; /* u8 primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep64Key.key4[5] */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300308 break;
309 default:
310 break;
311 }
312 break;
313 case CSR_WIFI_SME_AP_AUTH_TYPE_PERSONAL:
314 bufferSize += 1; /* CsrWifiSmeApAuthSupportMask primitive->apCredentials.nmeAuthType.authTypePersonal.authSupport */
315 bufferSize += 2; /* CsrWifiSmeApRsnCapabilitiesMask primitive->apCredentials.nmeAuthType.authTypePersonal.rsnCapabilities */
316 bufferSize += 2; /* CsrWifiSmeApWapiCapabilitiesMask primitive->apCredentials.nmeAuthType.authTypePersonal.wapiCapabilities */
317 bufferSize += 1; /* CsrWifiNmeApPersCredentialType primitive->apCredentials.nmeAuthType.authTypePersonal.pskOrPassphrase */
318 switch (primitive->apCredentials.nmeAuthType.authTypePersonal.pskOrPassphrase)
319 {
320 case CSR_WIFI_NME_AP_CREDENTIAL_TYPE_PSK:
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700321 bufferSize += 2; /* u16 primitive->apCredentials.nmeAuthType.authTypePersonal.authPers_credentials.psk.encryptionMode */
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700322 bufferSize += 32; /* u8 primitive->apCredentials.nmeAuthType.authTypePersonal.authPers_credentials.psk.psk[32] */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300323 break;
324 case CSR_WIFI_NME_AP_CREDENTIAL_TYPE_PASSPHRASE:
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700325 bufferSize += 2; /* u16 primitive->apCredentials.nmeAuthType.authTypePersonal.authPers_credentials.passphrase.encryptionMode */
Greg Kroah-Hartman4bcb20f2012-07-20 14:56:57 -0700326 bufferSize += (primitive->apCredentials.nmeAuthType.authTypePersonal.authPers_credentials.passphrase.passphrase ? strlen(primitive->apCredentials.nmeAuthType.authTypePersonal.authPers_credentials.passphrase.passphrase) : 0) + 1; /* char* primitive->apCredentials.nmeAuthType.authTypePersonal.authPers_credentials.passphrase.passphrase (0 byte len + 1 for NULL Term) */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300327 break;
328 default:
329 break;
330 }
331 break;
332 default:
333 break;
334 }
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700335 bufferSize += 1; /* u8 primitive->maxConnections */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300336 bufferSize += 1; /* CsrWifiSmeP2pGroupCapabilityMask primitive->p2pGoParam.groupCapability */
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700337 bufferSize += 3; /* u8 primitive->p2pGoParam.operatingChanList.country[3] */
338 bufferSize += 1; /* u8 primitive->p2pGoParam.operatingChanList.channelEntryListCount */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300339 {
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700340 u16 i3;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300341 for (i3 = 0; i3 < primitive->p2pGoParam.operatingChanList.channelEntryListCount; i3++)
342 {
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700343 bufferSize += 1; /* u8 primitive->p2pGoParam.operatingChanList.channelEntryList[i3].operatingClass */
344 bufferSize += 1; /* u8 primitive->p2pGoParam.operatingChanList.channelEntryList[i3].operatingChannelCount */
345 bufferSize += primitive->p2pGoParam.operatingChanList.channelEntryList[i3].operatingChannelCount; /* u8 primitive->p2pGoParam.operatingChanList.channelEntryList[i3].operatingChannel */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300346 }
347 }
Greg Kroah-Hartman5379b132012-07-20 12:25:15 -0700348 bufferSize += 1; /* u8 primitive->p2pGoParam.opPsEnabled */
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700349 bufferSize += 1; /* u8 primitive->p2pGoParam.ctWindow */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300350 bufferSize += 1; /* CsrWifiSmeP2pNoaConfigMethod primitive->p2pGoParam.noaConfigMethod */
Greg Kroah-Hartman5379b132012-07-20 12:25:15 -0700351 bufferSize += 1; /* u8 primitive->p2pGoParam.allowNoaWithNonP2pDevices */
352 bufferSize += 1; /* u8 primitive->wpsEnabled */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300353 return bufferSize;
354}
355
356
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700357u8* CsrWifiNmeApStartReqSer(u8 *ptr, size_t *len, void *msg)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300358{
359 CsrWifiNmeApStartReq *primitive = (CsrWifiNmeApStartReq *)msg;
360 *len = 0;
361 CsrUint16Ser(ptr, len, primitive->common.type);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700362 CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700363 CsrUint8Ser(ptr, len, (u8) primitive->apType);
364 CsrUint8Ser(ptr, len, (u8) primitive->cloakSsid);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700365 CsrMemCpySer(ptr, len, (const void *) primitive->ssid.ssid, ((u16) (32)));
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700366 CsrUint8Ser(ptr, len, (u8) primitive->ssid.length);
367 CsrUint8Ser(ptr, len, (u8) primitive->ifIndex);
368 CsrUint8Ser(ptr, len, (u8) primitive->channel);
369 CsrUint8Ser(ptr, len, (u8) primitive->apCredentials.authType);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300370 switch (primitive->apCredentials.authType)
371 {
372 case CSR_WIFI_SME_AP_AUTH_TYPE_OPEN_SYSTEM:
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700373 CsrUint8Ser(ptr, len, (u8) primitive->apCredentials.nmeAuthType.openSystemEmpty.empty);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300374 break;
375 case CSR_WIFI_SME_AP_AUTH_TYPE_WEP:
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700376 CsrUint8Ser(ptr, len, (u8) primitive->apCredentials.nmeAuthType.authwep.wepKeyType);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300377 switch (primitive->apCredentials.nmeAuthType.authwep.wepKeyType)
378 {
379 case CSR_WIFI_SME_CREDENTIAL_TYPE_WEP128:
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700380 CsrUint8Ser(ptr, len, (u8) primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep128Key.wepAuthType);
381 CsrUint8Ser(ptr, len, (u8) primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep128Key.selectedWepKey);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700382 CsrMemCpySer(ptr, len, (const void *) primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep128Key.key1, ((u16) (13)));
383 CsrMemCpySer(ptr, len, (const void *) primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep128Key.key2, ((u16) (13)));
384 CsrMemCpySer(ptr, len, (const void *) primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep128Key.key3, ((u16) (13)));
385 CsrMemCpySer(ptr, len, (const void *) primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep128Key.key4, ((u16) (13)));
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300386 break;
387 case CSR_WIFI_SME_CREDENTIAL_TYPE_WEP64:
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700388 CsrUint8Ser(ptr, len, (u8) primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep64Key.wepAuthType);
389 CsrUint8Ser(ptr, len, (u8) primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep64Key.selectedWepKey);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700390 CsrMemCpySer(ptr, len, (const void *) primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep64Key.key1, ((u16) (5)));
391 CsrMemCpySer(ptr, len, (const void *) primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep64Key.key2, ((u16) (5)));
392 CsrMemCpySer(ptr, len, (const void *) primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep64Key.key3, ((u16) (5)));
393 CsrMemCpySer(ptr, len, (const void *) primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep64Key.key4, ((u16) (5)));
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300394 break;
395 default:
396 break;
397 }
398 break;
399 case CSR_WIFI_SME_AP_AUTH_TYPE_PERSONAL:
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700400 CsrUint8Ser(ptr, len, (u8) primitive->apCredentials.nmeAuthType.authTypePersonal.authSupport);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700401 CsrUint16Ser(ptr, len, (u16) primitive->apCredentials.nmeAuthType.authTypePersonal.rsnCapabilities);
402 CsrUint16Ser(ptr, len, (u16) primitive->apCredentials.nmeAuthType.authTypePersonal.wapiCapabilities);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700403 CsrUint8Ser(ptr, len, (u8) primitive->apCredentials.nmeAuthType.authTypePersonal.pskOrPassphrase);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300404 switch (primitive->apCredentials.nmeAuthType.authTypePersonal.pskOrPassphrase)
405 {
406 case CSR_WIFI_NME_AP_CREDENTIAL_TYPE_PSK:
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700407 CsrUint16Ser(ptr, len, (u16) primitive->apCredentials.nmeAuthType.authTypePersonal.authPers_credentials.psk.encryptionMode);
408 CsrMemCpySer(ptr, len, (const void *) primitive->apCredentials.nmeAuthType.authTypePersonal.authPers_credentials.psk.psk, ((u16) (32)));
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300409 break;
410 case CSR_WIFI_NME_AP_CREDENTIAL_TYPE_PASSPHRASE:
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700411 CsrUint16Ser(ptr, len, (u16) primitive->apCredentials.nmeAuthType.authTypePersonal.authPers_credentials.passphrase.encryptionMode);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300412 CsrCharStringSer(ptr, len, primitive->apCredentials.nmeAuthType.authTypePersonal.authPers_credentials.passphrase.passphrase);
413 break;
414 default:
415 break;
416 }
417 break;
418 default:
419 break;
420 }
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700421 CsrUint8Ser(ptr, len, (u8) primitive->maxConnections);
422 CsrUint8Ser(ptr, len, (u8) primitive->p2pGoParam.groupCapability);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700423 CsrMemCpySer(ptr, len, (const void *) primitive->p2pGoParam.operatingChanList.country, ((u16) (3)));
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700424 CsrUint8Ser(ptr, len, (u8) primitive->p2pGoParam.operatingChanList.channelEntryListCount);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300425 {
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700426 u16 i3;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300427 for (i3 = 0; i3 < primitive->p2pGoParam.operatingChanList.channelEntryListCount; i3++)
428 {
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700429 CsrUint8Ser(ptr, len, (u8) primitive->p2pGoParam.operatingChanList.channelEntryList[i3].operatingClass);
430 CsrUint8Ser(ptr, len, (u8) primitive->p2pGoParam.operatingChanList.channelEntryList[i3].operatingChannelCount);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300431 if (primitive->p2pGoParam.operatingChanList.channelEntryList[i3].operatingChannelCount)
432 {
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700433 CsrMemCpySer(ptr, len, (const void *) primitive->p2pGoParam.operatingChanList.channelEntryList[i3].operatingChannel, ((u16) (primitive->p2pGoParam.operatingChanList.channelEntryList[i3].operatingChannelCount)));
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300434 }
435 }
436 }
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700437 CsrUint8Ser(ptr, len, (u8) primitive->p2pGoParam.opPsEnabled);
438 CsrUint8Ser(ptr, len, (u8) primitive->p2pGoParam.ctWindow);
439 CsrUint8Ser(ptr, len, (u8) primitive->p2pGoParam.noaConfigMethod);
440 CsrUint8Ser(ptr, len, (u8) primitive->p2pGoParam.allowNoaWithNonP2pDevices);
441 CsrUint8Ser(ptr, len, (u8) primitive->wpsEnabled);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300442 return(ptr);
443}
444
445
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700446void* CsrWifiNmeApStartReqDes(u8 *buffer, size_t length)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300447{
Greg Kroah-Hartman786eeeb2012-07-20 16:41:09 -0700448 CsrWifiNmeApStartReq *primitive = kmalloc(sizeof(CsrWifiNmeApStartReq), GFP_KERNEL);
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700449 size_t offset;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300450 offset = 0;
451
452 CsrUint16Des(&primitive->common.type, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700453 CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700454 CsrUint8Des((u8 *) &primitive->apType, buffer, &offset);
455 CsrUint8Des((u8 *) &primitive->cloakSsid, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700456 CsrMemCpyDes(primitive->ssid.ssid, buffer, &offset, ((u16) (32)));
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700457 CsrUint8Des((u8 *) &primitive->ssid.length, buffer, &offset);
458 CsrUint8Des((u8 *) &primitive->ifIndex, buffer, &offset);
459 CsrUint8Des((u8 *) &primitive->channel, buffer, &offset);
460 CsrUint8Des((u8 *) &primitive->apCredentials.authType, buffer, &offset);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300461 switch (primitive->apCredentials.authType)
462 {
463 case CSR_WIFI_SME_AP_AUTH_TYPE_OPEN_SYSTEM:
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700464 CsrUint8Des((u8 *) &primitive->apCredentials.nmeAuthType.openSystemEmpty.empty, buffer, &offset);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300465 break;
466 case CSR_WIFI_SME_AP_AUTH_TYPE_WEP:
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700467 CsrUint8Des((u8 *) &primitive->apCredentials.nmeAuthType.authwep.wepKeyType, buffer, &offset);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300468 switch (primitive->apCredentials.nmeAuthType.authwep.wepKeyType)
469 {
470 case CSR_WIFI_SME_CREDENTIAL_TYPE_WEP128:
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700471 CsrUint8Des((u8 *) &primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep128Key.wepAuthType, buffer, &offset);
472 CsrUint8Des((u8 *) &primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep128Key.selectedWepKey, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700473 CsrMemCpyDes(primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep128Key.key1, buffer, &offset, ((u16) (13)));
474 CsrMemCpyDes(primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep128Key.key2, buffer, &offset, ((u16) (13)));
475 CsrMemCpyDes(primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep128Key.key3, buffer, &offset, ((u16) (13)));
476 CsrMemCpyDes(primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep128Key.key4, buffer, &offset, ((u16) (13)));
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300477 break;
478 case CSR_WIFI_SME_CREDENTIAL_TYPE_WEP64:
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700479 CsrUint8Des((u8 *) &primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep64Key.wepAuthType, buffer, &offset);
480 CsrUint8Des((u8 *) &primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep64Key.selectedWepKey, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700481 CsrMemCpyDes(primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep64Key.key1, buffer, &offset, ((u16) (5)));
482 CsrMemCpyDes(primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep64Key.key2, buffer, &offset, ((u16) (5)));
483 CsrMemCpyDes(primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep64Key.key3, buffer, &offset, ((u16) (5)));
484 CsrMemCpyDes(primitive->apCredentials.nmeAuthType.authwep.wepCredentials.wep64Key.key4, buffer, &offset, ((u16) (5)));
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300485 break;
486 default:
487 break;
488 }
489 break;
490 case CSR_WIFI_SME_AP_AUTH_TYPE_PERSONAL:
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700491 CsrUint8Des((u8 *) &primitive->apCredentials.nmeAuthType.authTypePersonal.authSupport, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700492 CsrUint16Des((u16 *) &primitive->apCredentials.nmeAuthType.authTypePersonal.rsnCapabilities, buffer, &offset);
493 CsrUint16Des((u16 *) &primitive->apCredentials.nmeAuthType.authTypePersonal.wapiCapabilities, buffer, &offset);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700494 CsrUint8Des((u8 *) &primitive->apCredentials.nmeAuthType.authTypePersonal.pskOrPassphrase, buffer, &offset);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300495 switch (primitive->apCredentials.nmeAuthType.authTypePersonal.pskOrPassphrase)
496 {
497 case CSR_WIFI_NME_AP_CREDENTIAL_TYPE_PSK:
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700498 CsrUint16Des((u16 *) &primitive->apCredentials.nmeAuthType.authTypePersonal.authPers_credentials.psk.encryptionMode, buffer, &offset);
499 CsrMemCpyDes(primitive->apCredentials.nmeAuthType.authTypePersonal.authPers_credentials.psk.psk, buffer, &offset, ((u16) (32)));
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300500 break;
501 case CSR_WIFI_NME_AP_CREDENTIAL_TYPE_PASSPHRASE:
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700502 CsrUint16Des((u16 *) &primitive->apCredentials.nmeAuthType.authTypePersonal.authPers_credentials.passphrase.encryptionMode, buffer, &offset);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300503 CsrCharStringDes(&primitive->apCredentials.nmeAuthType.authTypePersonal.authPers_credentials.passphrase.passphrase, buffer, &offset);
504 break;
505 default:
506 break;
507 }
508 break;
509 default:
510 break;
511 }
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700512 CsrUint8Des((u8 *) &primitive->maxConnections, buffer, &offset);
513 CsrUint8Des((u8 *) &primitive->p2pGoParam.groupCapability, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700514 CsrMemCpyDes(primitive->p2pGoParam.operatingChanList.country, buffer, &offset, ((u16) (3)));
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700515 CsrUint8Des((u8 *) &primitive->p2pGoParam.operatingChanList.channelEntryListCount, buffer, &offset);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300516 primitive->p2pGoParam.operatingChanList.channelEntryList = NULL;
517 if (primitive->p2pGoParam.operatingChanList.channelEntryListCount)
518 {
Greg Kroah-Hartman786eeeb2012-07-20 16:41:09 -0700519 primitive->p2pGoParam.operatingChanList.channelEntryList = kmalloc(sizeof(CsrWifiSmeApP2pOperatingChanEntry) * primitive->p2pGoParam.operatingChanList.channelEntryListCount, GFP_KERNEL);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300520 }
521 {
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700522 u16 i3;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300523 for (i3 = 0; i3 < primitive->p2pGoParam.operatingChanList.channelEntryListCount; i3++)
524 {
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700525 CsrUint8Des((u8 *) &primitive->p2pGoParam.operatingChanList.channelEntryList[i3].operatingClass, buffer, &offset);
526 CsrUint8Des((u8 *) &primitive->p2pGoParam.operatingChanList.channelEntryList[i3].operatingChannelCount, buffer, &offset);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300527 if (primitive->p2pGoParam.operatingChanList.channelEntryList[i3].operatingChannelCount)
528 {
Greg Kroah-Hartman786eeeb2012-07-20 16:41:09 -0700529 primitive->p2pGoParam.operatingChanList.channelEntryList[i3].operatingChannel = kmalloc(primitive->p2pGoParam.operatingChanList.channelEntryList[i3].operatingChannelCount, GFP_KERNEL);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700530 CsrMemCpyDes(primitive->p2pGoParam.operatingChanList.channelEntryList[i3].operatingChannel, buffer, &offset, ((u16) (primitive->p2pGoParam.operatingChanList.channelEntryList[i3].operatingChannelCount)));
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300531 }
532 else
533 {
534 primitive->p2pGoParam.operatingChanList.channelEntryList[i3].operatingChannel = NULL;
535 }
536 }
537 }
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700538 CsrUint8Des((u8 *) &primitive->p2pGoParam.opPsEnabled, buffer, &offset);
539 CsrUint8Des((u8 *) &primitive->p2pGoParam.ctWindow, buffer, &offset);
540 CsrUint8Des((u8 *) &primitive->p2pGoParam.noaConfigMethod, buffer, &offset);
541 CsrUint8Des((u8 *) &primitive->p2pGoParam.allowNoaWithNonP2pDevices, buffer, &offset);
542 CsrUint8Des((u8 *) &primitive->wpsEnabled, buffer, &offset);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300543
544 return primitive;
545}
546
547
548void CsrWifiNmeApStartReqSerFree(void *voidPrimitivePointer)
549{
550 CsrWifiNmeApStartReq *primitive = (CsrWifiNmeApStartReq *) voidPrimitivePointer;
551 switch (primitive->apCredentials.authType)
552 {
553 case CSR_WIFI_SME_AP_AUTH_TYPE_PERSONAL:
554 switch (primitive->apCredentials.nmeAuthType.authTypePersonal.pskOrPassphrase)
555 {
556 case CSR_WIFI_NME_AP_CREDENTIAL_TYPE_PASSPHRASE:
Greg Kroah-Hartman55a27052012-07-20 15:59:12 -0700557 kfree(primitive->apCredentials.nmeAuthType.authTypePersonal.authPers_credentials.passphrase.passphrase);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300558 break;
559 default:
560 break;
561 }
562 break;
563 default:
564 break;
565 }
566 {
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700567 u16 i3;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300568 for (i3 = 0; i3 < primitive->p2pGoParam.operatingChanList.channelEntryListCount; i3++)
569 {
Greg Kroah-Hartman55a27052012-07-20 15:59:12 -0700570 kfree(primitive->p2pGoParam.operatingChanList.channelEntryList[i3].operatingChannel);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300571 }
572 }
Greg Kroah-Hartman55a27052012-07-20 15:59:12 -0700573 kfree(primitive->p2pGoParam.operatingChanList.channelEntryList);
574 kfree(primitive);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300575}
576
577
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700578size_t CsrWifiNmeApWmmParamUpdateReqSizeof(void *msg)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300579{
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700580 size_t bufferSize = 2;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300581
582 /* Calculate the Size of the Serialised Data. Could be more efficient (Try 51) */
583 {
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700584 u16 i1;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300585 for (i1 = 0; i1 < 4; i1++)
586 {
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700587 bufferSize += 1; /* u8 primitive->wmmApParams[i1].cwMin */
588 bufferSize += 1; /* u8 primitive->wmmApParams[i1].cwMax */
589 bufferSize += 1; /* u8 primitive->wmmApParams[i1].aifs */
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700590 bufferSize += 2; /* u16 primitive->wmmApParams[i1].txopLimit */
Greg Kroah-Hartman5379b132012-07-20 12:25:15 -0700591 bufferSize += 1; /* u8 primitive->wmmApParams[i1].admissionControlMandatory */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300592 }
593 }
594 {
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700595 u16 i1;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300596 for (i1 = 0; i1 < 4; i1++)
597 {
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700598 bufferSize += 1; /* u8 primitive->wmmApBcParams[i1].cwMin */
599 bufferSize += 1; /* u8 primitive->wmmApBcParams[i1].cwMax */
600 bufferSize += 1; /* u8 primitive->wmmApBcParams[i1].aifs */
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700601 bufferSize += 2; /* u16 primitive->wmmApBcParams[i1].txopLimit */
Greg Kroah-Hartman5379b132012-07-20 12:25:15 -0700602 bufferSize += 1; /* u8 primitive->wmmApBcParams[i1].admissionControlMandatory */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300603 }
604 }
605 return bufferSize;
606}
607
608
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700609u8* CsrWifiNmeApWmmParamUpdateReqSer(u8 *ptr, size_t *len, void *msg)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300610{
611 CsrWifiNmeApWmmParamUpdateReq *primitive = (CsrWifiNmeApWmmParamUpdateReq *)msg;
612 *len = 0;
613 CsrUint16Ser(ptr, len, primitive->common.type);
614 {
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700615 u16 i1;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300616 for (i1 = 0; i1 < 4; i1++)
617 {
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700618 CsrUint8Ser(ptr, len, (u8) primitive->wmmApParams[i1].cwMin);
619 CsrUint8Ser(ptr, len, (u8) primitive->wmmApParams[i1].cwMax);
620 CsrUint8Ser(ptr, len, (u8) primitive->wmmApParams[i1].aifs);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700621 CsrUint16Ser(ptr, len, (u16) primitive->wmmApParams[i1].txopLimit);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700622 CsrUint8Ser(ptr, len, (u8) primitive->wmmApParams[i1].admissionControlMandatory);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300623 }
624 }
625 {
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700626 u16 i1;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300627 for (i1 = 0; i1 < 4; i1++)
628 {
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700629 CsrUint8Ser(ptr, len, (u8) primitive->wmmApBcParams[i1].cwMin);
630 CsrUint8Ser(ptr, len, (u8) primitive->wmmApBcParams[i1].cwMax);
631 CsrUint8Ser(ptr, len, (u8) primitive->wmmApBcParams[i1].aifs);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700632 CsrUint16Ser(ptr, len, (u16) primitive->wmmApBcParams[i1].txopLimit);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700633 CsrUint8Ser(ptr, len, (u8) primitive->wmmApBcParams[i1].admissionControlMandatory);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300634 }
635 }
636 return(ptr);
637}
638
639
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700640void* CsrWifiNmeApWmmParamUpdateReqDes(u8 *buffer, size_t length)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300641{
Greg Kroah-Hartman786eeeb2012-07-20 16:41:09 -0700642 CsrWifiNmeApWmmParamUpdateReq *primitive = kmalloc(sizeof(CsrWifiNmeApWmmParamUpdateReq), GFP_KERNEL);
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700643 size_t offset;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300644 offset = 0;
645
646 CsrUint16Des(&primitive->common.type, buffer, &offset);
647 {
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700648 u16 i1;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300649 for (i1 = 0; i1 < 4; i1++)
650 {
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700651 CsrUint8Des((u8 *) &primitive->wmmApParams[i1].cwMin, buffer, &offset);
652 CsrUint8Des((u8 *) &primitive->wmmApParams[i1].cwMax, buffer, &offset);
653 CsrUint8Des((u8 *) &primitive->wmmApParams[i1].aifs, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700654 CsrUint16Des((u16 *) &primitive->wmmApParams[i1].txopLimit, buffer, &offset);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700655 CsrUint8Des((u8 *) &primitive->wmmApParams[i1].admissionControlMandatory, buffer, &offset);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300656 }
657 }
658 {
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700659 u16 i1;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300660 for (i1 = 0; i1 < 4; i1++)
661 {
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700662 CsrUint8Des((u8 *) &primitive->wmmApBcParams[i1].cwMin, buffer, &offset);
663 CsrUint8Des((u8 *) &primitive->wmmApBcParams[i1].cwMax, buffer, &offset);
664 CsrUint8Des((u8 *) &primitive->wmmApBcParams[i1].aifs, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700665 CsrUint16Des((u16 *) &primitive->wmmApBcParams[i1].txopLimit, buffer, &offset);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700666 CsrUint8Des((u8 *) &primitive->wmmApBcParams[i1].admissionControlMandatory, buffer, &offset);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300667 }
668 }
669
670 return primitive;
671}
672
673
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700674size_t CsrWifiNmeApStaRemoveReqSizeof(void *msg)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300675{
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700676 size_t bufferSize = 2;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300677
678 /* Calculate the Size of the Serialised Data. Could be more efficient (Try 12) */
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700679 bufferSize += 2; /* u16 primitive->interfaceTag */
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700680 bufferSize += 6; /* u8 primitive->staMacAddress.a[6] */
Greg Kroah-Hartman5379b132012-07-20 12:25:15 -0700681 bufferSize += 1; /* u8 primitive->keepBlocking */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300682 return bufferSize;
683}
684
685
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700686u8* CsrWifiNmeApStaRemoveReqSer(u8 *ptr, size_t *len, void *msg)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300687{
688 CsrWifiNmeApStaRemoveReq *primitive = (CsrWifiNmeApStaRemoveReq *)msg;
689 *len = 0;
690 CsrUint16Ser(ptr, len, primitive->common.type);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700691 CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
692 CsrMemCpySer(ptr, len, (const void *) primitive->staMacAddress.a, ((u16) (6)));
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700693 CsrUint8Ser(ptr, len, (u8) primitive->keepBlocking);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300694 return(ptr);
695}
696
697
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700698void* CsrWifiNmeApStaRemoveReqDes(u8 *buffer, size_t length)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300699{
Greg Kroah-Hartman786eeeb2012-07-20 16:41:09 -0700700 CsrWifiNmeApStaRemoveReq *primitive = kmalloc(sizeof(CsrWifiNmeApStaRemoveReq), GFP_KERNEL);
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700701 size_t offset;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300702 offset = 0;
703
704 CsrUint16Des(&primitive->common.type, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700705 CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
706 CsrMemCpyDes(primitive->staMacAddress.a, buffer, &offset, ((u16) (6)));
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700707 CsrUint8Des((u8 *) &primitive->keepBlocking, buffer, &offset);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300708
709 return primitive;
710}
711
712
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700713size_t CsrWifiNmeApWpsRegisterCfmSizeof(void *msg)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300714{
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700715 size_t bufferSize = 2;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300716
717 /* Calculate the Size of the Serialised Data. Could be more efficient (Try 7) */
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700718 bufferSize += 2; /* u16 primitive->interfaceTag */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300719 bufferSize += 2; /* CsrResult primitive->status */
720 return bufferSize;
721}
722
723
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700724u8* CsrWifiNmeApWpsRegisterCfmSer(u8 *ptr, size_t *len, void *msg)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300725{
726 CsrWifiNmeApWpsRegisterCfm *primitive = (CsrWifiNmeApWpsRegisterCfm *)msg;
727 *len = 0;
728 CsrUint16Ser(ptr, len, primitive->common.type);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700729 CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
730 CsrUint16Ser(ptr, len, (u16) primitive->status);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300731 return(ptr);
732}
733
734
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700735void* CsrWifiNmeApWpsRegisterCfmDes(u8 *buffer, size_t length)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300736{
Greg Kroah-Hartman786eeeb2012-07-20 16:41:09 -0700737 CsrWifiNmeApWpsRegisterCfm *primitive = kmalloc(sizeof(CsrWifiNmeApWpsRegisterCfm), GFP_KERNEL);
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700738 size_t offset;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300739 offset = 0;
740
741 CsrUint16Des(&primitive->common.type, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700742 CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
743 CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300744
745 return primitive;
746}
747
748
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700749size_t CsrWifiNmeApStartCfmSizeof(void *msg)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300750{
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700751 size_t bufferSize = 2;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300752
753 /* Calculate the Size of the Serialised Data. Could be more efficient (Try 40) */
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700754 bufferSize += 2; /* u16 primitive->interfaceTag */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300755 bufferSize += 2; /* CsrResult primitive->status */
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700756 bufferSize += 32; /* u8 primitive->ssid.ssid[32] */
757 bufferSize += 1; /* u8 primitive->ssid.length */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300758 return bufferSize;
759}
760
761
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700762u8* CsrWifiNmeApStartCfmSer(u8 *ptr, size_t *len, void *msg)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300763{
764 CsrWifiNmeApStartCfm *primitive = (CsrWifiNmeApStartCfm *)msg;
765 *len = 0;
766 CsrUint16Ser(ptr, len, primitive->common.type);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700767 CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
768 CsrUint16Ser(ptr, len, (u16) primitive->status);
769 CsrMemCpySer(ptr, len, (const void *) primitive->ssid.ssid, ((u16) (32)));
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700770 CsrUint8Ser(ptr, len, (u8) primitive->ssid.length);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300771 return(ptr);
772}
773
774
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700775void* CsrWifiNmeApStartCfmDes(u8 *buffer, size_t length)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300776{
Greg Kroah-Hartman786eeeb2012-07-20 16:41:09 -0700777 CsrWifiNmeApStartCfm *primitive = kmalloc(sizeof(CsrWifiNmeApStartCfm), GFP_KERNEL);
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700778 size_t offset;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300779 offset = 0;
780
781 CsrUint16Des(&primitive->common.type, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700782 CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
783 CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
784 CsrMemCpyDes(primitive->ssid.ssid, buffer, &offset, ((u16) (32)));
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700785 CsrUint8Des((u8 *) &primitive->ssid.length, buffer, &offset);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300786
787 return primitive;
788}
789
790
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700791size_t CsrWifiNmeApStopCfmSizeof(void *msg)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300792{
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700793 size_t bufferSize = 2;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300794
795 /* Calculate the Size of the Serialised Data. Could be more efficient (Try 7) */
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700796 bufferSize += 2; /* u16 primitive->interfaceTag */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300797 bufferSize += 2; /* CsrResult primitive->status */
798 return bufferSize;
799}
800
801
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700802u8* CsrWifiNmeApStopCfmSer(u8 *ptr, size_t *len, void *msg)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300803{
804 CsrWifiNmeApStopCfm *primitive = (CsrWifiNmeApStopCfm *)msg;
805 *len = 0;
806 CsrUint16Ser(ptr, len, primitive->common.type);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700807 CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
808 CsrUint16Ser(ptr, len, (u16) primitive->status);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300809 return(ptr);
810}
811
812
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700813void* CsrWifiNmeApStopCfmDes(u8 *buffer, size_t length)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300814{
Greg Kroah-Hartman786eeeb2012-07-20 16:41:09 -0700815 CsrWifiNmeApStopCfm *primitive = kmalloc(sizeof(CsrWifiNmeApStopCfm), GFP_KERNEL);
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700816 size_t offset;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300817 offset = 0;
818
819 CsrUint16Des(&primitive->common.type, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700820 CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
821 CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300822
823 return primitive;
824}
825
826
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700827size_t CsrWifiNmeApStopIndSizeof(void *msg)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300828{
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700829 size_t bufferSize = 2;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300830
831 /* Calculate the Size of the Serialised Data. Could be more efficient (Try 8) */
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700832 bufferSize += 2; /* u16 primitive->interfaceTag */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300833 bufferSize += 1; /* CsrWifiSmeApType primitive->apType */
834 bufferSize += 2; /* CsrResult primitive->status */
835 return bufferSize;
836}
837
838
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700839u8* CsrWifiNmeApStopIndSer(u8 *ptr, size_t *len, void *msg)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300840{
841 CsrWifiNmeApStopInd *primitive = (CsrWifiNmeApStopInd *)msg;
842 *len = 0;
843 CsrUint16Ser(ptr, len, primitive->common.type);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700844 CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700845 CsrUint8Ser(ptr, len, (u8) primitive->apType);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700846 CsrUint16Ser(ptr, len, (u16) primitive->status);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300847 return(ptr);
848}
849
850
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700851void* CsrWifiNmeApStopIndDes(u8 *buffer, size_t length)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300852{
Greg Kroah-Hartman786eeeb2012-07-20 16:41:09 -0700853 CsrWifiNmeApStopInd *primitive = kmalloc(sizeof(CsrWifiNmeApStopInd), GFP_KERNEL);
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700854 size_t offset;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300855 offset = 0;
856
857 CsrUint16Des(&primitive->common.type, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700858 CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700859 CsrUint8Des((u8 *) &primitive->apType, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700860 CsrUint16Des((u16 *) &primitive->status, buffer, &offset);
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300861
862 return primitive;
863}
864
865
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700866size_t CsrWifiNmeApStationIndSizeof(void *msg)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300867{
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700868 size_t bufferSize = 2;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300869
870 /* Calculate the Size of the Serialised Data. Could be more efficient (Try 18) */
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700871 bufferSize += 2; /* u16 primitive->interfaceTag */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300872 bufferSize += 1; /* CsrWifiSmeMediaStatus primitive->mediaStatus */
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700873 bufferSize += 6; /* u8 primitive->peerMacAddress.a[6] */
874 bufferSize += 6; /* u8 primitive->peerDeviceAddress.a[6] */
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300875 return bufferSize;
876}
877
878
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700879u8* CsrWifiNmeApStationIndSer(u8 *ptr, size_t *len, void *msg)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300880{
881 CsrWifiNmeApStationInd *primitive = (CsrWifiNmeApStationInd *)msg;
882 *len = 0;
883 CsrUint16Ser(ptr, len, primitive->common.type);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700884 CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700885 CsrUint8Ser(ptr, len, (u8) primitive->mediaStatus);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700886 CsrMemCpySer(ptr, len, (const void *) primitive->peerMacAddress.a, ((u16) (6)));
887 CsrMemCpySer(ptr, len, (const void *) primitive->peerDeviceAddress.a, ((u16) (6)));
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300888 return(ptr);
889}
890
891
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700892void* CsrWifiNmeApStationIndDes(u8 *buffer, size_t length)
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300893{
Greg Kroah-Hartman786eeeb2012-07-20 16:41:09 -0700894 CsrWifiNmeApStationInd *primitive = kmalloc(sizeof(CsrWifiNmeApStationInd), GFP_KERNEL);
Greg Kroah-Hartmand4fda8d2012-07-20 12:27:19 -0700895 size_t offset;
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300896 offset = 0;
897
898 CsrUint16Des(&primitive->common.type, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700899 CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset);
Greg Kroah-Hartman7e6f579442012-07-20 11:51:01 -0700900 CsrUint8Des((u8 *) &primitive->mediaStatus, buffer, &offset);
Greg Kroah-Hartman8c87f692012-07-20 12:00:10 -0700901 CsrMemCpyDes(primitive->peerMacAddress.a, buffer, &offset, ((u16) (6)));
902 CsrMemCpyDes(primitive->peerDeviceAddress.a, buffer, &offset, ((u16) (6)));
Lauri Hintsalafa6173a2012-06-21 13:29:12 +0300903
904 return primitive;
905}
906
907
908#endif /* CSR_WIFI_NME_ENABLE */
909#endif /* CSR_WIFI_AP_ENABLE */