Commit | Line | Data |
---|---|---|
635d2b00 GKH |
1 | /***************************************************************************** |
2 | ||
3 | (c) Cambridge Silicon Radio Limited 2011 | |
4 | All rights reserved and confidential information of CSR | |
5 | ||
6 | Refer to LICENSE.txt included with this source for details | |
7 | on the license terms. | |
8 | ||
9 | *****************************************************************************/ | |
10 | ||
11 | /* Note: this is an auto-generated file. */ | |
55a27055 | 12 | #include <linux/slab.h> |
635d2b00 | 13 | #include "csr_msgconv.h" |
635d2b00 GKH |
14 | #include "csr_wifi_router_prim.h" |
15 | #include "csr_wifi_router_serialize.h" | |
16 | ||
17 | void CsrWifiRouterPfree(void *ptr) | |
18 | { | |
55a27055 | 19 | kfree(ptr); |
635d2b00 GKH |
20 | } |
21 | ||
22 | ||
d4fda8db | 23 | size_t CsrWifiRouterMaPacketSubscribeReqSizeof(void *msg) |
635d2b00 | 24 | { |
d4fda8db | 25 | size_t bufferSize = 2; |
635d2b00 GKH |
26 | |
27 | /* Calculate the Size of the Serialised Data. Could be more efficient (Try 12) */ | |
8c87f69a | 28 | bufferSize += 2; /* u16 primitive->interfaceTag */ |
635d2b00 | 29 | bufferSize += 1; /* CsrWifiRouterEncapsulation primitive->encapsulation */ |
8c87f69a | 30 | bufferSize += 2; /* u16 primitive->protocol */ |
26a6b2e1 | 31 | bufferSize += 4; /* u32 primitive->oui */ |
635d2b00 GKH |
32 | return bufferSize; |
33 | } | |
34 | ||
35 | ||
d4fda8db | 36 | u8* CsrWifiRouterMaPacketSubscribeReqSer(u8 *ptr, size_t *len, void *msg) |
635d2b00 GKH |
37 | { |
38 | CsrWifiRouterMaPacketSubscribeReq *primitive = (CsrWifiRouterMaPacketSubscribeReq *)msg; | |
39 | *len = 0; | |
40 | CsrUint16Ser(ptr, len, primitive->common.type); | |
8c87f69a | 41 | CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag); |
7e6f5794 | 42 | CsrUint8Ser(ptr, len, (u8) primitive->encapsulation); |
8c87f69a | 43 | CsrUint16Ser(ptr, len, (u16) primitive->protocol); |
26a6b2e1 | 44 | CsrUint32Ser(ptr, len, (u32) primitive->oui); |
635d2b00 GKH |
45 | return(ptr); |
46 | } | |
47 | ||
48 | ||
d4fda8db | 49 | void* CsrWifiRouterMaPacketSubscribeReqDes(u8 *buffer, size_t length) |
635d2b00 | 50 | { |
786eeeb3 | 51 | CsrWifiRouterMaPacketSubscribeReq *primitive = kmalloc(sizeof(CsrWifiRouterMaPacketSubscribeReq), GFP_KERNEL); |
d4fda8db | 52 | size_t offset; |
635d2b00 GKH |
53 | offset = 0; |
54 | ||
55 | CsrUint16Des(&primitive->common.type, buffer, &offset); | |
8c87f69a | 56 | CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset); |
7e6f5794 | 57 | CsrUint8Des((u8 *) &primitive->encapsulation, buffer, &offset); |
8c87f69a | 58 | CsrUint16Des((u16 *) &primitive->protocol, buffer, &offset); |
26a6b2e1 | 59 | CsrUint32Des((u32 *) &primitive->oui, buffer, &offset); |
635d2b00 GKH |
60 | |
61 | return primitive; | |
62 | } | |
63 | ||
64 | ||
d4fda8db | 65 | size_t CsrWifiRouterMaPacketReqSizeof(void *msg) |
635d2b00 GKH |
66 | { |
67 | CsrWifiRouterMaPacketReq *primitive = (CsrWifiRouterMaPacketReq *) msg; | |
d4fda8db | 68 | size_t bufferSize = 2; |
635d2b00 GKH |
69 | |
70 | /* Calculate the Size of the Serialised Data. Could be more efficient (Try 20) */ | |
8c87f69a | 71 | bufferSize += 2; /* u16 primitive->interfaceTag */ |
7e6f5794 | 72 | bufferSize += 1; /* u8 primitive->subscriptionHandle */ |
8c87f69a | 73 | bufferSize += 2; /* u16 primitive->frameLength */ |
7e6f5794 | 74 | bufferSize += primitive->frameLength; /* u8 primitive->frame */ |
635d2b00 GKH |
75 | bufferSize += 4; /* CsrWifiRouterFrameFreeFunction primitive->freeFunction */ |
76 | bufferSize += 2; /* CsrWifiRouterPriority primitive->priority */ | |
26a6b2e1 | 77 | bufferSize += 4; /* u32 primitive->hostTag */ |
5379b13d | 78 | bufferSize += 1; /* u8 primitive->cfmRequested */ |
635d2b00 GKH |
79 | return bufferSize; |
80 | } | |
81 | ||
82 | ||
d4fda8db | 83 | u8* CsrWifiRouterMaPacketReqSer(u8 *ptr, size_t *len, void *msg) |
635d2b00 GKH |
84 | { |
85 | CsrWifiRouterMaPacketReq *primitive = (CsrWifiRouterMaPacketReq *)msg; | |
86 | *len = 0; | |
87 | CsrUint16Ser(ptr, len, primitive->common.type); | |
8c87f69a | 88 | CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag); |
7e6f5794 | 89 | CsrUint8Ser(ptr, len, (u8) primitive->subscriptionHandle); |
8c87f69a | 90 | CsrUint16Ser(ptr, len, (u16) primitive->frameLength); |
635d2b00 GKH |
91 | if (primitive->frameLength) |
92 | { | |
8c87f69a | 93 | CsrMemCpySer(ptr, len, (const void *) primitive->frame, ((u16) (primitive->frameLength))); |
635d2b00 GKH |
94 | } |
95 | CsrUint32Ser(ptr, len, 0); /* Special for Function Pointers... primitive->freeFunction */ | |
8c87f69a | 96 | CsrUint16Ser(ptr, len, (u16) primitive->priority); |
26a6b2e1 | 97 | CsrUint32Ser(ptr, len, (u32) primitive->hostTag); |
7e6f5794 | 98 | CsrUint8Ser(ptr, len, (u8) primitive->cfmRequested); |
635d2b00 GKH |
99 | return(ptr); |
100 | } | |
101 | ||
102 | ||
d4fda8db | 103 | void* CsrWifiRouterMaPacketReqDes(u8 *buffer, size_t length) |
635d2b00 | 104 | { |
786eeeb3 | 105 | CsrWifiRouterMaPacketReq *primitive = kmalloc(sizeof(CsrWifiRouterMaPacketReq), GFP_KERNEL); |
d4fda8db | 106 | size_t offset; |
635d2b00 GKH |
107 | offset = 0; |
108 | ||
109 | CsrUint16Des(&primitive->common.type, buffer, &offset); | |
8c87f69a | 110 | CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset); |
7e6f5794 | 111 | CsrUint8Des((u8 *) &primitive->subscriptionHandle, buffer, &offset); |
8c87f69a | 112 | CsrUint16Des((u16 *) &primitive->frameLength, buffer, &offset); |
635d2b00 GKH |
113 | if (primitive->frameLength) |
114 | { | |
786eeeb3 | 115 | primitive->frame = kmalloc(primitive->frameLength, GFP_KERNEL); |
8c87f69a | 116 | CsrMemCpyDes(primitive->frame, buffer, &offset, ((u16) (primitive->frameLength))); |
635d2b00 GKH |
117 | } |
118 | else | |
119 | { | |
120 | primitive->frame = NULL; | |
121 | } | |
122 | primitive->freeFunction = NULL; /* Special for Function Pointers... */ | |
123 | offset += 4; | |
8c87f69a | 124 | CsrUint16Des((u16 *) &primitive->priority, buffer, &offset); |
26a6b2e1 | 125 | CsrUint32Des((u32 *) &primitive->hostTag, buffer, &offset); |
7e6f5794 | 126 | CsrUint8Des((u8 *) &primitive->cfmRequested, buffer, &offset); |
635d2b00 GKH |
127 | |
128 | return primitive; | |
129 | } | |
130 | ||
131 | ||
132 | void CsrWifiRouterMaPacketReqSerFree(void *voidPrimitivePointer) | |
133 | { | |
134 | CsrWifiRouterMaPacketReq *primitive = (CsrWifiRouterMaPacketReq *) voidPrimitivePointer; | |
55a27055 GKH |
135 | kfree(primitive->frame); |
136 | kfree(primitive); | |
635d2b00 GKH |
137 | } |
138 | ||
139 | ||
d4fda8db | 140 | size_t CsrWifiRouterMaPacketResSizeof(void *msg) |
635d2b00 | 141 | { |
d4fda8db | 142 | size_t bufferSize = 2; |
635d2b00 GKH |
143 | |
144 | /* Calculate the Size of the Serialised Data. Could be more efficient (Try 8) */ | |
8c87f69a | 145 | bufferSize += 2; /* u16 primitive->interfaceTag */ |
7e6f5794 | 146 | bufferSize += 1; /* u8 primitive->subscriptionHandle */ |
635d2b00 GKH |
147 | bufferSize += 2; /* CsrResult primitive->result */ |
148 | return bufferSize; | |
149 | } | |
150 | ||
151 | ||
d4fda8db | 152 | u8* CsrWifiRouterMaPacketResSer(u8 *ptr, size_t *len, void *msg) |
635d2b00 GKH |
153 | { |
154 | CsrWifiRouterMaPacketRes *primitive = (CsrWifiRouterMaPacketRes *)msg; | |
155 | *len = 0; | |
156 | CsrUint16Ser(ptr, len, primitive->common.type); | |
8c87f69a | 157 | CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag); |
7e6f5794 | 158 | CsrUint8Ser(ptr, len, (u8) primitive->subscriptionHandle); |
8c87f69a | 159 | CsrUint16Ser(ptr, len, (u16) primitive->result); |
635d2b00 GKH |
160 | return(ptr); |
161 | } | |
162 | ||
163 | ||
d4fda8db | 164 | void* CsrWifiRouterMaPacketResDes(u8 *buffer, size_t length) |
635d2b00 | 165 | { |
786eeeb3 | 166 | CsrWifiRouterMaPacketRes *primitive = kmalloc(sizeof(CsrWifiRouterMaPacketRes), GFP_KERNEL); |
d4fda8db | 167 | size_t offset; |
635d2b00 GKH |
168 | offset = 0; |
169 | ||
170 | CsrUint16Des(&primitive->common.type, buffer, &offset); | |
8c87f69a | 171 | CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset); |
7e6f5794 | 172 | CsrUint8Des((u8 *) &primitive->subscriptionHandle, buffer, &offset); |
8c87f69a | 173 | CsrUint16Des((u16 *) &primitive->result, buffer, &offset); |
635d2b00 GKH |
174 | |
175 | return primitive; | |
176 | } | |
177 | ||
178 | ||
d4fda8db | 179 | size_t CsrWifiRouterMaPacketCancelReqSizeof(void *msg) |
635d2b00 | 180 | { |
d4fda8db | 181 | size_t bufferSize = 2; |
635d2b00 GKH |
182 | |
183 | /* Calculate the Size of the Serialised Data. Could be more efficient (Try 17) */ | |
8c87f69a | 184 | bufferSize += 2; /* u16 primitive->interfaceTag */ |
26a6b2e1 | 185 | bufferSize += 4; /* u32 primitive->hostTag */ |
635d2b00 | 186 | bufferSize += 2; /* CsrWifiRouterPriority primitive->priority */ |
7e6f5794 | 187 | bufferSize += 6; /* u8 primitive->peerMacAddress.a[6] */ |
635d2b00 GKH |
188 | return bufferSize; |
189 | } | |
190 | ||
191 | ||
d4fda8db | 192 | u8* CsrWifiRouterMaPacketCancelReqSer(u8 *ptr, size_t *len, void *msg) |
635d2b00 GKH |
193 | { |
194 | CsrWifiRouterMaPacketCancelReq *primitive = (CsrWifiRouterMaPacketCancelReq *)msg; | |
195 | *len = 0; | |
196 | CsrUint16Ser(ptr, len, primitive->common.type); | |
8c87f69a | 197 | CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag); |
26a6b2e1 | 198 | CsrUint32Ser(ptr, len, (u32) primitive->hostTag); |
8c87f69a GKH |
199 | CsrUint16Ser(ptr, len, (u16) primitive->priority); |
200 | CsrMemCpySer(ptr, len, (const void *) primitive->peerMacAddress.a, ((u16) (6))); | |
635d2b00 GKH |
201 | return(ptr); |
202 | } | |
203 | ||
204 | ||
d4fda8db | 205 | void* CsrWifiRouterMaPacketCancelReqDes(u8 *buffer, size_t length) |
635d2b00 | 206 | { |
786eeeb3 | 207 | CsrWifiRouterMaPacketCancelReq *primitive = kmalloc(sizeof(CsrWifiRouterMaPacketCancelReq), GFP_KERNEL); |
d4fda8db | 208 | size_t offset; |
635d2b00 GKH |
209 | offset = 0; |
210 | ||
211 | CsrUint16Des(&primitive->common.type, buffer, &offset); | |
8c87f69a | 212 | CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset); |
26a6b2e1 | 213 | CsrUint32Des((u32 *) &primitive->hostTag, buffer, &offset); |
8c87f69a GKH |
214 | CsrUint16Des((u16 *) &primitive->priority, buffer, &offset); |
215 | CsrMemCpyDes(primitive->peerMacAddress.a, buffer, &offset, ((u16) (6))); | |
635d2b00 GKH |
216 | |
217 | return primitive; | |
218 | } | |
219 | ||
220 | ||
d4fda8db | 221 | size_t CsrWifiRouterMaPacketSubscribeCfmSizeof(void *msg) |
635d2b00 | 222 | { |
d4fda8db | 223 | size_t bufferSize = 2; |
635d2b00 GKH |
224 | |
225 | /* Calculate the Size of the Serialised Data. Could be more efficient (Try 10) */ | |
8c87f69a | 226 | bufferSize += 2; /* u16 primitive->interfaceTag */ |
7e6f5794 | 227 | bufferSize += 1; /* u8 primitive->subscriptionHandle */ |
635d2b00 | 228 | bufferSize += 2; /* CsrResult primitive->status */ |
8c87f69a | 229 | bufferSize += 2; /* u16 primitive->allocOffset */ |
635d2b00 GKH |
230 | return bufferSize; |
231 | } | |
232 | ||
233 | ||
d4fda8db | 234 | u8* CsrWifiRouterMaPacketSubscribeCfmSer(u8 *ptr, size_t *len, void *msg) |
635d2b00 GKH |
235 | { |
236 | CsrWifiRouterMaPacketSubscribeCfm *primitive = (CsrWifiRouterMaPacketSubscribeCfm *)msg; | |
237 | *len = 0; | |
238 | CsrUint16Ser(ptr, len, primitive->common.type); | |
8c87f69a | 239 | CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag); |
7e6f5794 | 240 | CsrUint8Ser(ptr, len, (u8) primitive->subscriptionHandle); |
8c87f69a GKH |
241 | CsrUint16Ser(ptr, len, (u16) primitive->status); |
242 | CsrUint16Ser(ptr, len, (u16) primitive->allocOffset); | |
635d2b00 GKH |
243 | return(ptr); |
244 | } | |
245 | ||
246 | ||
d4fda8db | 247 | void* CsrWifiRouterMaPacketSubscribeCfmDes(u8 *buffer, size_t length) |
635d2b00 | 248 | { |
786eeeb3 | 249 | CsrWifiRouterMaPacketSubscribeCfm *primitive = kmalloc(sizeof(CsrWifiRouterMaPacketSubscribeCfm), GFP_KERNEL); |
d4fda8db | 250 | size_t offset; |
635d2b00 GKH |
251 | offset = 0; |
252 | ||
253 | CsrUint16Des(&primitive->common.type, buffer, &offset); | |
8c87f69a | 254 | CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset); |
7e6f5794 | 255 | CsrUint8Des((u8 *) &primitive->subscriptionHandle, buffer, &offset); |
8c87f69a GKH |
256 | CsrUint16Des((u16 *) &primitive->status, buffer, &offset); |
257 | CsrUint16Des((u16 *) &primitive->allocOffset, buffer, &offset); | |
635d2b00 GKH |
258 | |
259 | return primitive; | |
260 | } | |
261 | ||
262 | ||
d4fda8db | 263 | size_t CsrWifiRouterMaPacketUnsubscribeCfmSizeof(void *msg) |
635d2b00 | 264 | { |
d4fda8db | 265 | size_t bufferSize = 2; |
635d2b00 GKH |
266 | |
267 | /* Calculate the Size of the Serialised Data. Could be more efficient (Try 7) */ | |
8c87f69a | 268 | bufferSize += 2; /* u16 primitive->interfaceTag */ |
635d2b00 GKH |
269 | bufferSize += 2; /* CsrResult primitive->status */ |
270 | return bufferSize; | |
271 | } | |
272 | ||
273 | ||
d4fda8db | 274 | u8* CsrWifiRouterMaPacketUnsubscribeCfmSer(u8 *ptr, size_t *len, void *msg) |
635d2b00 GKH |
275 | { |
276 | CsrWifiRouterMaPacketUnsubscribeCfm *primitive = (CsrWifiRouterMaPacketUnsubscribeCfm *)msg; | |
277 | *len = 0; | |
278 | CsrUint16Ser(ptr, len, primitive->common.type); | |
8c87f69a GKH |
279 | CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag); |
280 | CsrUint16Ser(ptr, len, (u16) primitive->status); | |
635d2b00 GKH |
281 | return(ptr); |
282 | } | |
283 | ||
284 | ||
d4fda8db | 285 | void* CsrWifiRouterMaPacketUnsubscribeCfmDes(u8 *buffer, size_t length) |
635d2b00 | 286 | { |
786eeeb3 | 287 | CsrWifiRouterMaPacketUnsubscribeCfm *primitive = kmalloc(sizeof(CsrWifiRouterMaPacketUnsubscribeCfm), GFP_KERNEL); |
d4fda8db | 288 | size_t offset; |
635d2b00 GKH |
289 | offset = 0; |
290 | ||
291 | CsrUint16Des(&primitive->common.type, buffer, &offset); | |
8c87f69a GKH |
292 | CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset); |
293 | CsrUint16Des((u16 *) &primitive->status, buffer, &offset); | |
635d2b00 GKH |
294 | |
295 | return primitive; | |
296 | } | |
297 | ||
298 | ||
d4fda8db | 299 | size_t CsrWifiRouterMaPacketCfmSizeof(void *msg) |
635d2b00 | 300 | { |
d4fda8db | 301 | size_t bufferSize = 2; |
635d2b00 GKH |
302 | |
303 | /* Calculate the Size of the Serialised Data. Could be more efficient (Try 13) */ | |
8c87f69a | 304 | bufferSize += 2; /* u16 primitive->interfaceTag */ |
635d2b00 | 305 | bufferSize += 2; /* CsrResult primitive->result */ |
26a6b2e1 | 306 | bufferSize += 4; /* u32 primitive->hostTag */ |
8c87f69a | 307 | bufferSize += 2; /* u16 primitive->rate */ |
635d2b00 GKH |
308 | return bufferSize; |
309 | } | |
310 | ||
311 | ||
d4fda8db | 312 | u8* CsrWifiRouterMaPacketCfmSer(u8 *ptr, size_t *len, void *msg) |
635d2b00 GKH |
313 | { |
314 | CsrWifiRouterMaPacketCfm *primitive = (CsrWifiRouterMaPacketCfm *)msg; | |
315 | *len = 0; | |
316 | CsrUint16Ser(ptr, len, primitive->common.type); | |
8c87f69a GKH |
317 | CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag); |
318 | CsrUint16Ser(ptr, len, (u16) primitive->result); | |
26a6b2e1 | 319 | CsrUint32Ser(ptr, len, (u32) primitive->hostTag); |
8c87f69a | 320 | CsrUint16Ser(ptr, len, (u16) primitive->rate); |
635d2b00 GKH |
321 | return(ptr); |
322 | } | |
323 | ||
324 | ||
d4fda8db | 325 | void* CsrWifiRouterMaPacketCfmDes(u8 *buffer, size_t length) |
635d2b00 | 326 | { |
786eeeb3 | 327 | CsrWifiRouterMaPacketCfm *primitive = kmalloc(sizeof(CsrWifiRouterMaPacketCfm), GFP_KERNEL); |
d4fda8db | 328 | size_t offset; |
635d2b00 GKH |
329 | offset = 0; |
330 | ||
331 | CsrUint16Des(&primitive->common.type, buffer, &offset); | |
8c87f69a GKH |
332 | CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset); |
333 | CsrUint16Des((u16 *) &primitive->result, buffer, &offset); | |
26a6b2e1 | 334 | CsrUint32Des((u32 *) &primitive->hostTag, buffer, &offset); |
8c87f69a | 335 | CsrUint16Des((u16 *) &primitive->rate, buffer, &offset); |
635d2b00 GKH |
336 | |
337 | return primitive; | |
338 | } | |
339 | ||
340 | ||
d4fda8db | 341 | size_t CsrWifiRouterMaPacketIndSizeof(void *msg) |
635d2b00 GKH |
342 | { |
343 | CsrWifiRouterMaPacketInd *primitive = (CsrWifiRouterMaPacketInd *) msg; | |
d4fda8db | 344 | size_t bufferSize = 2; |
635d2b00 GKH |
345 | |
346 | /* Calculate the Size of the Serialised Data. Could be more efficient (Try 21) */ | |
8c87f69a | 347 | bufferSize += 2; /* u16 primitive->interfaceTag */ |
7e6f5794 | 348 | bufferSize += 1; /* u8 primitive->subscriptionHandle */ |
635d2b00 | 349 | bufferSize += 2; /* CsrResult primitive->result */ |
8c87f69a | 350 | bufferSize += 2; /* u16 primitive->frameLength */ |
7e6f5794 | 351 | bufferSize += primitive->frameLength; /* u8 primitive->frame */ |
635d2b00 | 352 | bufferSize += 4; /* CsrWifiRouterFrameFreeFunction primitive->freeFunction */ |
ab2b8c73 GKH |
353 | bufferSize += 2; /* s16 primitive->rssi */ |
354 | bufferSize += 2; /* s16 primitive->snr */ | |
8c87f69a | 355 | bufferSize += 2; /* u16 primitive->rate */ |
635d2b00 GKH |
356 | return bufferSize; |
357 | } | |
358 | ||
359 | ||
d4fda8db | 360 | u8* CsrWifiRouterMaPacketIndSer(u8 *ptr, size_t *len, void *msg) |
635d2b00 GKH |
361 | { |
362 | CsrWifiRouterMaPacketInd *primitive = (CsrWifiRouterMaPacketInd *)msg; | |
363 | *len = 0; | |
364 | CsrUint16Ser(ptr, len, primitive->common.type); | |
8c87f69a | 365 | CsrUint16Ser(ptr, len, (u16) primitive->interfaceTag); |
7e6f5794 | 366 | CsrUint8Ser(ptr, len, (u8) primitive->subscriptionHandle); |
8c87f69a GKH |
367 | CsrUint16Ser(ptr, len, (u16) primitive->result); |
368 | CsrUint16Ser(ptr, len, (u16) primitive->frameLength); | |
635d2b00 GKH |
369 | if (primitive->frameLength) |
370 | { | |
8c87f69a | 371 | CsrMemCpySer(ptr, len, (const void *) primitive->frame, ((u16) (primitive->frameLength))); |
635d2b00 GKH |
372 | } |
373 | CsrUint32Ser(ptr, len, 0); /* Special for Function Pointers... primitive->freeFunction */ | |
8c87f69a GKH |
374 | CsrUint16Ser(ptr, len, (u16) primitive->rssi); |
375 | CsrUint16Ser(ptr, len, (u16) primitive->snr); | |
376 | CsrUint16Ser(ptr, len, (u16) primitive->rate); | |
635d2b00 GKH |
377 | return(ptr); |
378 | } | |
379 | ||
380 | ||
d4fda8db | 381 | void* CsrWifiRouterMaPacketIndDes(u8 *buffer, size_t length) |
635d2b00 | 382 | { |
786eeeb3 | 383 | CsrWifiRouterMaPacketInd *primitive = kmalloc(sizeof(CsrWifiRouterMaPacketInd), GFP_KERNEL); |
d4fda8db | 384 | size_t offset; |
635d2b00 GKH |
385 | offset = 0; |
386 | ||
387 | CsrUint16Des(&primitive->common.type, buffer, &offset); | |
8c87f69a | 388 | CsrUint16Des((u16 *) &primitive->interfaceTag, buffer, &offset); |
7e6f5794 | 389 | CsrUint8Des((u8 *) &primitive->subscriptionHandle, buffer, &offset); |
8c87f69a GKH |
390 | CsrUint16Des((u16 *) &primitive->result, buffer, &offset); |
391 | CsrUint16Des((u16 *) &primitive->frameLength, buffer, &offset); | |
635d2b00 GKH |
392 | if (primitive->frameLength) |
393 | { | |
786eeeb3 | 394 | primitive->frame = kmalloc(primitive->frameLength, GFP_KERNEL); |
8c87f69a | 395 | CsrMemCpyDes(primitive->frame, buffer, &offset, ((u16) (primitive->frameLength))); |
635d2b00 GKH |
396 | } |
397 | else | |
398 | { | |
399 | primitive->frame = NULL; | |
400 | } | |
401 | primitive->freeFunction = NULL; /* Special for Function Pointers... */ | |
402 | offset += 4; | |
8c87f69a GKH |
403 | CsrUint16Des((u16 *) &primitive->rssi, buffer, &offset); |
404 | CsrUint16Des((u16 *) &primitive->snr, buffer, &offset); | |
405 | CsrUint16Des((u16 *) &primitive->rate, buffer, &offset); | |
635d2b00 GKH |
406 | |
407 | return primitive; | |
408 | } | |
409 | ||
410 | ||
411 | void CsrWifiRouterMaPacketIndSerFree(void *voidPrimitivePointer) | |
412 | { | |
413 | CsrWifiRouterMaPacketInd *primitive = (CsrWifiRouterMaPacketInd *) voidPrimitivePointer; | |
55a27055 GKH |
414 | kfree(primitive->frame); |
415 | kfree(primitive); | |
635d2b00 GKH |
416 | } |
417 | ||
418 |