diff options
Diffstat (limited to 'drivers/net/wireless/mwifiex/fw.h')
-rw-r--r-- | drivers/net/wireless/mwifiex/fw.h | 1187 |
1 files changed, 1187 insertions, 0 deletions
diff --git a/drivers/net/wireless/mwifiex/fw.h b/drivers/net/wireless/mwifiex/fw.h new file mode 100644 index 000000000000..afdd145dff0b --- /dev/null +++ b/drivers/net/wireless/mwifiex/fw.h | |||
@@ -0,0 +1,1187 @@ | |||
1 | /* | ||
2 | * Marvell Wireless LAN device driver: Firmware specific macros & structures | ||
3 | * | ||
4 | * Copyright (C) 2011, Marvell International Ltd. | ||
5 | * | ||
6 | * This software file (the "File") is distributed by Marvell International | ||
7 | * Ltd. under the terms of the GNU General Public License Version 2, June 1991 | ||
8 | * (the "License"). You may use, redistribute and/or modify this File in | ||
9 | * accordance with the terms and conditions of the License, a copy of which | ||
10 | * is available by writing to the Free Software Foundation, Inc., | ||
11 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the | ||
12 | * worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. | ||
13 | * | ||
14 | * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE | ||
15 | * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE | ||
16 | * ARE EXPRESSLY DISCLAIMED. The License provides additional details about | ||
17 | * this warranty disclaimer. | ||
18 | */ | ||
19 | |||
20 | #ifndef _MWIFIEX_FW_H_ | ||
21 | #define _MWIFIEX_FW_H_ | ||
22 | |||
23 | #include <linux/if_ether.h> | ||
24 | |||
25 | |||
26 | #define INTF_HEADER_LEN 4 | ||
27 | |||
28 | struct rfc_1042_hdr { | ||
29 | u8 llc_dsap; | ||
30 | u8 llc_ssap; | ||
31 | u8 llc_ctrl; | ||
32 | u8 snap_oui[3]; | ||
33 | u16 snap_type; | ||
34 | }; | ||
35 | |||
36 | struct rx_packet_hdr { | ||
37 | struct ethhdr eth803_hdr; | ||
38 | struct rfc_1042_hdr rfc1042_hdr; | ||
39 | }; | ||
40 | |||
41 | struct tx_packet_hdr { | ||
42 | struct ethhdr eth803_hdr; | ||
43 | struct rfc_1042_hdr rfc1042_hdr; | ||
44 | }; | ||
45 | |||
46 | #define B_SUPPORTED_RATES 5 | ||
47 | #define G_SUPPORTED_RATES 9 | ||
48 | #define BG_SUPPORTED_RATES 13 | ||
49 | #define A_SUPPORTED_RATES 9 | ||
50 | #define HOSTCMD_SUPPORTED_RATES 14 | ||
51 | #define N_SUPPORTED_RATES 3 | ||
52 | #define ALL_802_11_BANDS (BAND_A | BAND_B | BAND_G | BAND_GN) | ||
53 | |||
54 | #define FW_MULTI_BANDS_SUPPORT (BIT(8) | BIT(9) | BIT(10) | BIT(11)) | ||
55 | #define IS_SUPPORT_MULTI_BANDS(adapter) \ | ||
56 | (adapter->fw_cap_info & FW_MULTI_BANDS_SUPPORT) | ||
57 | #define GET_FW_DEFAULT_BANDS(adapter) \ | ||
58 | ((adapter->fw_cap_info >> 8) & ALL_802_11_BANDS) | ||
59 | |||
60 | extern u8 supported_rates_b[B_SUPPORTED_RATES]; | ||
61 | extern u8 supported_rates_g[G_SUPPORTED_RATES]; | ||
62 | extern u8 supported_rates_bg[BG_SUPPORTED_RATES]; | ||
63 | extern u8 supported_rates_a[A_SUPPORTED_RATES]; | ||
64 | extern u8 supported_rates_n[N_SUPPORTED_RATES]; | ||
65 | |||
66 | #define HostCmd_WEP_KEY_INDEX_MASK 0x3fff | ||
67 | |||
68 | #define KEY_INFO_ENABLED 0x01 | ||
69 | enum KEY_TYPE_ID { | ||
70 | KEY_TYPE_ID_WEP = 0, | ||
71 | KEY_TYPE_ID_TKIP, | ||
72 | KEY_TYPE_ID_AES, | ||
73 | KEY_TYPE_ID_WAPI, | ||
74 | }; | ||
75 | #define KEY_MCAST BIT(0) | ||
76 | #define KEY_UNICAST BIT(1) | ||
77 | #define KEY_ENABLED BIT(2) | ||
78 | |||
79 | #define WAPI_KEY_LEN 50 | ||
80 | |||
81 | #define MAX_POLL_TRIES 100 | ||
82 | |||
83 | #define MAX_MULTI_INTERFACE_POLL_TRIES 1000 | ||
84 | |||
85 | #define MAX_FIRMWARE_POLL_TRIES 100 | ||
86 | |||
87 | #define FIRMWARE_READY 0xfedc | ||
88 | |||
89 | enum MWIFIEX_802_11_PRIVACY_FILTER { | ||
90 | MWIFIEX_802_11_PRIV_FILTER_ACCEPT_ALL, | ||
91 | MWIFIEX_802_11_PRIV_FILTER_8021X_WEP | ||
92 | }; | ||
93 | |||
94 | enum MWIFIEX_802_11_WEP_STATUS { | ||
95 | MWIFIEX_802_11_WEP_ENABLED, | ||
96 | MWIFIEX_802_11_WEP_DISABLED, | ||
97 | }; | ||
98 | |||
99 | #define CAL_SNR(RSSI, NF) ((s16)((s16)(RSSI)-(s16)(NF))) | ||
100 | |||
101 | #define PROPRIETARY_TLV_BASE_ID 0x0100 | ||
102 | #define TLV_TYPE_KEY_MATERIAL (PROPRIETARY_TLV_BASE_ID + 0) | ||
103 | #define TLV_TYPE_CHANLIST (PROPRIETARY_TLV_BASE_ID + 1) | ||
104 | #define TLV_TYPE_NUMPROBES (PROPRIETARY_TLV_BASE_ID + 2) | ||
105 | #define TLV_TYPE_PASSTHROUGH (PROPRIETARY_TLV_BASE_ID + 10) | ||
106 | #define TLV_TYPE_WMMQSTATUS (PROPRIETARY_TLV_BASE_ID + 16) | ||
107 | #define TLV_TYPE_WILDCARDSSID (PROPRIETARY_TLV_BASE_ID + 18) | ||
108 | #define TLV_TYPE_TSFTIMESTAMP (PROPRIETARY_TLV_BASE_ID + 19) | ||
109 | #define TLV_TYPE_AUTH_TYPE (PROPRIETARY_TLV_BASE_ID + 31) | ||
110 | #define TLV_TYPE_CHANNELBANDLIST (PROPRIETARY_TLV_BASE_ID + 42) | ||
111 | #define TLV_TYPE_RATE_DROP_CONTROL (PROPRIETARY_TLV_BASE_ID + 82) | ||
112 | #define TLV_TYPE_RATE_SCOPE (PROPRIETARY_TLV_BASE_ID + 83) | ||
113 | #define TLV_TYPE_POWER_GROUP (PROPRIETARY_TLV_BASE_ID + 84) | ||
114 | #define TLV_TYPE_WAPI_IE (PROPRIETARY_TLV_BASE_ID + 94) | ||
115 | #define TLV_TYPE_AUTO_DS_PARAM (PROPRIETARY_TLV_BASE_ID + 113) | ||
116 | #define TLV_TYPE_PS_PARAM (PROPRIETARY_TLV_BASE_ID + 114) | ||
117 | |||
118 | #define MWIFIEX_TX_DATA_BUF_SIZE_2K 2048 | ||
119 | |||
120 | #define SSN_MASK 0xfff0 | ||
121 | |||
122 | #define BA_RESULT_SUCCESS 0x0 | ||
123 | #define BA_RESULT_TIMEOUT 0x2 | ||
124 | |||
125 | #define IS_BASTREAM_SETUP(ptr) (ptr->ba_status) | ||
126 | |||
127 | #define BA_STREAM_NOT_ALLOWED 0xff | ||
128 | |||
129 | #define IS_11N_ENABLED(priv) ((priv->adapter->config_bands & BAND_GN || \ | ||
130 | priv->adapter->config_bands & BAND_AN) \ | ||
131 | && priv->curr_bss_params.bss_descriptor.bcn_ht_cap) | ||
132 | #define INITIATOR_BIT(DelBAParamSet) (((DelBAParamSet) &\ | ||
133 | BIT(DELBA_INITIATOR_POS)) >> DELBA_INITIATOR_POS) | ||
134 | |||
135 | #define MWIFIEX_TX_DATA_BUF_SIZE_4K 4096 | ||
136 | #define MWIFIEX_TX_DATA_BUF_SIZE_8K 8192 | ||
137 | |||
138 | #define ISSUPP_11NENABLED(FwCapInfo) (FwCapInfo & BIT(11)) | ||
139 | |||
140 | /* dev_cap bitmap | ||
141 | * BIT | ||
142 | * 0-16 reserved | ||
143 | * 17 IEEE80211_HT_CAP_SUP_WIDTH_20_40 | ||
144 | * 18-22 reserved | ||
145 | * 23 IEEE80211_HT_CAP_SGI_20 | ||
146 | * 24 IEEE80211_HT_CAP_SGI_40 | ||
147 | * 25 IEEE80211_HT_CAP_TX_STBC | ||
148 | * 26 IEEE80211_HT_CAP_RX_STBC | ||
149 | * 27-28 reserved | ||
150 | * 29 IEEE80211_HT_CAP_GRN_FLD | ||
151 | * 30-31 reserved | ||
152 | */ | ||
153 | #define ISSUPP_CHANWIDTH40(Dot11nDevCap) (Dot11nDevCap & BIT(17)) | ||
154 | #define ISSUPP_SHORTGI20(Dot11nDevCap) (Dot11nDevCap & BIT(23)) | ||
155 | #define ISSUPP_SHORTGI40(Dot11nDevCap) (Dot11nDevCap & BIT(24)) | ||
156 | #define ISSUPP_TXSTBC(Dot11nDevCap) (Dot11nDevCap & BIT(25)) | ||
157 | #define ISSUPP_RXSTBC(Dot11nDevCap) (Dot11nDevCap & BIT(26)) | ||
158 | #define ISSUPP_GREENFIELD(Dot11nDevCap) (Dot11nDevCap & BIT(29)) | ||
159 | |||
160 | #define GET_RXMCSSUPP(DevMCSSupported) (DevMCSSupported & 0x0f) | ||
161 | #define SETHT_MCS32(x) (x[4] |= 1) | ||
162 | |||
163 | #define SET_SECONDARYCHAN(RadioType, SECCHAN) (RadioType |= (SECCHAN << 4)) | ||
164 | |||
165 | #define LLC_SNAP_LEN 8 | ||
166 | |||
167 | #define MOD_CLASS_HR_DSSS 0x03 | ||
168 | #define MOD_CLASS_OFDM 0x07 | ||
169 | #define MOD_CLASS_HT 0x08 | ||
170 | #define HT_BW_20 0 | ||
171 | #define HT_BW_40 1 | ||
172 | |||
173 | #define HostCmd_CMD_GET_HW_SPEC 0x0003 | ||
174 | #define HostCmd_CMD_802_11_SCAN 0x0006 | ||
175 | #define HostCmd_CMD_802_11_GET_LOG 0x000b | ||
176 | #define HostCmd_CMD_MAC_MULTICAST_ADR 0x0010 | ||
177 | #define HostCmd_CMD_802_11_EEPROM_ACCESS 0x0059 | ||
178 | #define HostCmd_CMD_802_11_ASSOCIATE 0x0012 | ||
179 | #define HostCmd_CMD_802_11_SNMP_MIB 0x0016 | ||
180 | #define HostCmd_CMD_MAC_REG_ACCESS 0x0019 | ||
181 | #define HostCmd_CMD_BBP_REG_ACCESS 0x001a | ||
182 | #define HostCmd_CMD_RF_REG_ACCESS 0x001b | ||
183 | #define HostCmd_CMD_PMIC_REG_ACCESS 0x00ad | ||
184 | #define HostCmd_CMD_802_11_RF_CHANNEL 0x001d | ||
185 | #define HostCmd_CMD_802_11_DEAUTHENTICATE 0x0024 | ||
186 | #define HostCmd_CMD_MAC_CONTROL 0x0028 | ||
187 | #define HostCmd_CMD_802_11_AD_HOC_START 0x002b | ||
188 | #define HostCmd_CMD_802_11_AD_HOC_JOIN 0x002c | ||
189 | #define HostCmd_CMD_802_11_AD_HOC_STOP 0x0040 | ||
190 | #define HostCmd_CMD_802_11_MAC_ADDRESS 0x004D | ||
191 | #define HostCmd_CMD_802_11D_DOMAIN_INFO 0x005b | ||
192 | #define HostCmd_CMD_802_11_KEY_MATERIAL 0x005e | ||
193 | #define HostCmd_CMD_802_11_BG_SCAN_QUERY 0x006c | ||
194 | #define HostCmd_CMD_WMM_GET_STATUS 0x0071 | ||
195 | #define HostCmd_CMD_802_11_TX_RATE_QUERY 0x007f | ||
196 | #define HostCmd_CMD_802_11_IBSS_COALESCING_STATUS 0x0083 | ||
197 | #define HostCmd_CMD_VERSION_EXT 0x0097 | ||
198 | #define HostCmd_CMD_RSSI_INFO 0x00a4 | ||
199 | #define HostCmd_CMD_FUNC_INIT 0x00a9 | ||
200 | #define HostCmd_CMD_FUNC_SHUTDOWN 0x00aa | ||
201 | #define HostCmd_CMD_11N_CFG 0x00cd | ||
202 | #define HostCmd_CMD_11N_ADDBA_REQ 0x00ce | ||
203 | #define HostCmd_CMD_11N_ADDBA_RSP 0x00cf | ||
204 | #define HostCmd_CMD_11N_DELBA 0x00d0 | ||
205 | #define HostCmd_CMD_RECONFIGURE_TX_BUFF 0x00d9 | ||
206 | #define HostCmd_CMD_AMSDU_AGGR_CTRL 0x00df | ||
207 | #define HostCmd_CMD_TXPWR_CFG 0x00d1 | ||
208 | #define HostCmd_CMD_TX_RATE_CFG 0x00d6 | ||
209 | #define HostCmd_CMD_802_11_PS_MODE_ENH 0x00e4 | ||
210 | #define HostCmd_CMD_802_11_HS_CFG_ENH 0x00e5 | ||
211 | #define HostCmd_CMD_CAU_REG_ACCESS 0x00ed | ||
212 | #define HostCmd_CMD_SET_BSS_MODE 0x00f7 | ||
213 | |||
214 | |||
215 | enum ENH_PS_MODES { | ||
216 | EN_PS = 1, | ||
217 | DIS_PS = 2, | ||
218 | EN_AUTO_DS = 3, | ||
219 | DIS_AUTO_DS = 4, | ||
220 | SLEEP_CONFIRM = 5, | ||
221 | GET_PS = 0, | ||
222 | EN_AUTO_PS = 0xff, | ||
223 | DIS_AUTO_PS = 0xfe, | ||
224 | }; | ||
225 | |||
226 | #define HostCmd_RET_BIT 0x8000 | ||
227 | #define HostCmd_ACT_GEN_GET 0x0000 | ||
228 | #define HostCmd_ACT_GEN_SET 0x0001 | ||
229 | #define HostCmd_RESULT_OK 0x0000 | ||
230 | |||
231 | #define HostCmd_ACT_MAC_RX_ON 0x0001 | ||
232 | #define HostCmd_ACT_MAC_TX_ON 0x0002 | ||
233 | #define HostCmd_ACT_MAC_WEP_ENABLE 0x0008 | ||
234 | #define HostCmd_ACT_MAC_ETHERNETII_ENABLE 0x0010 | ||
235 | #define HostCmd_ACT_MAC_PROMISCUOUS_ENABLE 0x0080 | ||
236 | #define HostCmd_ACT_MAC_ALL_MULTICAST_ENABLE 0x0100 | ||
237 | #define HostCmd_ACT_MAC_ADHOC_G_PROTECTION_ON 0x2000 | ||
238 | |||
239 | #define HostCmd_BSS_MODE_IBSS 0x0002 | ||
240 | #define HostCmd_BSS_MODE_ANY 0x0003 | ||
241 | |||
242 | #define HostCmd_SCAN_RADIO_TYPE_BG 0 | ||
243 | #define HostCmd_SCAN_RADIO_TYPE_A 1 | ||
244 | |||
245 | #define HOST_SLEEP_CFG_CANCEL 0xffffffff | ||
246 | #define HOST_SLEEP_CFG_COND_DEF 0x0000000f | ||
247 | #define HOST_SLEEP_CFG_GPIO_DEF 0xff | ||
248 | #define HOST_SLEEP_CFG_GAP_DEF 0 | ||
249 | |||
250 | #define CMD_F_HOSTCMD (1 << 0) | ||
251 | #define CMD_F_CANCELED (1 << 1) | ||
252 | |||
253 | #define HostCmd_CMD_ID_MASK 0x0fff | ||
254 | |||
255 | #define HostCmd_SEQ_NUM_MASK 0x00ff | ||
256 | |||
257 | #define HostCmd_BSS_NUM_MASK 0x0f00 | ||
258 | |||
259 | #define HostCmd_BSS_TYPE_MASK 0xf000 | ||
260 | |||
261 | #define HostCmd_SET_SEQ_NO_BSS_INFO(seq, num, type) { \ | ||
262 | (((seq) & 0x00ff) | \ | ||
263 | (((num) & 0x000f) << 8)) | \ | ||
264 | (((type) & 0x000f) << 12); } | ||
265 | |||
266 | #define HostCmd_GET_SEQ_NO(seq) \ | ||
267 | ((seq) & HostCmd_SEQ_NUM_MASK) | ||
268 | |||
269 | #define HostCmd_GET_BSS_NO(seq) \ | ||
270 | (((seq) & HostCmd_BSS_NUM_MASK) >> 8) | ||
271 | |||
272 | #define HostCmd_GET_BSS_TYPE(seq) \ | ||
273 | (((seq) & HostCmd_BSS_TYPE_MASK) >> 12) | ||
274 | |||
275 | #define EVENT_DUMMY_HOST_WAKEUP_SIGNAL 0x00000001 | ||
276 | #define EVENT_LINK_LOST 0x00000003 | ||
277 | #define EVENT_LINK_SENSED 0x00000004 | ||
278 | #define EVENT_MIB_CHANGED 0x00000006 | ||
279 | #define EVENT_INIT_DONE 0x00000007 | ||
280 | #define EVENT_DEAUTHENTICATED 0x00000008 | ||
281 | #define EVENT_DISASSOCIATED 0x00000009 | ||
282 | #define EVENT_PS_AWAKE 0x0000000a | ||
283 | #define EVENT_PS_SLEEP 0x0000000b | ||
284 | #define EVENT_MIC_ERR_MULTICAST 0x0000000d | ||
285 | #define EVENT_MIC_ERR_UNICAST 0x0000000e | ||
286 | #define EVENT_DEEP_SLEEP_AWAKE 0x00000010 | ||
287 | #define EVENT_ADHOC_BCN_LOST 0x00000011 | ||
288 | |||
289 | #define EVENT_WMM_STATUS_CHANGE 0x00000017 | ||
290 | #define EVENT_BG_SCAN_REPORT 0x00000018 | ||
291 | #define EVENT_RSSI_LOW 0x00000019 | ||
292 | #define EVENT_SNR_LOW 0x0000001a | ||
293 | #define EVENT_MAX_FAIL 0x0000001b | ||
294 | #define EVENT_RSSI_HIGH 0x0000001c | ||
295 | #define EVENT_SNR_HIGH 0x0000001d | ||
296 | #define EVENT_IBSS_COALESCED 0x0000001e | ||
297 | #define EVENT_DATA_RSSI_LOW 0x00000024 | ||
298 | #define EVENT_DATA_SNR_LOW 0x00000025 | ||
299 | #define EVENT_DATA_RSSI_HIGH 0x00000026 | ||
300 | #define EVENT_DATA_SNR_HIGH 0x00000027 | ||
301 | #define EVENT_LINK_QUALITY 0x00000028 | ||
302 | #define EVENT_PORT_RELEASE 0x0000002b | ||
303 | #define EVENT_PRE_BEACON_LOST 0x00000031 | ||
304 | #define EVENT_ADDBA 0x00000033 | ||
305 | #define EVENT_DELBA 0x00000034 | ||
306 | #define EVENT_BA_STREAM_TIEMOUT 0x00000037 | ||
307 | #define EVENT_AMSDU_AGGR_CTRL 0x00000042 | ||
308 | #define EVENT_WEP_ICV_ERR 0x00000046 | ||
309 | #define EVENT_HS_ACT_REQ 0x00000047 | ||
310 | #define EVENT_BW_CHANGE 0x00000048 | ||
311 | |||
312 | #define EVENT_HOSTWAKE_STAIE 0x0000004d | ||
313 | |||
314 | #define EVENT_ID_MASK 0xffff | ||
315 | #define BSS_NUM_MASK 0xf | ||
316 | |||
317 | #define EVENT_GET_BSS_NUM(event_cause) \ | ||
318 | (((event_cause) >> 16) & BSS_NUM_MASK) | ||
319 | |||
320 | #define EVENT_GET_BSS_TYPE(event_cause) \ | ||
321 | (((event_cause) >> 24) & 0x00ff) | ||
322 | |||
323 | struct mwifiex_ie_types_header { | ||
324 | __le16 type; | ||
325 | __le16 len; | ||
326 | } __packed; | ||
327 | |||
328 | struct mwifiex_ie_types_data { | ||
329 | struct mwifiex_ie_types_header header; | ||
330 | u8 data[1]; | ||
331 | } __packed; | ||
332 | |||
333 | #define MWIFIEX_TxPD_POWER_MGMT_NULL_PACKET 0x01 | ||
334 | #define MWIFIEX_TxPD_POWER_MGMT_LAST_PACKET 0x08 | ||
335 | |||
336 | struct txpd { | ||
337 | u8 bss_type; | ||
338 | u8 bss_num; | ||
339 | __le16 tx_pkt_length; | ||
340 | __le16 tx_pkt_offset; | ||
341 | __le16 tx_pkt_type; | ||
342 | __le32 tx_control; | ||
343 | u8 priority; | ||
344 | u8 flags; | ||
345 | u8 pkt_delay_2ms; | ||
346 | u8 reserved1; | ||
347 | } __packed; | ||
348 | |||
349 | struct rxpd { | ||
350 | u8 bss_type; | ||
351 | u8 bss_num; | ||
352 | u16 rx_pkt_length; | ||
353 | u16 rx_pkt_offset; | ||
354 | u16 rx_pkt_type; | ||
355 | u16 seq_num; | ||
356 | u8 priority; | ||
357 | u8 rx_rate; | ||
358 | s8 snr; | ||
359 | s8 nf; | ||
360 | /* Ht Info [Bit 0] RxRate format: LG=0, HT=1 | ||
361 | * [Bit 1] HT Bandwidth: BW20 = 0, BW40 = 1 | ||
362 | * [Bit 2] HT Guard Interval: LGI = 0, SGI = 1 */ | ||
363 | u8 ht_info; | ||
364 | u8 reserved; | ||
365 | } __packed; | ||
366 | |||
367 | enum mwifiex_chan_scan_mode_bitmasks { | ||
368 | MWIFIEX_PASSIVE_SCAN = BIT(0), | ||
369 | MWIFIEX_DISABLE_CHAN_FILT = BIT(1), | ||
370 | }; | ||
371 | |||
372 | #define SECOND_CHANNEL_BELOW 0x30 | ||
373 | #define SECOND_CHANNEL_ABOVE 0x10 | ||
374 | struct mwifiex_chan_scan_param_set { | ||
375 | u8 radio_type; | ||
376 | u8 chan_number; | ||
377 | u8 chan_scan_mode_bitmap; | ||
378 | __le16 min_scan_time; | ||
379 | __le16 max_scan_time; | ||
380 | } __packed; | ||
381 | |||
382 | struct mwifiex_ie_types_chan_list_param_set { | ||
383 | struct mwifiex_ie_types_header header; | ||
384 | struct mwifiex_chan_scan_param_set chan_scan_param[1]; | ||
385 | } __packed; | ||
386 | |||
387 | struct chan_band_param_set { | ||
388 | u8 radio_type; | ||
389 | u8 chan_number; | ||
390 | }; | ||
391 | |||
392 | struct mwifiex_ie_types_chan_band_list_param_set { | ||
393 | struct mwifiex_ie_types_header header; | ||
394 | struct chan_band_param_set chan_band_param[1]; | ||
395 | } __packed; | ||
396 | |||
397 | struct mwifiex_ie_types_rates_param_set { | ||
398 | struct mwifiex_ie_types_header header; | ||
399 | u8 rates[1]; | ||
400 | } __packed; | ||
401 | |||
402 | struct mwifiex_ie_types_ssid_param_set { | ||
403 | struct mwifiex_ie_types_header header; | ||
404 | u8 ssid[1]; | ||
405 | } __packed; | ||
406 | |||
407 | struct mwifiex_ie_types_num_probes { | ||
408 | struct mwifiex_ie_types_header header; | ||
409 | __le16 num_probes; | ||
410 | } __packed; | ||
411 | |||
412 | struct mwifiex_ie_types_wildcard_ssid_params { | ||
413 | struct mwifiex_ie_types_header header; | ||
414 | u8 max_ssid_length; | ||
415 | u8 ssid[1]; | ||
416 | } __packed; | ||
417 | |||
418 | #define TSF_DATA_SIZE 8 | ||
419 | struct mwifiex_ie_types_tsf_timestamp { | ||
420 | struct mwifiex_ie_types_header header; | ||
421 | u8 tsf_data[1]; | ||
422 | } __packed; | ||
423 | |||
424 | struct mwifiex_cf_param_set { | ||
425 | u8 cfp_cnt; | ||
426 | u8 cfp_period; | ||
427 | u16 cfp_max_duration; | ||
428 | u16 cfp_duration_remaining; | ||
429 | } __packed; | ||
430 | |||
431 | struct mwifiex_ibss_param_set { | ||
432 | u16 atim_window; | ||
433 | } __packed; | ||
434 | |||
435 | struct mwifiex_ie_types_ss_param_set { | ||
436 | struct mwifiex_ie_types_header header; | ||
437 | union { | ||
438 | struct mwifiex_cf_param_set cf_param_set[1]; | ||
439 | struct mwifiex_ibss_param_set ibss_param_set[1]; | ||
440 | } cf_ibss; | ||
441 | } __packed; | ||
442 | |||
443 | struct mwifiex_fh_param_set { | ||
444 | u16 dwell_time; | ||
445 | u8 hop_set; | ||
446 | u8 hop_pattern; | ||
447 | u8 hop_index; | ||
448 | } __packed; | ||
449 | |||
450 | struct mwifiex_ds_param_set { | ||
451 | u8 current_chan; | ||
452 | } __packed; | ||
453 | |||
454 | struct mwifiex_ie_types_phy_param_set { | ||
455 | struct mwifiex_ie_types_header header; | ||
456 | union { | ||
457 | struct mwifiex_fh_param_set fh_param_set[1]; | ||
458 | struct mwifiex_ds_param_set ds_param_set[1]; | ||
459 | } fh_ds; | ||
460 | } __packed; | ||
461 | |||
462 | struct mwifiex_ie_types_auth_type { | ||
463 | struct mwifiex_ie_types_header header; | ||
464 | __le16 auth_type; | ||
465 | } __packed; | ||
466 | |||
467 | struct mwifiex_ie_types_vendor_param_set { | ||
468 | struct mwifiex_ie_types_header header; | ||
469 | u8 ie[MWIFIEX_MAX_VSIE_LEN]; | ||
470 | }; | ||
471 | |||
472 | struct mwifiex_ie_types_rsn_param_set { | ||
473 | struct mwifiex_ie_types_header header; | ||
474 | u8 rsn_ie[1]; | ||
475 | } __packed; | ||
476 | |||
477 | #define KEYPARAMSET_FIXED_LEN 6 | ||
478 | |||
479 | struct mwifiex_ie_type_key_param_set { | ||
480 | __le16 type; | ||
481 | __le16 length; | ||
482 | __le16 key_type_id; | ||
483 | __le16 key_info; | ||
484 | __le16 key_len; | ||
485 | u8 key[50]; | ||
486 | } __packed; | ||
487 | |||
488 | struct host_cmd_ds_802_11_key_material { | ||
489 | __le16 action; | ||
490 | struct mwifiex_ie_type_key_param_set key_param_set; | ||
491 | } __packed; | ||
492 | |||
493 | struct host_cmd_ds_gen { | ||
494 | u16 command; | ||
495 | u16 size; | ||
496 | u16 seq_num; | ||
497 | u16 result; | ||
498 | }; | ||
499 | |||
500 | #define S_DS_GEN sizeof(struct host_cmd_ds_gen) | ||
501 | |||
502 | enum sleep_resp_ctrl { | ||
503 | RESP_NOT_NEEDED = 0, | ||
504 | RESP_NEEDED, | ||
505 | }; | ||
506 | |||
507 | struct mwifiex_ps_param { | ||
508 | __le16 null_pkt_interval; | ||
509 | __le16 multiple_dtims; | ||
510 | __le16 bcn_miss_timeout; | ||
511 | __le16 local_listen_interval; | ||
512 | __le16 adhoc_wake_period; | ||
513 | __le16 mode; | ||
514 | __le16 delay_to_ps; | ||
515 | }; | ||
516 | |||
517 | #define BITMAP_AUTO_DS 0x01 | ||
518 | #define BITMAP_STA_PS 0x10 | ||
519 | |||
520 | struct mwifiex_ie_types_auto_ds_param { | ||
521 | struct mwifiex_ie_types_header header; | ||
522 | __le16 deep_sleep_timeout; | ||
523 | } __packed; | ||
524 | |||
525 | struct mwifiex_ie_types_ps_param { | ||
526 | struct mwifiex_ie_types_header header; | ||
527 | struct mwifiex_ps_param param; | ||
528 | } __packed; | ||
529 | |||
530 | struct host_cmd_ds_802_11_ps_mode_enh { | ||
531 | __le16 action; | ||
532 | |||
533 | union { | ||
534 | struct mwifiex_ps_param opt_ps; | ||
535 | __le16 ps_bitmap; | ||
536 | } params; | ||
537 | } __packed; | ||
538 | |||
539 | struct host_cmd_ds_get_hw_spec { | ||
540 | __le16 hw_if_version; | ||
541 | __le16 version; | ||
542 | __le16 reserved; | ||
543 | __le16 num_of_mcast_adr; | ||
544 | u8 permanent_addr[ETH_ALEN]; | ||
545 | __le16 region_code; | ||
546 | __le16 number_of_antenna; | ||
547 | __le32 fw_release_number; | ||
548 | __le32 reserved_1; | ||
549 | __le32 reserved_2; | ||
550 | __le32 reserved_3; | ||
551 | __le32 fw_cap_info; | ||
552 | __le32 dot_11n_dev_cap; | ||
553 | u8 dev_mcs_support; | ||
554 | __le16 mp_end_port; /* SDIO only, reserved for other interfacces */ | ||
555 | __le16 reserved_4; | ||
556 | } __packed; | ||
557 | |||
558 | struct host_cmd_ds_802_11_rssi_info { | ||
559 | __le16 action; | ||
560 | __le16 ndata; | ||
561 | __le16 nbcn; | ||
562 | __le16 reserved[9]; | ||
563 | long long reserved_1; | ||
564 | }; | ||
565 | |||
566 | struct host_cmd_ds_802_11_rssi_info_rsp { | ||
567 | __le16 action; | ||
568 | __le16 ndata; | ||
569 | __le16 nbcn; | ||
570 | __le16 data_rssi_last; | ||
571 | __le16 data_nf_last; | ||
572 | __le16 data_rssi_avg; | ||
573 | __le16 data_nf_avg; | ||
574 | __le16 bcn_rssi_last; | ||
575 | __le16 bcn_nf_last; | ||
576 | __le16 bcn_rssi_avg; | ||
577 | __le16 bcn_nf_avg; | ||
578 | long long tsf_bcn; | ||
579 | }; | ||
580 | |||
581 | struct host_cmd_ds_802_11_mac_address { | ||
582 | __le16 action; | ||
583 | u8 mac_addr[ETH_ALEN]; | ||
584 | }; | ||
585 | |||
586 | struct host_cmd_ds_mac_control { | ||
587 | __le16 action; | ||
588 | __le16 reserved; | ||
589 | }; | ||
590 | |||
591 | struct host_cmd_ds_mac_multicast_adr { | ||
592 | __le16 action; | ||
593 | __le16 num_of_adrs; | ||
594 | u8 mac_list[MWIFIEX_MAX_MULTICAST_LIST_SIZE][ETH_ALEN]; | ||
595 | } __packed; | ||
596 | |||
597 | struct host_cmd_ds_802_11_deauthenticate { | ||
598 | u8 mac_addr[ETH_ALEN]; | ||
599 | __le16 reason_code; | ||
600 | } __packed; | ||
601 | |||
602 | struct host_cmd_ds_802_11_associate { | ||
603 | u8 peer_sta_addr[ETH_ALEN]; | ||
604 | __le16 cap_info_bitmap; | ||
605 | __le16 listen_interval; | ||
606 | __le16 beacon_period; | ||
607 | u8 dtim_period; | ||
608 | } __packed; | ||
609 | |||
610 | struct ieee_types_assoc_rsp { | ||
611 | __le16 cap_info_bitmap; | ||
612 | __le16 status_code; | ||
613 | __le16 a_id; | ||
614 | u8 ie_buffer[1]; | ||
615 | } __packed; | ||
616 | |||
617 | struct host_cmd_ds_802_11_associate_rsp { | ||
618 | struct ieee_types_assoc_rsp assoc_rsp; | ||
619 | } __packed; | ||
620 | |||
621 | struct ieee_types_cf_param_set { | ||
622 | u8 element_id; | ||
623 | u8 len; | ||
624 | u8 cfp_cnt; | ||
625 | u8 cfp_period; | ||
626 | u16 cfp_max_duration; | ||
627 | u16 cfp_duration_remaining; | ||
628 | } __packed; | ||
629 | |||
630 | struct ieee_types_ibss_param_set { | ||
631 | u8 element_id; | ||
632 | u8 len; | ||
633 | __le16 atim_window; | ||
634 | } __packed; | ||
635 | |||
636 | union ieee_types_ss_param_set { | ||
637 | struct ieee_types_cf_param_set cf_param_set; | ||
638 | struct ieee_types_ibss_param_set ibss_param_set; | ||
639 | } __packed; | ||
640 | |||
641 | struct ieee_types_fh_param_set { | ||
642 | u8 element_id; | ||
643 | u8 len; | ||
644 | __le16 dwell_time; | ||
645 | u8 hop_set; | ||
646 | u8 hop_pattern; | ||
647 | u8 hop_index; | ||
648 | } __packed; | ||
649 | |||
650 | struct ieee_types_ds_param_set { | ||
651 | u8 element_id; | ||
652 | u8 len; | ||
653 | u8 current_chan; | ||
654 | } __packed; | ||
655 | |||
656 | union ieee_types_phy_param_set { | ||
657 | struct ieee_types_fh_param_set fh_param_set; | ||
658 | struct ieee_types_ds_param_set ds_param_set; | ||
659 | } __packed; | ||
660 | |||
661 | struct host_cmd_ds_802_11_ad_hoc_start { | ||
662 | u8 ssid[IEEE80211_MAX_SSID_LEN]; | ||
663 | u8 bss_mode; | ||
664 | __le16 beacon_period; | ||
665 | u8 dtim_period; | ||
666 | union ieee_types_ss_param_set ss_param_set; | ||
667 | union ieee_types_phy_param_set phy_param_set; | ||
668 | u16 reserved1; | ||
669 | __le16 cap_info_bitmap; | ||
670 | u8 DataRate[HOSTCMD_SUPPORTED_RATES]; | ||
671 | } __packed; | ||
672 | |||
673 | struct host_cmd_ds_802_11_ad_hoc_result { | ||
674 | u8 pad[3]; | ||
675 | u8 bssid[ETH_ALEN]; | ||
676 | } __packed; | ||
677 | |||
678 | struct adhoc_bss_desc { | ||
679 | u8 bssid[ETH_ALEN]; | ||
680 | u8 ssid[IEEE80211_MAX_SSID_LEN]; | ||
681 | u8 bss_mode; | ||
682 | __le16 beacon_period; | ||
683 | u8 dtim_period; | ||
684 | u8 time_stamp[8]; | ||
685 | u8 local_time[8]; | ||
686 | union ieee_types_phy_param_set phy_param_set; | ||
687 | union ieee_types_ss_param_set ss_param_set; | ||
688 | __le16 cap_info_bitmap; | ||
689 | u8 data_rates[HOSTCMD_SUPPORTED_RATES]; | ||
690 | |||
691 | /* | ||
692 | * DO NOT ADD ANY FIELDS TO THIS STRUCTURE. | ||
693 | * It is used in the Adhoc join command and will cause a | ||
694 | * binary layout mismatch with the firmware | ||
695 | */ | ||
696 | } __packed; | ||
697 | |||
698 | struct host_cmd_ds_802_11_ad_hoc_join { | ||
699 | struct adhoc_bss_desc bss_descriptor; | ||
700 | u16 reserved1; | ||
701 | u16 reserved2; | ||
702 | } __packed; | ||
703 | |||
704 | struct host_cmd_ds_802_11_get_log { | ||
705 | __le32 mcast_tx_frame; | ||
706 | __le32 failed; | ||
707 | __le32 retry; | ||
708 | __le32 multi_retry; | ||
709 | __le32 frame_dup; | ||
710 | __le32 rts_success; | ||
711 | __le32 rts_failure; | ||
712 | __le32 ack_failure; | ||
713 | __le32 rx_frag; | ||
714 | __le32 mcast_rx_frame; | ||
715 | __le32 fcs_error; | ||
716 | __le32 tx_frame; | ||
717 | __le32 reserved; | ||
718 | __le32 wep_icv_err_cnt[4]; | ||
719 | }; | ||
720 | |||
721 | struct host_cmd_ds_tx_rate_query { | ||
722 | u8 tx_rate; | ||
723 | /* Ht Info [Bit 0] RxRate format: LG=0, HT=1 | ||
724 | * [Bit 1] HT Bandwidth: BW20 = 0, BW40 = 1 | ||
725 | * [Bit 2] HT Guard Interval: LGI = 0, SGI = 1 */ | ||
726 | u8 ht_info; | ||
727 | } __packed; | ||
728 | |||
729 | enum Host_Sleep_Action { | ||
730 | HS_CONFIGURE = 0x0001, | ||
731 | HS_ACTIVATE = 0x0002, | ||
732 | }; | ||
733 | |||
734 | struct mwifiex_hs_config_param { | ||
735 | __le32 conditions; | ||
736 | u8 gpio; | ||
737 | u8 gap; | ||
738 | } __packed; | ||
739 | |||
740 | struct hs_activate_param { | ||
741 | u16 resp_ctrl; | ||
742 | } __packed; | ||
743 | |||
744 | struct host_cmd_ds_802_11_hs_cfg_enh { | ||
745 | __le16 action; | ||
746 | |||
747 | union { | ||
748 | struct mwifiex_hs_config_param hs_config; | ||
749 | struct hs_activate_param hs_activate; | ||
750 | } params; | ||
751 | } __packed; | ||
752 | |||
753 | enum SNMP_MIB_INDEX { | ||
754 | OP_RATE_SET_I = 1, | ||
755 | DTIM_PERIOD_I = 3, | ||
756 | RTS_THRESH_I = 5, | ||
757 | SHORT_RETRY_LIM_I = 6, | ||
758 | LONG_RETRY_LIM_I = 7, | ||
759 | FRAG_THRESH_I = 8, | ||
760 | DOT11D_I = 9, | ||
761 | }; | ||
762 | |||
763 | #define MAX_SNMP_BUF_SIZE 128 | ||
764 | |||
765 | struct host_cmd_ds_802_11_snmp_mib { | ||
766 | __le16 query_type; | ||
767 | __le16 oid; | ||
768 | __le16 buf_size; | ||
769 | u8 value[1]; | ||
770 | } __packed; | ||
771 | |||
772 | struct mwifiex_rate_scope { | ||
773 | __le16 type; | ||
774 | __le16 length; | ||
775 | __le16 hr_dsss_rate_bitmap; | ||
776 | __le16 ofdm_rate_bitmap; | ||
777 | __le16 ht_mcs_rate_bitmap[8]; | ||
778 | } __packed; | ||
779 | |||
780 | struct mwifiex_rate_drop_pattern { | ||
781 | __le16 type; | ||
782 | __le16 length; | ||
783 | __le32 rate_drop_mode; | ||
784 | } __packed; | ||
785 | |||
786 | struct host_cmd_ds_tx_rate_cfg { | ||
787 | __le16 action; | ||
788 | __le16 cfg_index; | ||
789 | } __packed; | ||
790 | |||
791 | struct mwifiex_power_group { | ||
792 | u8 modulation_class; | ||
793 | u8 first_rate_code; | ||
794 | u8 last_rate_code; | ||
795 | s8 power_step; | ||
796 | s8 power_min; | ||
797 | s8 power_max; | ||
798 | u8 ht_bandwidth; | ||
799 | u8 reserved; | ||
800 | } __packed; | ||
801 | |||
802 | struct mwifiex_types_power_group { | ||
803 | u16 type; | ||
804 | u16 length; | ||
805 | } __packed; | ||
806 | |||
807 | struct host_cmd_ds_txpwr_cfg { | ||
808 | __le16 action; | ||
809 | __le16 cfg_index; | ||
810 | __le32 mode; | ||
811 | } __packed; | ||
812 | |||
813 | #define MWIFIEX_USER_SCAN_CHAN_MAX 50 | ||
814 | |||
815 | #define MWIFIEX_MAX_SSID_LIST_LENGTH 10 | ||
816 | |||
817 | struct mwifiex_scan_cmd_config { | ||
818 | /* | ||
819 | * BSS mode to be sent in the firmware command | ||
820 | */ | ||
821 | u8 bss_mode; | ||
822 | |||
823 | /* Specific BSSID used to filter scan results in the firmware */ | ||
824 | u8 specific_bssid[ETH_ALEN]; | ||
825 | |||
826 | /* Length of TLVs sent in command starting at tlvBuffer */ | ||
827 | u32 tlv_buf_len; | ||
828 | |||
829 | /* | ||
830 | * SSID TLV(s) and ChanList TLVs to be sent in the firmware command | ||
831 | * | ||
832 | * TLV_TYPE_CHANLIST, mwifiex_ie_types_chan_list_param_set | ||
833 | * WLAN_EID_SSID, mwifiex_ie_types_ssid_param_set | ||
834 | */ | ||
835 | u8 tlv_buf[1]; /* SSID TLV(s) and ChanList TLVs are stored | ||
836 | here */ | ||
837 | } __packed; | ||
838 | |||
839 | struct mwifiex_user_scan_chan { | ||
840 | u8 chan_number; | ||
841 | u8 radio_type; | ||
842 | u8 scan_type; | ||
843 | u8 reserved; | ||
844 | u32 scan_time; | ||
845 | } __packed; | ||
846 | |||
847 | struct mwifiex_user_scan_ssid { | ||
848 | u8 ssid[IEEE80211_MAX_SSID_LEN + 1]; | ||
849 | u8 max_len; | ||
850 | } __packed; | ||
851 | |||
852 | struct mwifiex_user_scan_cfg { | ||
853 | /* | ||
854 | * Flag set to keep the previous scan table intact | ||
855 | * | ||
856 | * If set, the scan results will accumulate, replacing any previous | ||
857 | * matched entries for a BSS with the new scan data | ||
858 | */ | ||
859 | u8 keep_previous_scan; | ||
860 | /* | ||
861 | * BSS mode to be sent in the firmware command | ||
862 | */ | ||
863 | u8 bss_mode; | ||
864 | /* Configure the number of probe requests for active chan scans */ | ||
865 | u8 num_probes; | ||
866 | u8 reserved; | ||
867 | /* BSSID filter sent in the firmware command to limit the results */ | ||
868 | u8 specific_bssid[ETH_ALEN]; | ||
869 | /* SSID filter list used in the to limit the scan results */ | ||
870 | struct mwifiex_user_scan_ssid ssid_list[MWIFIEX_MAX_SSID_LIST_LENGTH]; | ||
871 | /* Variable number (fixed maximum) of channels to scan up */ | ||
872 | struct mwifiex_user_scan_chan chan_list[MWIFIEX_USER_SCAN_CHAN_MAX]; | ||
873 | } __packed; | ||
874 | |||
875 | struct ie_body { | ||
876 | u8 grp_key_oui[4]; | ||
877 | u8 ptk_cnt[2]; | ||
878 | u8 ptk_body[4]; | ||
879 | } __packed; | ||
880 | |||
881 | struct host_cmd_ds_802_11_scan { | ||
882 | u8 bss_mode; | ||
883 | u8 bssid[ETH_ALEN]; | ||
884 | u8 tlv_buffer[1]; | ||
885 | } __packed; | ||
886 | |||
887 | struct host_cmd_ds_802_11_scan_rsp { | ||
888 | __le16 bss_descript_size; | ||
889 | u8 number_of_sets; | ||
890 | u8 bss_desc_and_tlv_buffer[1]; | ||
891 | } __packed; | ||
892 | |||
893 | struct host_cmd_ds_802_11_bg_scan_query { | ||
894 | u8 flush; | ||
895 | } __packed; | ||
896 | |||
897 | struct host_cmd_ds_802_11_bg_scan_query_rsp { | ||
898 | u32 report_condition; | ||
899 | struct host_cmd_ds_802_11_scan_rsp scan_resp; | ||
900 | } __packed; | ||
901 | |||
902 | struct mwifiex_ietypes_domain_param_set { | ||
903 | struct mwifiex_ie_types_header header; | ||
904 | u8 country_code[IEEE80211_COUNTRY_STRING_LEN]; | ||
905 | struct ieee80211_country_ie_triplet triplet[1]; | ||
906 | } __packed; | ||
907 | |||
908 | struct host_cmd_ds_802_11d_domain_info { | ||
909 | __le16 action; | ||
910 | struct mwifiex_ietypes_domain_param_set domain; | ||
911 | } __packed; | ||
912 | |||
913 | struct host_cmd_ds_802_11d_domain_info_rsp { | ||
914 | __le16 action; | ||
915 | struct mwifiex_ietypes_domain_param_set domain; | ||
916 | } __packed; | ||
917 | |||
918 | struct host_cmd_ds_11n_addba_req { | ||
919 | u8 add_req_result; | ||
920 | u8 peer_mac_addr[ETH_ALEN]; | ||
921 | u8 dialog_token; | ||
922 | __le16 block_ack_param_set; | ||
923 | __le16 block_ack_tmo; | ||
924 | __le16 ssn; | ||
925 | } __packed; | ||
926 | |||
927 | struct host_cmd_ds_11n_addba_rsp { | ||
928 | u8 add_rsp_result; | ||
929 | u8 peer_mac_addr[ETH_ALEN]; | ||
930 | u8 dialog_token; | ||
931 | __le16 status_code; | ||
932 | __le16 block_ack_param_set; | ||
933 | __le16 block_ack_tmo; | ||
934 | __le16 ssn; | ||
935 | } __packed; | ||
936 | |||
937 | struct host_cmd_ds_11n_delba { | ||
938 | u8 del_result; | ||
939 | u8 peer_mac_addr[ETH_ALEN]; | ||
940 | __le16 del_ba_param_set; | ||
941 | __le16 reason_code; | ||
942 | u8 reserved; | ||
943 | } __packed; | ||
944 | |||
945 | struct host_cmd_ds_11n_batimeout { | ||
946 | u8 tid; | ||
947 | u8 peer_mac_addr[ETH_ALEN]; | ||
948 | u8 origninator; | ||
949 | } __packed; | ||
950 | |||
951 | struct host_cmd_ds_11n_cfg { | ||
952 | __le16 action; | ||
953 | __le16 ht_tx_cap; | ||
954 | __le16 ht_tx_info; | ||
955 | } __packed; | ||
956 | |||
957 | struct host_cmd_ds_txbuf_cfg { | ||
958 | __le16 action; | ||
959 | __le16 buff_size; | ||
960 | __le16 mp_end_port; /* SDIO only, reserved for other interfacces */ | ||
961 | __le16 reserved3; | ||
962 | } __packed; | ||
963 | |||
964 | struct host_cmd_ds_amsdu_aggr_ctrl { | ||
965 | __le16 action; | ||
966 | __le16 enable; | ||
967 | __le16 curr_buf_size; | ||
968 | } __packed; | ||
969 | |||
970 | struct mwifiex_ie_types_wmm_param_set { | ||
971 | struct mwifiex_ie_types_header header; | ||
972 | u8 wmm_ie[1]; | ||
973 | }; | ||
974 | |||
975 | struct mwifiex_ie_types_wmm_queue_status { | ||
976 | struct mwifiex_ie_types_header header; | ||
977 | u8 queue_index; | ||
978 | u8 disabled; | ||
979 | u16 medium_time; | ||
980 | u8 flow_required; | ||
981 | u8 flow_created; | ||
982 | u32 reserved; | ||
983 | }; | ||
984 | |||
985 | struct ieee_types_vendor_header { | ||
986 | u8 element_id; | ||
987 | u8 len; | ||
988 | u8 oui[3]; | ||
989 | u8 oui_type; | ||
990 | u8 oui_subtype; | ||
991 | u8 version; | ||
992 | } __packed; | ||
993 | |||
994 | struct ieee_types_wmm_ac_parameters { | ||
995 | u8 aci_aifsn_bitmap; | ||
996 | u8 ecw_bitmap; | ||
997 | __le16 tx_op_limit; | ||
998 | } __packed; | ||
999 | |||
1000 | struct ieee_types_wmm_parameter { | ||
1001 | /* | ||
1002 | * WMM Parameter IE - Vendor Specific Header: | ||
1003 | * element_id [221/0xdd] | ||
1004 | * Len [24] | ||
1005 | * Oui [00:50:f2] | ||
1006 | * OuiType [2] | ||
1007 | * OuiSubType [1] | ||
1008 | * Version [1] | ||
1009 | */ | ||
1010 | struct ieee_types_vendor_header vend_hdr; | ||
1011 | u8 qos_info_bitmap; | ||
1012 | u8 reserved; | ||
1013 | struct ieee_types_wmm_ac_parameters ac_params[IEEE80211_MAX_QUEUES]; | ||
1014 | } __packed; | ||
1015 | |||
1016 | struct ieee_types_wmm_info { | ||
1017 | |||
1018 | /* | ||
1019 | * WMM Info IE - Vendor Specific Header: | ||
1020 | * element_id [221/0xdd] | ||
1021 | * Len [7] | ||
1022 | * Oui [00:50:f2] | ||
1023 | * OuiType [2] | ||
1024 | * OuiSubType [0] | ||
1025 | * Version [1] | ||
1026 | */ | ||
1027 | struct ieee_types_vendor_header vend_hdr; | ||
1028 | |||
1029 | u8 qos_info_bitmap; | ||
1030 | } __packed; | ||
1031 | |||
1032 | struct host_cmd_ds_wmm_get_status { | ||
1033 | u8 queue_status_tlv[sizeof(struct mwifiex_ie_types_wmm_queue_status) * | ||
1034 | IEEE80211_MAX_QUEUES]; | ||
1035 | u8 wmm_param_tlv[sizeof(struct ieee_types_wmm_parameter) + 2]; | ||
1036 | } __packed; | ||
1037 | |||
1038 | struct mwifiex_wmm_ac_status { | ||
1039 | u8 disabled; | ||
1040 | u8 flow_required; | ||
1041 | u8 flow_created; | ||
1042 | }; | ||
1043 | |||
1044 | struct mwifiex_ie_types_htcap { | ||
1045 | struct mwifiex_ie_types_header header; | ||
1046 | struct ieee80211_ht_cap ht_cap; | ||
1047 | } __packed; | ||
1048 | |||
1049 | struct mwifiex_ie_types_htinfo { | ||
1050 | struct mwifiex_ie_types_header header; | ||
1051 | struct ieee80211_ht_info ht_info; | ||
1052 | } __packed; | ||
1053 | |||
1054 | struct mwifiex_ie_types_2040bssco { | ||
1055 | struct mwifiex_ie_types_header header; | ||
1056 | u8 bss_co_2040; | ||
1057 | } __packed; | ||
1058 | |||
1059 | struct mwifiex_ie_types_extcap { | ||
1060 | struct mwifiex_ie_types_header header; | ||
1061 | u8 ext_cap; | ||
1062 | } __packed; | ||
1063 | |||
1064 | struct host_cmd_ds_mac_reg_access { | ||
1065 | __le16 action; | ||
1066 | __le16 offset; | ||
1067 | __le32 value; | ||
1068 | } __packed; | ||
1069 | |||
1070 | struct host_cmd_ds_bbp_reg_access { | ||
1071 | __le16 action; | ||
1072 | __le16 offset; | ||
1073 | u8 value; | ||
1074 | u8 reserved[3]; | ||
1075 | } __packed; | ||
1076 | |||
1077 | struct host_cmd_ds_rf_reg_access { | ||
1078 | __le16 action; | ||
1079 | __le16 offset; | ||
1080 | u8 value; | ||
1081 | u8 reserved[3]; | ||
1082 | } __packed; | ||
1083 | |||
1084 | struct host_cmd_ds_pmic_reg_access { | ||
1085 | __le16 action; | ||
1086 | __le16 offset; | ||
1087 | u8 value; | ||
1088 | u8 reserved[3]; | ||
1089 | } __packed; | ||
1090 | |||
1091 | struct host_cmd_ds_802_11_eeprom_access { | ||
1092 | __le16 action; | ||
1093 | |||
1094 | __le16 offset; | ||
1095 | __le16 byte_count; | ||
1096 | u8 value; | ||
1097 | } __packed; | ||
1098 | |||
1099 | struct host_cmd_ds_802_11_rf_channel { | ||
1100 | __le16 action; | ||
1101 | __le16 current_channel; | ||
1102 | __le16 rf_type; | ||
1103 | __le16 reserved; | ||
1104 | u8 reserved_1[32]; | ||
1105 | } __packed; | ||
1106 | |||
1107 | struct host_cmd_ds_version_ext { | ||
1108 | u8 version_str_sel; | ||
1109 | char version_str[128]; | ||
1110 | } __packed; | ||
1111 | |||
1112 | struct host_cmd_ds_802_11_ibss_status { | ||
1113 | __le16 action; | ||
1114 | __le16 enable; | ||
1115 | u8 bssid[ETH_ALEN]; | ||
1116 | __le16 beacon_interval; | ||
1117 | __le16 atim_window; | ||
1118 | __le16 use_g_rate_protect; | ||
1119 | } __packed; | ||
1120 | |||
1121 | #define CONNECTION_TYPE_INFRA 0 | ||
1122 | #define CONNECTION_TYPE_ADHOC 1 | ||
1123 | |||
1124 | struct host_cmd_ds_set_bss_mode { | ||
1125 | u8 con_type; | ||
1126 | } __packed; | ||
1127 | |||
1128 | struct host_cmd_ds_command { | ||
1129 | __le16 command; | ||
1130 | __le16 size; | ||
1131 | __le16 seq_num; | ||
1132 | __le16 result; | ||
1133 | union { | ||
1134 | struct host_cmd_ds_get_hw_spec hw_spec; | ||
1135 | struct host_cmd_ds_mac_control mac_ctrl; | ||
1136 | struct host_cmd_ds_802_11_mac_address mac_addr; | ||
1137 | struct host_cmd_ds_mac_multicast_adr mc_addr; | ||
1138 | struct host_cmd_ds_802_11_get_log get_log; | ||
1139 | struct host_cmd_ds_802_11_rssi_info rssi_info; | ||
1140 | struct host_cmd_ds_802_11_rssi_info_rsp rssi_info_rsp; | ||
1141 | struct host_cmd_ds_802_11_snmp_mib smib; | ||
1142 | struct host_cmd_ds_802_11_rf_channel rf_channel; | ||
1143 | struct host_cmd_ds_tx_rate_query tx_rate; | ||
1144 | struct host_cmd_ds_tx_rate_cfg tx_rate_cfg; | ||
1145 | struct host_cmd_ds_txpwr_cfg txp_cfg; | ||
1146 | struct host_cmd_ds_802_11_ps_mode_enh psmode_enh; | ||
1147 | struct host_cmd_ds_802_11_hs_cfg_enh opt_hs_cfg; | ||
1148 | struct host_cmd_ds_802_11_scan scan; | ||
1149 | struct host_cmd_ds_802_11_scan_rsp scan_resp; | ||
1150 | struct host_cmd_ds_802_11_bg_scan_query bg_scan_query; | ||
1151 | struct host_cmd_ds_802_11_bg_scan_query_rsp bg_scan_query_resp; | ||
1152 | struct host_cmd_ds_802_11_associate associate; | ||
1153 | struct host_cmd_ds_802_11_associate_rsp associate_rsp; | ||
1154 | struct host_cmd_ds_802_11_deauthenticate deauth; | ||
1155 | struct host_cmd_ds_802_11_ad_hoc_start adhoc_start; | ||
1156 | struct host_cmd_ds_802_11_ad_hoc_result adhoc_result; | ||
1157 | struct host_cmd_ds_802_11_ad_hoc_join adhoc_join; | ||
1158 | struct host_cmd_ds_802_11d_domain_info domain_info; | ||
1159 | struct host_cmd_ds_802_11d_domain_info_rsp domain_info_resp; | ||
1160 | struct host_cmd_ds_11n_addba_req add_ba_req; | ||
1161 | struct host_cmd_ds_11n_addba_rsp add_ba_rsp; | ||
1162 | struct host_cmd_ds_11n_delba del_ba; | ||
1163 | struct host_cmd_ds_txbuf_cfg tx_buf; | ||
1164 | struct host_cmd_ds_amsdu_aggr_ctrl amsdu_aggr_ctrl; | ||
1165 | struct host_cmd_ds_11n_cfg htcfg; | ||
1166 | struct host_cmd_ds_wmm_get_status get_wmm_status; | ||
1167 | struct host_cmd_ds_802_11_key_material key_material; | ||
1168 | struct host_cmd_ds_version_ext verext; | ||
1169 | struct host_cmd_ds_802_11_ibss_status ibss_coalescing; | ||
1170 | struct host_cmd_ds_mac_reg_access mac_reg; | ||
1171 | struct host_cmd_ds_bbp_reg_access bbp_reg; | ||
1172 | struct host_cmd_ds_rf_reg_access rf_reg; | ||
1173 | struct host_cmd_ds_pmic_reg_access pmic_reg; | ||
1174 | struct host_cmd_ds_set_bss_mode bss_mode; | ||
1175 | struct host_cmd_ds_802_11_eeprom_access eeprom; | ||
1176 | } params; | ||
1177 | } __packed; | ||
1178 | |||
1179 | struct mwifiex_opt_sleep_confirm { | ||
1180 | __le16 command; | ||
1181 | __le16 size; | ||
1182 | __le16 seq_num; | ||
1183 | __le16 result; | ||
1184 | __le16 action; | ||
1185 | __le16 resp_ctrl; | ||
1186 | } __packed; | ||
1187 | #endif /* !_MWIFIEX_FW_H_ */ | ||