1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55#include "tmacro.h"
56#include "tether.h"
57#include "80211mgr.h"
58#include "80211hdr.h"
59#include "device.h"
60#include "wpa.h"
61
62
63
64
65
66
67
68
69
70static int msglevel =MSG_LEVEL_INFO;
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92VOID
93vMgrEncodeBeacon(
94 IN PWLAN_FR_BEACON pFrame
95 )
96{
97 pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
98
99
100 pFrame->pqwTimestamp = (PQWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
101 + WLAN_BEACON_OFF_TS);
102 pFrame->pwBeaconInterval = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
103 + WLAN_BEACON_OFF_BCN_INT);
104 pFrame->pwCapInfo = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
105 + WLAN_BEACON_OFF_CAPINFO);
106
107 pFrame->len = WLAN_HDR_ADDR3_LEN + WLAN_BEACON_OFF_SSID;
108
109 return;
110}
111
112
113
114
115
116
117
118
119
120
121
122
123
124VOID
125vMgrDecodeBeacon(
126 IN PWLAN_FR_BEACON pFrame
127 )
128{
129 PWLAN_IE pItem;
130
131 pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
132
133
134 pFrame->pqwTimestamp = (PQWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
135 + WLAN_BEACON_OFF_TS);
136 pFrame->pwBeaconInterval = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
137 + WLAN_BEACON_OFF_BCN_INT);
138 pFrame->pwCapInfo = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
139 + WLAN_BEACON_OFF_CAPINFO);
140
141
142 pItem = (PWLAN_IE)((PBYTE)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3)))
143 + WLAN_BEACON_OFF_SSID);
144 while( ((PBYTE)pItem) < (pFrame->pBuf + pFrame->len) ){
145
146 switch (pItem->byElementID) {
147 case WLAN_EID_SSID:
148 if (pFrame->pSSID == NULL)
149 pFrame->pSSID = (PWLAN_IE_SSID)pItem;
150 break;
151 case WLAN_EID_SUPP_RATES:
152 if (pFrame->pSuppRates == NULL)
153 pFrame->pSuppRates = (PWLAN_IE_SUPP_RATES)pItem;
154 break;
155 case WLAN_EID_FH_PARMS:
156
157 break;
158 case WLAN_EID_DS_PARMS:
159 if (pFrame->pDSParms == NULL)
160 pFrame->pDSParms = (PWLAN_IE_DS_PARMS)pItem;
161 break;
162 case WLAN_EID_CF_PARMS:
163 if (pFrame->pCFParms == NULL)
164 pFrame->pCFParms = (PWLAN_IE_CF_PARMS)pItem;
165 break;
166 case WLAN_EID_IBSS_PARMS:
167 if (pFrame->pIBSSParms == NULL)
168 pFrame->pIBSSParms = (PWLAN_IE_IBSS_PARMS)pItem;
169 break;
170 case WLAN_EID_TIM:
171 if (pFrame->pTIM == NULL)
172 pFrame->pTIM = (PWLAN_IE_TIM)pItem;
173 break;
174
175 case WLAN_EID_RSN:
176 if (pFrame->pRSN == NULL) {
177 pFrame->pRSN = (PWLAN_IE_RSN)pItem;
178 }
179 break;
180 case WLAN_EID_RSN_WPA:
181 if (pFrame->pRSNWPA == NULL) {
182 if (WPAb_Is_RSN((PWLAN_IE_RSN_EXT)pItem) == TRUE)
183 pFrame->pRSNWPA = (PWLAN_IE_RSN_EXT)pItem;
184 }
185 break;
186
187 case WLAN_EID_ERP:
188 if (pFrame->pERP == NULL)
189 pFrame->pERP = (PWLAN_IE_ERP)pItem;
190 break;
191 case WLAN_EID_EXTSUPP_RATES:
192 if (pFrame->pExtSuppRates == NULL)
193 pFrame->pExtSuppRates = (PWLAN_IE_SUPP_RATES)pItem;
194 break;
195
196 case WLAN_EID_COUNTRY:
197 if (pFrame->pIE_Country == NULL)
198 pFrame->pIE_Country = (PWLAN_IE_COUNTRY)pItem;
199 break;
200
201 case WLAN_EID_PWR_CONSTRAINT:
202 if (pFrame->pIE_PowerConstraint == NULL)
203 pFrame->pIE_PowerConstraint = (PWLAN_IE_PW_CONST)pItem;
204 break;
205
206 case WLAN_EID_CH_SWITCH:
207 if (pFrame->pIE_CHSW == NULL)
208 pFrame->pIE_CHSW = (PWLAN_IE_CH_SW)pItem;
209 break;
210
211 case WLAN_EID_QUIET:
212 if (pFrame->pIE_Quiet == NULL)
213 pFrame->pIE_Quiet = (PWLAN_IE_QUIET)pItem;
214 break;
215
216 case WLAN_EID_IBSS_DFS:
217 if (pFrame->pIE_IBSSDFS == NULL)
218 pFrame->pIE_IBSSDFS = (PWLAN_IE_IBSS_DFS)pItem;
219 break;
220
221 default:
222 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Unrecognized EID=%dd in beacon decode.\n", pItem->byElementID);
223 break;
224
225 }
226 pItem = (PWLAN_IE)(((PBYTE)pItem) + 2 + pItem->len);
227 }
228
229 return;
230}
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245VOID
246vMgrEncodeIBSSATIM(
247 IN PWLAN_FR_IBSSATIM pFrame
248 )
249{
250 pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
251 pFrame->len = WLAN_HDR_ADDR3_LEN;
252
253 return;
254}
255
256
257
258
259
260
261
262
263
264
265
266
267
268VOID
269vMgrDecodeIBSSATIM(
270 IN PWLAN_FR_IBSSATIM pFrame
271 )
272{
273 pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
274
275 return;
276}
277
278
279
280
281
282
283
284
285
286
287
288
289
290VOID
291vMgrEncodeDisassociation(
292 IN PWLAN_FR_DISASSOC pFrame
293 )
294{
295 pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
296
297
298
299 pFrame->pwReason = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
300 + WLAN_DISASSOC_OFF_REASON);
301 pFrame->len = WLAN_HDR_ADDR3_LEN + WLAN_DISASSOC_OFF_REASON + sizeof(*(pFrame->pwReason));
302
303 return;
304}
305
306
307
308
309
310
311
312
313
314
315
316
317
318VOID
319vMgrDecodeDisassociation(
320 IN PWLAN_FR_DISASSOC pFrame
321 )
322{
323 pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
324
325
326 pFrame->pwReason = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
327 + WLAN_DISASSOC_OFF_REASON);
328
329 return;
330}
331
332
333
334
335
336
337
338
339
340
341
342
343
344VOID
345vMgrEncodeAssocRequest(
346 IN PWLAN_FR_ASSOCREQ pFrame
347 )
348{
349 pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
350
351 pFrame->pwCapInfo = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
352 + WLAN_ASSOCREQ_OFF_CAP_INFO);
353 pFrame->pwListenInterval = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
354 + WLAN_ASSOCREQ_OFF_LISTEN_INT);
355 pFrame->len = WLAN_HDR_ADDR3_LEN + WLAN_ASSOCREQ_OFF_LISTEN_INT + sizeof(*(pFrame->pwListenInterval));
356 return;
357}
358
359
360
361
362
363
364
365
366
367
368
369
370
371VOID
372vMgrDecodeAssocRequest(
373 IN PWLAN_FR_ASSOCREQ pFrame
374 )
375{
376 PWLAN_IE pItem;
377
378 pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
379
380 pFrame->pwCapInfo = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
381 + WLAN_ASSOCREQ_OFF_CAP_INFO);
382 pFrame->pwListenInterval = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
383 + WLAN_ASSOCREQ_OFF_LISTEN_INT);
384
385
386 pItem = (PWLAN_IE)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
387 + WLAN_ASSOCREQ_OFF_SSID);
388
389 while (((PBYTE)pItem) < (pFrame->pBuf + pFrame->len)) {
390 switch (pItem->byElementID){
391 case WLAN_EID_SSID:
392 if (pFrame->pSSID == NULL)
393 pFrame->pSSID = (PWLAN_IE_SSID)pItem;
394 break;
395 case WLAN_EID_SUPP_RATES:
396 if (pFrame->pSuppRates == NULL)
397 pFrame->pSuppRates = (PWLAN_IE_SUPP_RATES)pItem;
398 break;
399
400 case WLAN_EID_RSN:
401 if (pFrame->pRSN == NULL) {
402 pFrame->pRSN = (PWLAN_IE_RSN)pItem;
403 }
404 break;
405 case WLAN_EID_RSN_WPA:
406 if (pFrame->pRSNWPA == NULL) {
407 if (WPAb_Is_RSN((PWLAN_IE_RSN_EXT)pItem) == TRUE)
408 pFrame->pRSNWPA = (PWLAN_IE_RSN_EXT)pItem;
409 }
410 break;
411 case WLAN_EID_EXTSUPP_RATES:
412 if (pFrame->pExtSuppRates == NULL)
413 pFrame->pExtSuppRates = (PWLAN_IE_SUPP_RATES)pItem;
414 break;
415
416 default:
417 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Unrecognized EID=%dd in assocreq decode.\n",
418 pItem->byElementID);
419 break;
420 }
421 pItem = (PWLAN_IE)(((PBYTE)pItem) + 2 + pItem->len);
422 }
423 return;
424}
425
426
427
428
429
430
431
432
433
434
435
436
437VOID
438vMgrEncodeAssocResponse(
439 IN PWLAN_FR_ASSOCRESP pFrame
440 )
441{
442 pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
443
444
445 pFrame->pwCapInfo = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
446 + WLAN_ASSOCRESP_OFF_CAP_INFO);
447 pFrame->pwStatus = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
448 + WLAN_ASSOCRESP_OFF_STATUS);
449 pFrame->pwAid = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
450 + WLAN_ASSOCRESP_OFF_AID);
451 pFrame->len = WLAN_HDR_ADDR3_LEN + WLAN_ASSOCRESP_OFF_AID
452 + sizeof(*(pFrame->pwAid));
453
454 return;
455}
456
457
458
459
460
461
462
463
464
465
466
467
468
469VOID
470vMgrDecodeAssocResponse(
471 IN PWLAN_FR_ASSOCRESP pFrame
472 )
473{
474 PWLAN_IE pItem;
475
476 pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
477
478
479 pFrame->pwCapInfo = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
480 + WLAN_ASSOCRESP_OFF_CAP_INFO);
481 pFrame->pwStatus = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
482 + WLAN_ASSOCRESP_OFF_STATUS);
483 pFrame->pwAid = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
484 + WLAN_ASSOCRESP_OFF_AID);
485
486
487 pFrame->pSuppRates = (PWLAN_IE_SUPP_RATES)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
488 + WLAN_ASSOCRESP_OFF_SUPP_RATES);
489
490 pItem = (PWLAN_IE)(pFrame->pSuppRates);
491 pItem = (PWLAN_IE)(((PBYTE)pItem) + 2 + pItem->len);
492
493 if ((((PBYTE)pItem) < (pFrame->pBuf + pFrame->len)) && (pItem->byElementID == WLAN_EID_EXTSUPP_RATES)) {
494 pFrame->pExtSuppRates = (PWLAN_IE_SUPP_RATES)pItem;
495 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "pFrame->pExtSuppRates=[%p].\n", pItem);
496 }
497 else {
498 pFrame->pExtSuppRates = NULL;
499 }
500 return;
501}
502
503
504
505
506
507
508
509
510
511
512
513
514
515VOID
516vMgrEncodeReassocRequest(
517 IN PWLAN_FR_REASSOCREQ pFrame
518 )
519{
520 pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
521
522
523 pFrame->pwCapInfo = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
524 + WLAN_REASSOCREQ_OFF_CAP_INFO);
525 pFrame->pwListenInterval = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
526 + WLAN_REASSOCREQ_OFF_LISTEN_INT);
527 pFrame->pAddrCurrAP = (PIEEE_ADDR)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
528 + WLAN_REASSOCREQ_OFF_CURR_AP);
529 pFrame->len = WLAN_HDR_ADDR3_LEN + WLAN_REASSOCREQ_OFF_CURR_AP + sizeof(*(pFrame->pAddrCurrAP));
530
531 return;
532}
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547VOID
548vMgrDecodeReassocRequest(
549 IN PWLAN_FR_REASSOCREQ pFrame
550 )
551{
552 PWLAN_IE pItem;
553 pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
554
555
556 pFrame->pwCapInfo = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
557 + WLAN_REASSOCREQ_OFF_CAP_INFO);
558 pFrame->pwListenInterval = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
559 + WLAN_REASSOCREQ_OFF_LISTEN_INT);
560 pFrame->pAddrCurrAP = (PIEEE_ADDR)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
561 + WLAN_REASSOCREQ_OFF_CURR_AP);
562
563
564 pItem = (PWLAN_IE)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
565 + WLAN_REASSOCREQ_OFF_SSID);
566
567 while(((PBYTE)pItem) < (pFrame->pBuf + pFrame->len)) {
568
569 switch (pItem->byElementID){
570 case WLAN_EID_SSID:
571 if (pFrame->pSSID == NULL)
572 pFrame->pSSID = (PWLAN_IE_SSID)pItem;
573 break;
574 case WLAN_EID_SUPP_RATES:
575 if (pFrame->pSuppRates == NULL)
576 pFrame->pSuppRates = (PWLAN_IE_SUPP_RATES)pItem;
577 break;
578
579 case WLAN_EID_RSN:
580 if (pFrame->pRSN == NULL) {
581 pFrame->pRSN = (PWLAN_IE_RSN)pItem;
582 }
583 break;
584 case WLAN_EID_RSN_WPA:
585 if (pFrame->pRSNWPA == NULL) {
586 if (WPAb_Is_RSN((PWLAN_IE_RSN_EXT)pItem) == TRUE)
587 pFrame->pRSNWPA = (PWLAN_IE_RSN_EXT)pItem;
588 }
589 break;
590
591 case WLAN_EID_EXTSUPP_RATES:
592 if (pFrame->pExtSuppRates == NULL)
593 pFrame->pExtSuppRates = (PWLAN_IE_SUPP_RATES)pItem;
594 break;
595 default:
596 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Unrecognized EID=%dd in reassocreq decode.\n",
597 pItem->byElementID);
598 break;
599 }
600 pItem = (PWLAN_IE)(((PBYTE)pItem) + 2 + pItem->len);
601 }
602 return;
603}
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619VOID
620vMgrEncodeProbeRequest(
621 IN PWLAN_FR_PROBEREQ pFrame
622 )
623{
624 pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
625 pFrame->len = WLAN_HDR_ADDR3_LEN;
626 return;
627}
628
629
630
631
632
633
634
635
636
637
638
639
640VOID
641vMgrDecodeProbeRequest(
642 IN PWLAN_FR_PROBEREQ pFrame
643 )
644{
645 PWLAN_IE pItem;
646
647 pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
648
649
650 pItem = (PWLAN_IE)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3)));
651
652 while( ((PBYTE)pItem) < (pFrame->pBuf + pFrame->len) ) {
653
654 switch (pItem->byElementID) {
655 case WLAN_EID_SSID:
656 if (pFrame->pSSID == NULL)
657 pFrame->pSSID = (PWLAN_IE_SSID)pItem;
658 break;
659
660 case WLAN_EID_SUPP_RATES:
661 if (pFrame->pSuppRates == NULL)
662 pFrame->pSuppRates = (PWLAN_IE_SUPP_RATES)pItem;
663 break;
664
665 case WLAN_EID_EXTSUPP_RATES:
666 if (pFrame->pExtSuppRates == NULL)
667 pFrame->pExtSuppRates = (PWLAN_IE_SUPP_RATES)pItem;
668 break;
669
670 default:
671 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Bad EID=%dd in probereq\n", pItem->byElementID);
672 break;
673 }
674
675 pItem = (PWLAN_IE)(((PBYTE)pItem) + 2 + pItem->len);
676 }
677 return;
678}
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693VOID
694vMgrEncodeProbeResponse(
695 IN PWLAN_FR_PROBERESP pFrame
696 )
697{
698 pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
699
700
701 pFrame->pqwTimestamp = (PQWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
702 + WLAN_PROBERESP_OFF_TS);
703 pFrame->pwBeaconInterval = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
704 + WLAN_PROBERESP_OFF_BCN_INT);
705 pFrame->pwCapInfo = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
706 + WLAN_PROBERESP_OFF_CAP_INFO);
707
708 pFrame->len = WLAN_HDR_ADDR3_LEN + WLAN_PROBERESP_OFF_CAP_INFO +
709 sizeof(*(pFrame->pwCapInfo));
710
711 return;
712}
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727VOID
728vMgrDecodeProbeResponse(
729 IN PWLAN_FR_PROBERESP pFrame
730 )
731{
732 PWLAN_IE pItem;
733
734
735 pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
736
737
738 pFrame->pqwTimestamp = (PQWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
739 + WLAN_PROBERESP_OFF_TS);
740 pFrame->pwBeaconInterval = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
741 + WLAN_PROBERESP_OFF_BCN_INT);
742 pFrame->pwCapInfo = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
743 + WLAN_PROBERESP_OFF_CAP_INFO);
744
745
746 pItem = (PWLAN_IE)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
747 + WLAN_PROBERESP_OFF_SSID);
748
749 while( ((PBYTE)pItem) < (pFrame->pBuf + pFrame->len) ) {
750 switch (pItem->byElementID) {
751 case WLAN_EID_SSID:
752 if (pFrame->pSSID == NULL)
753 pFrame->pSSID = (PWLAN_IE_SSID)pItem;
754 break;
755 case WLAN_EID_SUPP_RATES:
756 if (pFrame->pSuppRates == NULL)
757 pFrame->pSuppRates = (PWLAN_IE_SUPP_RATES)pItem;
758 break;
759 case WLAN_EID_FH_PARMS:
760 break;
761 case WLAN_EID_DS_PARMS:
762 if (pFrame->pDSParms == NULL)
763 pFrame->pDSParms = (PWLAN_IE_DS_PARMS)pItem;
764 break;
765 case WLAN_EID_CF_PARMS:
766 if (pFrame->pCFParms == NULL)
767 pFrame->pCFParms = (PWLAN_IE_CF_PARMS)pItem;
768 break;
769 case WLAN_EID_IBSS_PARMS:
770 if (pFrame->pIBSSParms == NULL)
771 pFrame->pIBSSParms = (PWLAN_IE_IBSS_PARMS)pItem;
772 break;
773
774 case WLAN_EID_RSN:
775 if (pFrame->pRSN == NULL) {
776 pFrame->pRSN = (PWLAN_IE_RSN)pItem;
777 }
778 break;
779 case WLAN_EID_RSN_WPA:
780 if (pFrame->pRSNWPA == NULL) {
781 if (WPAb_Is_RSN((PWLAN_IE_RSN_EXT)pItem) == TRUE)
782 pFrame->pRSNWPA = (PWLAN_IE_RSN_EXT)pItem;
783 }
784 break;
785 case WLAN_EID_ERP:
786 if (pFrame->pERP == NULL)
787 pFrame->pERP = (PWLAN_IE_ERP)pItem;
788 break;
789 case WLAN_EID_EXTSUPP_RATES:
790 if (pFrame->pExtSuppRates == NULL)
791 pFrame->pExtSuppRates = (PWLAN_IE_SUPP_RATES)pItem;
792 break;
793
794 case WLAN_EID_COUNTRY:
795 if (pFrame->pIE_Country == NULL)
796 pFrame->pIE_Country = (PWLAN_IE_COUNTRY)pItem;
797 break;
798
799 case WLAN_EID_PWR_CONSTRAINT:
800 if (pFrame->pIE_PowerConstraint == NULL)
801 pFrame->pIE_PowerConstraint = (PWLAN_IE_PW_CONST)pItem;
802 break;
803
804 case WLAN_EID_CH_SWITCH:
805 if (pFrame->pIE_CHSW == NULL)
806 pFrame->pIE_CHSW = (PWLAN_IE_CH_SW)pItem;
807 break;
808
809 case WLAN_EID_QUIET:
810 if (pFrame->pIE_Quiet == NULL)
811 pFrame->pIE_Quiet = (PWLAN_IE_QUIET)pItem;
812 break;
813
814 case WLAN_EID_IBSS_DFS:
815 if (pFrame->pIE_IBSSDFS == NULL)
816 pFrame->pIE_IBSSDFS = (PWLAN_IE_IBSS_DFS)pItem;
817 break;
818
819 default:
820 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Bad EID=%dd in proberesp\n", pItem->byElementID);
821 break;
822 }
823
824 pItem = (PWLAN_IE)(((PBYTE)pItem) + 2 + pItem->len);
825 }
826 return;
827}
828
829
830
831
832
833
834
835
836
837
838
839
840
841VOID
842vMgrEncodeAuthen(
843 IN PWLAN_FR_AUTHEN pFrame
844 )
845{
846 pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
847
848
849 pFrame->pwAuthAlgorithm = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
850 + WLAN_AUTHEN_OFF_AUTH_ALG);
851 pFrame->pwAuthSequence = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
852 + WLAN_AUTHEN_OFF_AUTH_SEQ);
853 pFrame->pwStatus = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
854 + WLAN_AUTHEN_OFF_STATUS);
855 pFrame->len = WLAN_HDR_ADDR3_LEN + WLAN_AUTHEN_OFF_STATUS + sizeof(*(pFrame->pwStatus));
856
857 return;
858}
859
860
861
862
863
864
865
866
867
868
869
870
871
872VOID
873vMgrDecodeAuthen(
874 IN PWLAN_FR_AUTHEN pFrame
875 )
876{
877 PWLAN_IE pItem;
878
879 pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
880
881
882 pFrame->pwAuthAlgorithm = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
883 + WLAN_AUTHEN_OFF_AUTH_ALG);
884 pFrame->pwAuthSequence = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
885 + WLAN_AUTHEN_OFF_AUTH_SEQ);
886 pFrame->pwStatus = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
887 + WLAN_AUTHEN_OFF_STATUS);
888
889
890 pItem = (PWLAN_IE)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
891 + WLAN_AUTHEN_OFF_CHALLENGE);
892
893 if ((((PBYTE)pItem) < (pFrame->pBuf + pFrame->len)) && (pItem->byElementID == WLAN_EID_CHALLENGE)) {
894 pFrame->pChallenge = (PWLAN_IE_CHALLENGE)pItem;
895 }
896
897 return;
898}
899
900
901
902
903
904
905
906
907
908
909
910
911
912VOID
913vMgrEncodeDeauthen(
914 IN PWLAN_FR_DEAUTHEN pFrame
915 )
916{
917 pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
918
919
920 pFrame->pwReason = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
921 + WLAN_DEAUTHEN_OFF_REASON);
922 pFrame->len = WLAN_HDR_ADDR3_LEN + WLAN_DEAUTHEN_OFF_REASON + sizeof(*(pFrame->pwReason));
923
924 return;
925}
926
927
928
929
930
931
932
933
934
935
936
937
938
939VOID
940vMgrDecodeDeauthen(
941 IN PWLAN_FR_DEAUTHEN pFrame
942 )
943{
944 pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
945
946
947 pFrame->pwReason = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
948 + WLAN_DEAUTHEN_OFF_REASON);
949
950 return;
951}
952
953
954
955
956
957
958
959
960
961
962
963
964
965VOID
966vMgrEncodeReassocResponse(
967 IN PWLAN_FR_REASSOCRESP pFrame
968 )
969{
970 pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
971
972
973 pFrame->pwCapInfo = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
974 + WLAN_REASSOCRESP_OFF_CAP_INFO);
975 pFrame->pwStatus = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
976 + WLAN_REASSOCRESP_OFF_STATUS);
977 pFrame->pwAid = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
978 + WLAN_REASSOCRESP_OFF_AID);
979
980 pFrame->len = WLAN_HDR_ADDR3_LEN + WLAN_REASSOCRESP_OFF_AID + sizeof(*(pFrame->pwAid));
981
982 return;
983}
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998VOID
999vMgrDecodeReassocResponse(
1000 IN PWLAN_FR_REASSOCRESP pFrame
1001 )
1002{
1003 PWLAN_IE pItem;
1004
1005 pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
1006
1007
1008 pFrame->pwCapInfo = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
1009 + WLAN_REASSOCRESP_OFF_CAP_INFO);
1010 pFrame->pwStatus = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
1011 + WLAN_REASSOCRESP_OFF_STATUS);
1012 pFrame->pwAid = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
1013 + WLAN_REASSOCRESP_OFF_AID);
1014
1015
1016 pFrame->pSuppRates = (PWLAN_IE_SUPP_RATES)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
1017 + WLAN_REASSOCRESP_OFF_SUPP_RATES);
1018
1019 pItem = (PWLAN_IE)(pFrame->pSuppRates);
1020 pItem = (PWLAN_IE)(((PBYTE)pItem) + 2 + pItem->len);
1021
1022 if ((((PBYTE)pItem) < (pFrame->pBuf + pFrame->len)) && (pItem->byElementID == WLAN_EID_EXTSUPP_RATES)) {
1023 pFrame->pExtSuppRates = (PWLAN_IE_SUPP_RATES)pItem;
1024 }
1025 return;
1026}
1027