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