hc
2024-08-12 233ab1bd4c5697f5cdec94e60206e8c6ac609b4c
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
/** @file tlv.h
 *
 *  @brief Definitions of the Marvell TLV and parsing functions.
 *
 *
 * Copyright (C) 2014-2017, Marvell International Ltd.
 *
 * This software file (the "File") is distributed by Marvell International
 * Ltd. under the terms of the GNU General Public License Version 2, June 1991
 * (the "License").  You may use, redistribute and/or modify this File in
 * accordance with the terms and conditions of the License, a copy of which
 * is available by writing to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the
 * worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
 *
 * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
 * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
 * this warranty disclaimer.
 */
 
/*****************************************************************************
 *
 * File: tlv.h
 *
 *
 *
 * Author(s):    Kapil Chhabra
 * Date:         2005-01-27
 * Description:  Definitions of the Marvell TLV and parsing functions.
 *
 *****************************************************************************/
#ifndef TLV_H__
#define TLV_H__
 
#include "IEEE_types.h"
 
#define PROPRIETARY_TLV_BASE_ID         0x0100
 
/* Terminating TLV Type */
#define MRVL_TERMINATE_TLV_ID           0xffff
 
/* Defines for MRVL TLV IDs*/
 
/* IEEE TLVs*/
#define MRVL_SSID_TLV_ID                0x0000
#define MRVL_RATES_TLV_ID               0x0001
#define MRVL_PHYPARAMFHSET_TLV_ID       0x0002
#define MRVL_PHYPARAMDSSET_TLV_ID       0x0003
#define MRVL_CFPARAMSET_TLV_ID          0x0004
#define MRVL_IBSSPARAMSET_TLV_ID        0x0006
#define MRVL_COUNTRY_TLV_ID             0x0007
#define MRVL_PWR_CONSTRAINT_TLV_ID      0x0020
#define MRVL_PWR_CAPABILITY_TLV_ID      0x0021
#define MRVL_SUPPORTEDCHANNELS_TLV_ID   0x0024
#define MRVL_QUIET_TLV_ID               0x0028
#define MRVL_IBSSDFS_TLV_ID             0x0029
#define MRVL_HT_CAPABILITY_TLV_ID       0x002d
#define MRVL_QOSCAPABILITY_TLV_ID       0x002e
#define MRVL_RSN_TLV_ID                 0x0030
#define MRVL_SUPPORTED_REGCLASS_TLV_ID  0x003b
#define MRVL_HT_INFORMATION_TLV_ID      0x003d
#define MRVL_SECONDARY_CHAN_OFFSET      0x003e
#define MRVL_2040_BSS_COEX_TLV_ID       0x0048
#define MRVL_OVERLAP_BSS_SCAN_TLV_ID    0x004a
#define MRVL_EXTENDED_CAP_TLV_ID        0x007f
#define MRVL_VHT_CAPABILITIES_TLV_ID    0x00bf
#define MRVL_VHT_OPERATION_TLV_ID       0x00c0
#define MRVL_AID_TLV_ID                 0x00c5
#define MRVL_VHT_OPMODENTF_TLV_ID       0x00c7
#define MRVL_VENDORSPECIFIC_TLV_ID      0x00dd
 
/* Some of these TLV ids are used in ROM and should not be updated.
**  You can confirm if it is not being used in rom then it can be updated.
*/
/* Proprietary TLVs */
#define MRVL_KEYPARAMSET_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 0x00)
#define MRVL_CHANNELLIST_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 0x01)
#define MRVL_NUMPROBES_TLV_ID           (PROPRIETARY_TLV_BASE_ID + 0x02)
#define MRVL_OMNI_TLV_ID                (PROPRIETARY_TLV_BASE_ID + 0x03)
#define MRVL_RSSITHRESHOLD_TLV_ID       (PROPRIETARY_TLV_BASE_ID + 0x04)
#define MRVL_SNRTHRESHOLD_TLV_ID        (PROPRIETARY_TLV_BASE_ID + 0x05)
#define MRVL_BCNLOWRSSITHRESHOLD_TLV_ID    MRVL_RSSITHRESHOLD_TLV_ID
#define MRVL_BCNLOWSNRTHRESHOLD_TLV_ID     MRVL_SNRTHRESHOLD_TLV_ID
#define MRVL_FAILURECOUNT_TLV_ID        (PROPRIETARY_TLV_BASE_ID + 0x06)
#define MRVL_BEACONMISSED_TLV_ID        (PROPRIETARY_TLV_BASE_ID + 0x07)
#define MRVL_LEDGPIO_TLV_ID             (PROPRIETARY_TLV_BASE_ID + 0x08)
#define MRVL_LEDBEHAVIOR_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 0x09)
#define MRVL_PASSTHROUGH_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 0x0a)
#define MRVL_REASSOCAP_TLV_ID           (PROPRIETARY_TLV_BASE_ID + 0x0b)
#define MRVL_POWER_TBL_2_4GHZ_TLV_ID    (PROPRIETARY_TLV_BASE_ID + 0x0c)
#define MRVL_POWER_TBL_5GHZ_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 0x0d)
/* sending Brocast SSID */
#define MRVL_BCASTPROBE_TLV_ID          (PROPRIETARY_TLV_BASE_ID + 0x0e)
/* number of SSIDs for which directed probes need to be generated */
#define MRVL_NUMSSIDPROBE_TLV_ID        (PROPRIETARY_TLV_BASE_ID + 0x0f)
#define MRVL_WMMQSTATUS_TLV_ID          (PROPRIETARY_TLV_BASE_ID + 0x10)
#define MRVL_CRYPTO_TLV_ID              (PROPRIETARY_TLV_BASE_ID + 0x11)
#define MRVL_WILDCARD_SSID_TLV_ID       (PROPRIETARY_TLV_BASE_ID + 0x12)
#define MRVL_TSFTIMESTAMP_TLV_ID        (PROPRIETARY_TLV_BASE_ID + 0x13)
#define MRVL_POWER_ADAPT_CFG_TLV_ID     (PROPRIETARY_TLV_BASE_ID + 0x14)
#define MRVL_HOSTSLEEP_FILTER_TYPE1_TLV_ID (PROPRIETARY_TLV_BASE_ID + 0x15)
#define MRVL_BCNHIGHRSSITHRESHOLD_TLV_ID   (PROPRIETARY_TLV_BASE_ID + 0x16)
#define MRVL_BCNHIGHSNRTHRESHOLD_TLV_ID    (PROPRIETARY_TLV_BASE_ID + 0x17)
#define MRVL_AUTOTX_TLV_ID              (PROPRIETARY_TLV_BASE_ID + 0x18)
#define MRVL_WSC_SELECTED_REGISTRAR_TLV (PROPRIETARY_TLV_BASE_ID + 0x19)
#define MRVL_WSC_ENROLLEE_TMO_TLV       (PROPRIETARY_TLV_BASE_ID + 0x1a)
#define MRVL_WSC_ENROLLEE_PROBE_REQ_TLV (PROPRIETARY_TLV_BASE_ID + 0x1b)
#define MRVL_WSC_REGISTRAR_BEACON_TLV   (PROPRIETARY_TLV_BASE_ID + 0x1c)
#define MRVL_WSC_REGISTRAR_PROBE_RESP_TLV  (PROPRIETARY_TLV_BASE_ID + 0x1d)
#define MRVL_STARTBGSCANLATER_TLV_ID    (PROPRIETARY_TLV_BASE_ID + 0x1e)
#define MRVL_AUTHTYPE_TLV_ID            (PROPRIETARY_TLV_BASE_ID + 0x1f)
#define MRVL_STA_MAC_TLV_ID             (PROPRIETARY_TLV_BASE_ID + 0x20)
#define MRVL_CUSTOM_ADHOC_PROBE_TLV_ID  (PROPRIETARY_TLV_BASE_ID + 0x21)
#define MRVL_CUSTOM_ADHOC_PYXIS_TLV_ID  (PROPRIETARY_TLV_BASE_ID + 0x22)
#define MRVL_CUSTOM_BSSID_LIST_TLV_ID   (PROPRIETARY_TLV_BASE_ID + 0x23)
#define MRVL_CUSTOM_LINK_INDICATION_TLV_ID (PROPRIETARY_TLV_BASE_ID + 0x24)
#define MRVL_MESHIE_TLV_ID              (PROPRIETARY_TLV_BASE_ID + 0x25)
#define MRVL_DATA_LOWRSSITHRESHOLD_TLV_ID  (PROPRIETARY_TLV_BASE_ID + 0x26)
#define MRVL_DATA_LOWSNRTHRESHOLD_TLV_ID   (PROPRIETARY_TLV_BASE_ID + 0x27)
#define MRVL_DATA_HIGHRSSITHRESHOLD_TLV_ID (PROPRIETARY_TLV_BASE_ID + 0x28)
#define MRVL_DATA_HIGHSNRTHRESHOLD_TLV_ID  (PROPRIETARY_TLV_BASE_ID + 0x29)
#define MRVL_CHANNELBANDLIST_TLV_ID        (PROPRIETARY_TLV_BASE_ID + 0x2a)
#define MRVL_AP_MAC_ADDRESS_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 0x2b)
#define MRVL_BEACON_PERIOD_TLV_ID       (PROPRIETARY_TLV_BASE_ID + 0x2c)
#define MRVL_DTIM_PERIOD_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 0x2d)
#define MRVL_BASIC_RATES_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 0x2e)
#define MRVL_TX_POWER_TLV_ID            (PROPRIETARY_TLV_BASE_ID + 0x2f)
#define MRVL_BCAST_SSID_CTL_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 0x30)
#define MRVL_PREAMBLE_CTL_TLV_ID        (PROPRIETARY_TLV_BASE_ID + 0x31)
#define MRVL_ANTENNA_CTL_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 0x32)
#define MRVL_RTS_THRESHOLD_TLV_ID       (PROPRIETARY_TLV_BASE_ID + 0x33)
#define MRVL_RADIO_CTL_TLV_ID           (PROPRIETARY_TLV_BASE_ID + 0x34)
#define MRVL_TX_DATA_RATE_TLV_ID        (PROPRIETARY_TLV_BASE_ID + 0x35)
#define MRVL_PKT_FWD_CTL_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 0x36)
#define MRVL_STA_INFO_TLV_ID            (PROPRIETARY_TLV_BASE_ID + 0x37)
#define MRVL_STA_MAC_ADDR_FILTER_TLV_ID (PROPRIETARY_TLV_BASE_ID + 0x38)
#define MRVL_STA_AGEOUT_TIMER_TLV_ID    (PROPRIETARY_TLV_BASE_ID + 0x39)
#define MRVL_SECURITY_CFG_TLV_ID        (PROPRIETARY_TLV_BASE_ID + 0x3a)
#define MRVL_WEP_KEY_TLV_ID             (PROPRIETARY_TLV_BASE_ID + 0x3b)
#define MRVL_WPA_PASSPHRASE_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 0x3c)
#define MRVL_SCAN_TIMING_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 0x3d)
#define MRVL_NEIGHBOR_ENTRY_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 0x3e)
#define MRVL_NEIGHBOR_SCAN_PERIOD_TLV_ID  (PROPRIETARY_TLV_BASE_ID + 0x3f)
#define MRVL_ENCRYPTION_PROTOCOL_TLV_ID   (PROPRIETARY_TLV_BASE_ID + 0x40)
#define MRVL_AKMP_TLV_ID                (PROPRIETARY_TLV_BASE_ID + 0x41)
#define MRVL_CIPHER_TLV_ID              (PROPRIETARY_TLV_BASE_ID + 0x42)
#define MRVL_OFFLOAD_ENABLE_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 0x43)
#define MRVL_SUPPLICANT_PMK_TLV_ID        (PROPRIETARY_TLV_BASE_ID + 0x44)
#define MRVL_SUPPLICANT_PASSPHRASE_TLV_ID (PROPRIETARY_TLV_BASE_ID + 0x45)
#define MRVL_FRAG_THRESHOLD_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 0x46)
#define MRVL_GRP_REKEY_TIME_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 0x47)
#define MRVL_ICV_ERROR_TLV_ID           (PROPRIETARY_TLV_BASE_ID + 0x48)
#define MRVL_PRE_BEACONMISSED_TLV_ID    (PROPRIETARY_TLV_BASE_ID + 0x49)
#define MRVL_OLD_HT_CAPABILITY_TLV_ID   (PROPRIETARY_TLV_BASE_ID + 0x4a)
#define MRVL_OLD_HT_INFORMATION_TLV_ID  (PROPRIETARY_TLV_BASE_ID + 0x4b)
#define MRVL_OLD_SECONDARY_CHAN_OFFSET_TLV_ID (PROPRIETARY_TLV_BASE_ID + 0x4c)
#define MRVL_OLD_2040_BSS_COEX_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 0x4d)
#define MRVL_OLD_OVERLAP_BSS_SCAN_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 0x4e)
#define MRVL_OLD_EXTENDED_CAP_TLV_ID          (PROPRIETARY_TLV_BASE_ID + 0x4f)
#define MRVL_HT_OPERATIONAL_MCSSET_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 0x50)
#define MRVL_RATEDROPPATTERN_TLV_ID     (PROPRIETARY_TLV_BASE_ID + 0x51)
#define MRVL_RATEDROPCONTROL_TLV_ID     (PROPRIETARY_TLV_BASE_ID + 0x52)
#define MRVL_RATESCOPE_TLV_ID           (PROPRIETARY_TLV_BASE_ID + 0x53)
#define MRVL_TYPES_POWER_GROUP_TLV_ID   (PROPRIETARY_TLV_BASE_ID + 0x54)
#define MRVL_MAX_STA_CNT_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 0x55)
#define MRVL_BSS_SCAN_RSP_TLV_ID        (PROPRIETARY_TLV_BASE_ID + 0x56)
#define MRVL_BSS_SCAN_INFO_TLV_ID       (PROPRIETARY_TLV_BASE_ID + 0x57)
#define MRVL_CHANRPT_BCN_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 0x58)
#define MRVL_CHANRPT_CHAN_LOAD_TLV_ID   (PROPRIETARY_TLV_BASE_ID + 0x59)
#define MRVL_CHANRPT_NOISE_HIST_TLV_ID  (PROPRIETARY_TLV_BASE_ID + 0x5a)
#define MRVL_CHANRPT_11H_BASIC_TLV_ID   (PROPRIETARY_TLV_BASE_ID + 0x5b)
#define MRVL_CHANRPT_FRAME_TLV_ID       (PROPRIETARY_TLV_BASE_ID + 0x5c)
#define MRVL_RETRY_LIMIT_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 0x5d)
#define MRVL_WAPI_TLV_ID                (PROPRIETARY_TLV_BASE_ID + 0x5e)
#define MRVL_ASSOC_REASON_TLV_ID        (PROPRIETARY_TLV_BASE_ID + 0x5f)
#define MRVL_ROBUST_COEX_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 0x60)
#define MRVL_ROBUST_COEX_PERIOD_TLV_ID  (PROPRIETARY_TLV_BASE_ID + 0x61)
#define MRVL_MCBC_DATA_RATE_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 0x62)
#define MRVL_MEASUREMENT_TIMING_TLV_ID  (PROPRIETARY_TLV_BASE_ID + 0x63)
#define MRVL_RSN_REPLAY_PROT_TLV_ID     (PROPRIETARY_TLV_BASE_ID + 0x64)
#define MRVL_WAPI_INFO_TLV_ID           (PROPRIETARY_TLV_BASE_ID + 0x67)
#define MRVL_MGMT_FRAME_TLV_ID          (PROPRIETARY_TLV_BASE_ID + 0x68)
#define MRVL_MGMT_IE_LIST_TLV_ID        (PROPRIETARY_TLV_BASE_ID + 0x69)
#define MRVL_AP_SLEEP_PARAM_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 0x6a)
#define MRVL_AP_INACT_SLEEP_PARAM_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 0x6b)
#define MRVL_AP_BT_COEX_COMMON_CFG_TLV_ID     (PROPRIETARY_TLV_BASE_ID + 0x6c)
#define MRVL_AP_BT_COEX_SCO_CFG_TLV_ID        (PROPRIETARY_TLV_BASE_ID + 0x6d)
#define MRVL_AP_BT_COEX_ACL_CFG_TLV_ID        (PROPRIETARY_TLV_BASE_ID + 0x6e)
#define MRVL_AP_BT_COEX_STATS_TLV_ID          (PROPRIETARY_TLV_BASE_ID + 0x6f)
#define MRVL_MGMT_PASSTHRU_MASK_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 0x70)
#define MRVL_AUTO_DEEP_SLEEP_TLV_ID           (PROPRIETARY_TLV_BASE_ID + 0x71)
#define MRVL_ENHANCED_STA_POWER_SAVE_MODE_TLV_ID (PROPRIETARY_TLV_BASE_ID + 0x72)
#define MRVL_HOSTWAKE_STADB_CFG_TLV_ID  (PROPRIETARY_TLV_BASE_ID + 0x73)
#define MRVL_HOSTWAKE_OUI_CFG_TLV_ID    (PROPRIETARY_TLV_BASE_ID + 0x74)
#define MRVL_EAPOL_PWK_HSK_TIMEOUT_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 0x75)
#define MRVL_EAPOL_PWK_HSK_RETRIES_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 0x76)
#define MRVL_EAPOL_GWK_HSK_TIMEOUT_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 0x77)
#define MRVL_EAPOL_GWK_HSK_RETRIES_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 0x78)
 
#define MRVL_OPCHAN_CONTROL_DESC_TLV_ID (PROPRIETARY_TLV_BASE_ID + 0x79)
#define MRVL_OPCHAN_CHANGRP_CTRL_TLV_ID (PROPRIETARY_TLV_BASE_ID + 0x7a)
#define MRVL_PS_STA_AGEOUT_TIMER_TLV_ID       (PROPRIETARY_TLV_BASE_ID + 0x7b)
 
#define MRVL_WFD_DISC_PERIOD_TLV_ID     (PROPRIETARY_TLV_BASE_ID + 0x7c)
#define MRVL_WFD_SCAN_ENABLE_TLV_ID     (PROPRIETARY_TLV_BASE_ID + 0x7d)
#define MRVL_WFD_SCAN_PEER_DEVICE_ID_TLV_ID (PROPRIETARY_TLV_BASE_ID + 0x7e)
#define MRVL_WFD_REQ_DEVICE_TYPE_TLV_ID (PROPRIETARY_TLV_BASE_ID + 0x7f)
#define MRVL_WFD_DEVICE_STATE_TLV_ID    (PROPRIETARY_TLV_BASE_ID + 0x80)
#define MRVL_WFD_INTENT_TLV_ID          (PROPRIETARY_TLV_BASE_ID + 0x81)
#define MRVL_WFD_CAPABILITY_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 0x82)
#define MRVL_WFD_NOA_TLV_ID             (PROPRIETARY_TLV_BASE_ID + 0x83)
#define MRVL_WFD_OPP_PS_TLV_ID          (PROPRIETARY_TLV_BASE_ID + 0x84)
#define MRVL_WFD_INVITATION_LIST_TLV_ID (PROPRIETARY_TLV_BASE_ID + 0x85)
#define MRVL_WFD_LISTEN_CHANNEL_TLV_ID  (PROPRIETARY_TLV_BASE_ID + 0x86)
#define MRVL_WFD_OPERATING_CHANNEL_TLV_ID (PROPRIETARY_TLV_BASE_ID + 0x87)
#define MRVL_WFD_PERSISTENT_GROUP_TLV_ID  (PROPRIETARY_TLV_BASE_ID + 0x88)
#define MRVL_CHANNEL_TRPC_TLV_ID          (PROPRIETARY_TLV_BASE_ID + 0x89)
 
#define MRVL_IEEE_ACTION_FRAME_TLV_ID   (PROPRIETARY_TLV_BASE_ID + 0x8c)
#define MRVL_WIFI_DIRECT_PRESENCE_REQ_PARAMS_TLV_ID  (PROPRIETARY_TLV_BASE_ID + 0x8d)
#define MRVL_WIFI_DIRECT_EXTENDED_LISTEN_TIME_TLV_ID (PROPRIETARY_TLV_BASE_ID + 0x8e)
#define MRVL_WIFI_DIRECT_PROVISIONING_PARAMS_TLV_ID  (PROPRIETARY_TLV_BASE_ID + 0x8f)
#define MRVL_WIFI_DIRECT_WPS_PARAMS_TLV_ID     (PROPRIETARY_TLV_BASE_ID + 0x90)
#define MRVL_WIFI_DIRECT_ACTION_FRAME_SEND_TIMEOUT_TLV_ID   (PROPRIETARY_TLV_BASE_ID + 0xb3)
 
#define MRVL_CIPHER_PWK_TLV_ID          (PROPRIETARY_TLV_BASE_ID + 0x91)
#define MRVL_CIPHER_GWK_TLV_ID          (PROPRIETARY_TLV_BASE_ID + 0x92)
#define MRVL_AP_BSS_STATUS_TLV_ID       (PROPRIETARY_TLV_BASE_ID + 0x93)
#define MRVL_TX_DATA_PAUSE_TLV_ID       (PROPRIETARY_TLV_BASE_ID + 0x94)
#define MRVL_STICKY_TIM_CONFIG_TLV_ID          (PROPRIETARY_TLV_BASE_ID + 0x96)
#define MRVL_STICKY_TIM_STA_MAC_ADDR_TLV_ID    (PROPRIETARY_TLV_BASE_ID + 0x97)
#define MRVL_2040_BSS_COEX_CONTROL_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 0x98)
#define MRVL_KEYPARAMSET_V2_TLV_ID             (PROPRIETARY_TLV_BASE_ID + 0x9c)
#define MRVL_RXBA_SYNC_TLV_ID                  (PROPRIETARY_TLV_BASE_ID + 0x99)
#define MRVL_PKT_COALESCE_RULE_TLV_ID          (PROPRIETARY_TLV_BASE_ID + 0x9a)
#define MRVL_NETWORK_LIST_CFG_TLV              (PROPRIETARY_TLV_BASE_ID + 0X9b)
#define MRVL_MEF_CFG_TLV_ID                    (PROPRIETARY_TLV_BASE_ID + 0x9d)
 
#define MRVL_WFD_SCAN_CFG_TLV                   (PROPRIETARY_TLV_BASE_ID + 158)
#define MRVL_WFD_SENDTIMEOUT_TLV_ID             (PROPRIETARY_TLV_BASE_ID + 159)
#define MRVL_WFD_GROUPID_TLV_ID                 (PROPRIETARY_TLV_BASE_ID + 160)
#define MRVL_WFD_DEVICE_ID_TLV_ID               (PROPRIETARY_TLV_BASE_ID + 161)
#define MRVL_WFD_INTENDEDINTF_ADDR_TLV_ID       (PROPRIETARY_TLV_BASE_ID + 162)
#define MRVL_WFD_STATUS_TLV_ID                  (PROPRIETARY_TLV_BASE_ID + 163)
#define MRVL_WFD_DEVICE_INFO_TLV_ID             (PROPRIETARY_TLV_BASE_ID + 164)
#define MRVL_WFD_CFG_TIMEOUT_TLV_ID             (PROPRIETARY_TLV_BASE_ID + 165)
#define MRVL_WFD_INVITATION_TLV_ID              (PROPRIETARY_TLV_BASE_ID + 166)
#define MRVL_WFD_GROUP_BSSID_TLV_ID             (PROPRIETARY_TLV_BASE_ID + 167)
#define MRVL_WFD_WPA_PSK_TLV_ID                 (PROPRIETARY_TLV_BASE_ID + 168)
#define MRVL_MAX_MGMT_IE_TLV_ID                 (PROPRIETARY_TLV_BASE_ID + 170)
#define MRVL_REGION_DOMAIN_CODE_TLV_ID          (PROPRIETARY_TLV_BASE_ID + 171)
#define MRVL_AOIP_IBSS_MODE_TLV_ID              (PROPRIETARY_TLV_BASE_ID + 172)
#define MRVL_AOIP_MANAGE_PEERS_TLV_ID           (PROPRIETARY_TLV_BASE_ID + 173)
#define MRVL_AOIP_STA_INFO_TLV_ID               (PROPRIETARY_TLV_BASE_ID + 174)
#define MRVL_AOIP_REMOTE_ADDR_MODE_TLV_ID       (PROPRIETARY_TLV_BASE_ID + 175)
#define MRVL_BGSCAN_REPEAT_CNT_TLV_ID          (PROPRIETARY_TLV_BASE_ID + 0xb0)
 
#define MRVL_TLV_USB_AGGR_PARAM                 (PROPRIETARY_TLV_BASE_ID + 177)
 
#define MRVL_PS_PARAMS_IN_HS_TLV_ID            (PROPRIETARY_TLV_BASE_ID + 0xb5)
#define MRVL_HS_WAKE_HOLDOFF_TLV_ID            (PROPRIETARY_TLV_BASE_ID + 0xb6)
 
#define MRVL_MULTI_CHAN_INFO_TLV_ID            (PROPRIETARY_TLV_BASE_ID + 0xb7)
#define MRVL_MULTI_CHAN_GROUP_INFO_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 0xb8)
#define MRVL_RESTRICT_CLIENT_MODE_TLV_ID       (PROPRIETARY_TLV_BASE_ID + 0xc1)
 
#define MRVL_WFD_SERVICE_HASH_TLV_ID           (PROPRIETARY_TLV_BASE_ID + 195)
#define MRVL_WFD_SERVICES_LIST_TLV_ID          (PROPRIETARY_TLV_BASE_ID + 196)
#define MRVL_API_VER_INFO_TLV_ID               (PROPRIETARY_TLV_BASE_ID + 199)
 
#define MRVL_FLOOR_RATE_TLV_ID                 (PROPRIETARY_TLV_BASE_ID + 0xb9)
#define MRVL_SCAN_CHAN_GAP_TLV_ID              (PROPRIETARY_TLV_BASE_ID + 0xC5)
#define MRVL_CHAN_STATS_TLV_ID                 (PROPRIETARY_TLV_BASE_ID + 0xC6)
 
/* This struct is used in ROM and should not be changed at all */
typedef MLAN_PACK_START struct {
   UINT16 Type;
   UINT16 Length;
} MLAN_PACK_END MrvlIEParamSet_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT8 Value[1];
} MLAN_PACK_END MrvlIEGeneric_t;
 
/* MultiChannel TLV*/
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT16 Status;        // 1 = Active, 0 = Inactive
   UINT8 TlvBuffer[1];
} MLAN_PACK_END MrvlIEMultiChanInfo_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT8 ChanGroupId;
   UINT8 ChanBufWt;
   ChanBandInfo_t ChanBandInfo;
   UINT32 ChanTime;
   UINT32 Reserved;
   UINT8 HidPortNum;
   UINT8 NumIntf;
   UINT8 BssTypeNumList[1];
} MLAN_PACK_END MrvlIEMultiChanGroupInfo_t;
 
/* Key Material TLV */
typedef MLAN_PACK_START struct MrvlIEKeyParamSet_t {
   MrvlIEParamSet_t hdr;
   UINT16 keyMgtId;
} MLAN_PACK_END MrvlIEKeyParamSet_t;
 
#ifdef KEY_MATERIAL_V2
 
typedef MLAN_PACK_START struct wep_key_t {
   UINT16 len;
   UINT8 key[1];
} MLAN_PACK_END wep_key_t;
 
typedef MLAN_PACK_START struct wpax_key_t {
   UINT8 pn[8];
   UINT16 len;
   UINT8 key[1];
} MLAN_PACK_END wpax_key_t;
 
typedef MLAN_PACK_START struct wapi_key_t {
   UINT8 pn[16];
   UINT16 len;
   UINT8 key[16];
   UINT8 micKey[16];
} MLAN_PACK_END wapi_key_t;
 
typedef MLAN_PACK_START struct MrvlIEKeyParamSet_v2_t {
   MrvlIEParamSet_t hdr;
   IEEEtypes_MacAddr_t macAddr;
   UINT8 keyIdx;
   UINT8 keyType;
   UINT16 keyInfo;
 
   MLAN_PACK_START union {
       wep_key_t wep;
       wpax_key_t wpax;
       wapi_key_t wapi;
   } MLAN_PACK_END keySet;
 
} MLAN_PACK_END MrvlIEKeyParamSet_v2_t;
#endif
 
/* Marvell Power Constraint TLV */
typedef MLAN_PACK_START struct MrvlIEPowerConstraint_t {
   MrvlIEParamSet_t IEParam;
   UINT8 channel;
   UINT8 dBm;
} MLAN_PACK_END MrvlIEPowerConstraint_t;
 
/* Marvell WSC Selected Registar TLV */
typedef MLAN_PACK_START struct MrvlIEWSCSelectedRegistrar_t {
   MrvlIEParamSet_t IEParam;
   UINT16 devPwdID;
} MLAN_PACK_END MrvlIEWSCSelectedRegistrar_t;
 
/* Marvell WSC Enrollee TMO TLV */
typedef MLAN_PACK_START struct MrvlIEWSCEnrolleeTmo_t {
   MrvlIEParamSet_t IEParam;
   UINT16 tmo;
} MLAN_PACK_END MrvlIEWSCEnrolleeTmo_t;
 
/****************
 * AES CRYPTION FEATURE
 *
 * DEFINE STARTS --------------
 */
typedef MLAN_PACK_START struct MrvlIEAesCrypt_t {
   MrvlIEParamSet_t hdr;
   UINT8 payload[40];
} MLAN_PACK_END MrvlIEAesCrypt_t;
 
/* DEFINE ENDS ----------------
 */
 
/* Marvell Power Capability TLV */
typedef MLAN_PACK_START struct MrvlIEPowerCapability_t {
   MrvlIEParamSet_t IEParam;
   UINT8 minPwr;
   UINT8 maxPwr;
} MLAN_PACK_END MrvlIEPowerCapability_t;
 
/* Marvell TLV for OMNI Serial Number and Hw Revision Information. */
typedef MLAN_PACK_START struct MrvlIE_OMNI_t {
   MrvlIEParamSet_t IEParam;
   UINT8 SerialNumber[16];
   UINT8 HWRev;
   UINT8 Reserved[3];
} MLAN_PACK_END MrvlIE_OMNI_t;
 
/* Marvell LED Behavior TLV */
typedef MLAN_PACK_START struct MrvlIELedBehavior_t {
   MrvlIEParamSet_t IEParam;
   UINT8 FirmwareState;
   UINT8 LedNumber;
   UINT8 LedState;
   UINT8 LedArgs;
} MLAN_PACK_END MrvlIELedBehavior_t;
 
/* Marvell LED GPIO Mapping TLV */
typedef MLAN_PACK_START struct MrvlIELedGpio_t {
   MrvlIEParamSet_t IEParam;
   UINT8 LEDNumber;
   UINT8 GPIONumber;
} MLAN_PACK_END MrvlIELedGpio_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   /*
    ** Set a place holder for the TSF values.  Sized to max BSS for message
    **   allocation. The TLV will return a variable number of TSF values.
    */
   UINT64 TSFValue[IEEEtypes_MAX_BSS_DESCRIPTS];
} MLAN_PACK_END MrvlIETsfArray_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT8 maxLen;
   IEEEtypes_SsId_t ssid;
} MLAN_PACK_END MrvlIEWildcardSsid_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT8 snrThreshold;
   UINT8 reportFrequency;
} MLAN_PACK_END MrvlIELowSnrThreshold_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT8 rssiThreshold;
   UINT8 reportFrequency;
} MLAN_PACK_END MrvlIELowRssiThreshold_t;
 
/* Marvell AutoTx TLV */
#define MAX_KEEPALIVE_PKT_LEN   (0x60)
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT16 Interval;    /* in seconds */
   UINT8 Priority;
   UINT8 Reserved;
   UINT16 EtherFrmLen;
   UINT8 DestAddr[6];
   UINT8 SrcAddr[6];
   UINT8 EtherFrmBody[MAX_KEEPALIVE_PKT_LEN];    //Last 4 bytes are 32bit FCS
} MLAN_PACK_END MrvlIEAutoTx_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   IEEEtypes_DFS_Map_t map;
} MLAN_PACK_END MrvlIEChanRpt11hBasic_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT8 scanReqId;
} MLAN_PACK_END MrvlIEChanRptBeacon_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT8 ccaBusyFraction;
} MLAN_PACK_END MrvlIEChanRptChanLoad_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   SINT16 anpi;
   UINT8 rpiDensities[11];
} MLAN_PACK_END MrvlIEChanRptNoiseHist_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   IEEEtypes_MacAddr_t sourceAddr;
   IEEEtypes_MacAddr_t bssid;
   SINT16 rssi;
   UINT16 frameCnt;
} MLAN_PACK_END MrvlIEChanRptFrame_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   SINT16 rssi;
   SINT16 anpi;
   UINT8 ccaBusyFraction;
#ifdef SCAN_REPORT_THROUGH_EVENT
   BandConfig_t band;
   UINT8 channel;
   UINT8 reserved;
   UINT64 tsf;
#endif
} MLAN_PACK_END MrvlIEBssScanStats_t;
 
typedef MLAN_PACK_START struct {
    /** Header */
   MrvlIEParamSet_t IEParam;
   UINT32 mode;
   UINT32 maxOff;
   UINT32 maxOn;
} MLAN_PACK_END MrvlIETypes_MeasurementTiming_t;
 
typedef MLAN_PACK_START struct {
    /** Header */
   MrvlIEParamSet_t IEParam;
   UINT32 mode;
   UINT32 dwell;
   UINT32 maxOff;
   UINT32 minLink;
   UINT32 rspTimeout;
} MLAN_PACK_END MrvlIETypes_ConfigScanTiming_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT8 KeyIndex;
   UINT8 IsDefaultIndex;
   UINT8 Value[1];
} MLAN_PACK_END MrvlIETypes_WepKey_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT8 PMK[32];
} MLAN_PACK_END MrvlIETypes_PMK_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT8 ssid[1];
} MLAN_PACK_END MrvlIETypes_Ssid_Param_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT8 Passphrase[64];
} MLAN_PACK_END MrvlIETypes_Passphrase_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT8 BSSID[6];
} MLAN_PACK_END MrvlIETypes_BSSID_t;
 
typedef MLAN_PACK_START struct {
   UINT16 Type;
   UINT16 Length;
   IEEEtypes_MacAddr_t Bssid;
   UINT16 Rsvd;
   SINT16 Rssi;        //Signal strength
   UINT16 Age;
   UINT32 QualifiedNeighborBitmap;
   UINT32 BlackListDuration;
} MLAN_PACK_END MrvlIETypes_NeighbourEntry_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT16 SearchMode;
   UINT16 State;
   UINT32 ScanPeriod;
} MLAN_PACK_END MrvlIETypes_NeighbourScanPeriod_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT8 Rssi;
   UINT8 Frequency;
} MLAN_PACK_END MrvlIETypes_BeaconHighRssiThreshold_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT8 Rssi;
   UINT8 Frequency;
} MLAN_PACK_END MrvlIETypes_BeaconLowRssiThreshold_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT8 Value;
   UINT8 Frequency;
} MLAN_PACK_END MrvlIETypes_RoamingAgent_Threshold_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT8 AssocReason;
} MLAN_PACK_END MrvlIETypes_AssocReason_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   IEEEtypes_MacAddr_t macAddr;
   UINT8 txPauseState;
   UINT8 totalQueued;
} MLAN_PACK_END MrvlIETypes_TxDataPause_t;
 
typedef MLAN_PACK_START struct {
   UINT16 startFreq;
   UINT8 chanWidth;
   UINT8 chanNum;
} MLAN_PACK_END MrvlIEChannelDesc_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   MrvlIEChannelDesc_t chanDesc;
   UINT16 controlFlags;
   UINT16 reserved;
   UINT8 activePower;
   UINT8 mdMinPower;
   UINT8 mdMaxPower;
   UINT8 mdPower;
} MLAN_PACK_END MrvlIETypes_OpChanControlDesc_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT32 chanGroupBitmap;
   ChanScanMode_t scanMode;
   UINT8 numChan;
   MrvlIEChannelDesc_t chanDesc[50];
} MLAN_PACK_END MrvlIETypes_ChanGroupControl_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   ChanBandInfo_t ChanBandInfo[IEEEtypes_MAX_BSS_DESCRIPTS];
} MLAN_PACK_END MrvlIEChanBandList_t;
#if 0
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   IEEEtypes_MacAddr_t srcAddr;
   IEEEtypes_MacAddr_t dstAddr;
   IEEEtypes_ActionFrame_t actionFrame;
} MLAN_PACK_END MrvlIEActionFrame_t;
#endif
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   HtEntry_t htEntry[IEEEtypes_MAX_BSS_DESCRIPTS];
} MLAN_PACK_END MrvlIEHtList_t;
 
/* This struct is used in ROM code and all the fields of
** this should be kept intact
*/
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT16 bmpRateOfHRDSSS;
   UINT16 bmpRateOfOFDM;
   UINT32 bmpRateOfHT_DW0;
   UINT32 bmpRateOfHT_DW1;
   UINT32 bmpRateOfHT_DW2;
   UINT32 bmpRateOfHT_DW3;
#ifdef DOT11AC
   UINT16 bmpRateOfVHT[8];    //per SS
#endif
} MLAN_PACK_END MrvlIE_TxRateScope_t;
 
typedef MLAN_PACK_START struct {
   UINT8 mod_class;
   UINT8 rate;
   UINT8 attemptLimit;
   UINT8 reserved;
} MLAN_PACK_END MrvlIE_RateInfoEntry_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   MrvlIE_RateInfoEntry_t rate_info[8];
} MLAN_PACK_END MrvlIE_RateDropTable_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT32 mode;
   // for 1x1 11n, 9 HT rate, 8 OFDM rate, 4 DSSS rate
   MrvlIE_RateDropTable_t rateDropTbls[9 + 8 + 4];
} MLAN_PACK_END MrvlIE_RateDropPattern_t;
 
#ifdef USB_FRAME_AGGR
 
#define USB_TX_AGGR_ENABLE ( 1 << 1 )
#define USB_RX_AGGR_ENABLE ( 1 << 0 )
 
#define USB_RX_AGGR_MODE_MASK   ( 1 << 0 )
#define USB_RX_AGGR_MODE_SIZE  (1)
#define USB_RX_AGGR_MODE_NUM   (0)
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT16 enable;
   UINT16 rx_mode;
   UINT16 rx_align;
   UINT16 rx_max;
   UINT16 rx_timeout;
   UINT16 tx_mode;
   UINT16 tx_align;
} MLAN_PACK_END MrvlIE_USBAggrTLV_t;
 
extern MrvlIE_USBAggrTLV_t g_Aggr_Conf;
 
#endif
 
typedef MLAN_PACK_START struct {
   UINT8 mod_class;
   UINT8 firstRateCode;
   UINT8 lastRateCode;
   SINT8 power_step;
   SINT8 min_power;
   SINT8 max_power;
   UINT8 ht_bandwidth;
   UINT8 reserved[1];
} MLAN_PACK_END MrvlIE_PowerGroupEntry_t;
 
#define MRVL_MAX_PWR_GROUP       15
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   MrvlIE_PowerGroupEntry_t PowerGroup[MRVL_MAX_PWR_GROUP];
} MLAN_PACK_END MrvlIE_PowerGroup_t;
 
#ifdef AP_STA_PS
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT16 NullPktInterval;
   UINT16 numDtims;
   UINT16 BCNMissTimeOut;
   UINT16 LocalListenInterval;
   UINT16 AdhocAwakePeriod;
   UINT16 PS_mode;
   UINT16 DelayToPS;
} MrvlIETypes_StaSleepParams_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT16 idleTime;
} MrvlIETypes_AutoDeepSleepParams_t;
#endif
 
#ifdef MESH
typedef MLAN_PACK_START struct _MrvlMeshIE_Tlv_t {
   MrvlIEParamSet_t hdr;
   IEEEtypes_VendorSpecific_MeshIE_t meshIE;
 
} MLAN_PACK_END MrvlMeshIE_Tlv_t;
#endif
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT8 RBCMode;
   UINT8 Reserved[3];
} MLAN_PACK_END MrvlIERobustCoex_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT16 Mode;
   UINT16 Reserved;
   UINT32 BTTime;
   UINT32 Period;
} MLAN_PACK_END MrvlIERobustCoexPeriod_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT8 staMacAddr[IEEEtypes_ADDRESS_SIZE];
   IEEEtypes_IE_Param_t IeBuf;
} MLAN_PACK_END MrvlIEHostWakeStaDBCfg;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT16 ouiCmpLen;
   UINT8 ouiBuf[6];
} MLAN_PACK_END MrvlIEHostWakeOuiCfg;
 
#ifdef MICRO_AP_MODE
/* This struct is used in ROM and should not be changed at all */
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t hdr;
   IEEEtypes_MacAddr_t macAddr;
   UINT8 pwrMode;
   SINT8 rssi;
} MLAN_PACK_END MrvlIEStaInfo_t;
#endif
 
typedef struct {
   MrvlIEParamSet_t Hdr;
   uint16 protocol;
   uint8 cipher;
   uint8 reserved;
} MrvlIETypes_PwkCipher_t;
 
typedef struct {
   MrvlIEParamSet_t Hdr;
   uint8 cipher;
   uint8 reserved;
} MrvlIETypes_GwkCipher_t;
 
typedef MLAN_PACK_START struct {
   uint8 modGroup;
   uint8 txPower;
} MLAN_PACK_END MrvlIE_ChanTrpcEntry_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t Hdr;
   MrvlIEChannelDesc_t chanDesc;
   MrvlIE_ChanTrpcEntry_t data[1];
} MLAN_PACK_END MrvlIETypes_ChanTrpcCfg_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   IEEEtypes_MacAddr_t mac[IEEEtypes_MAX_BSS_DESCRIPTS];
} MLAN_PACK_END MrvlIETypes_MacAddr_t;
 
#ifdef AP_BTCOEX
typedef enum _tagScoCoexBtTraffic {
   ONLY_SCO,
   ACL_BEFORE_SCO,
   ACL_AFTER_SCO,
   BT_TRAFFIC_RESERVED,
   BT_TRAFFIC_MAX
} ScoCoexBtTraffic_e;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT32 configBitmap;    /* Bit    0 : overrideCts2SelfProtection
                ** Bit 1-31 : Reserved
                */
   UINT32 apStaBtCoexEnabled;
   UINT32 reserved[3];    /* For future use. */
} MLAN_PACK_END MrvlIETypes_ApBTCoexCommonConfig_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT16 protectionFrmQTime[BT_TRAFFIC_MAX];    /* Index 0 for ONLY_SCO
                            **       1 for ACL_BEFORE_SCO
                            **       2 for ACL_AFTER_SCO
                            **       3 is Reserved
                            */
   UINT16 protectionFrmRate;
   UINT16 aclFrequency;
   UINT32 reserved[4];    /* For future use. */
} MLAN_PACK_END MrvlIETypes_ApBTCoexScoConfig_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT16 enabled;
   UINT16 btTime;
   UINT16 wlanTime;
   UINT16 protectionFrmRate;
   UINT32 reserved[4];    /* For future use. */
} MLAN_PACK_END MrvlIETypes_ApBTCoexAclConfig_t;
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t IEParam;
   UINT32 nullNotSent;
   UINT32 numOfNullQueued;
   UINT32 nullNotQueued;
   UINT32 numOfCfEndQueued;
   UINT32 cfEndNotQueued;
   UINT32 nullAllocationFail;
   UINT32 cfEndAllocationFail;
   UINT32 reserved[8];    /* For future use. */
} MLAN_PACK_END MrvlIETypes_ApBTCoexStats_t;
#endif //AP_BTCOEX
 
typedef MLAN_PACK_START struct {
   MrvlIEParamSet_t Hdr;
 
   IEEEtypes_MacAddr_t macAddr;
   UINT8 tid;
   UINT8 reserved;
   UINT16 startSeqNum;
 
   UINT16 bitMapLen;
   UINT8 bitMap[1];
} MLAN_PACK_END MrvlIETypes_RxBaSync_t;
 
#ifdef SCAN_CHAN_STATISTICS
typedef MLAN_PACK_START struct MrvlIEChannelStats {
   MrvlIEParamSet_t IEParam;
   UINT8 chanStat[1];
} MLAN_PACK_END MrvlIEChannelStats_t;
#endif
 
/* API Version Info Entry for MRVL_API_VER_INFO_TLV_ID */
typedef MLAN_PACK_START struct MrvlIE_ApiVersionEntry_t {
   UINT16 apiId;
   UINT8 major;
   UINT8 minor;
} MLAN_PACK_END MrvlIE_ApiVersionEntry_t;
 
/** API Version Ids */
#define KEY_API_VER_ID        0x1
#endif //_TLV_H_