diff options
Diffstat (limited to 'drivers/net/wireless/iwmc3200wifi/commands.h')
-rw-r--r-- | drivers/net/wireless/iwmc3200wifi/commands.h | 509 |
1 files changed, 509 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwmc3200wifi/commands.h b/drivers/net/wireless/iwmc3200wifi/commands.h new file mode 100644 index 00000000000..6421689f5e8 --- /dev/null +++ b/drivers/net/wireless/iwmc3200wifi/commands.h | |||
@@ -0,0 +1,509 @@ | |||
1 | /* | ||
2 | * Intel Wireless Multicomm 3200 WiFi driver | ||
3 | * | ||
4 | * Copyright (C) 2009 Intel Corporation. All rights reserved. | ||
5 | * | ||
6 | * Redistribution and use in source and binary forms, with or without | ||
7 | * modification, are permitted provided that the following conditions | ||
8 | * are met: | ||
9 | * | ||
10 | * * Redistributions of source code must retain the above copyright | ||
11 | * notice, this list of conditions and the following disclaimer. | ||
12 | * * Redistributions in binary form must reproduce the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer in | ||
14 | * the documentation and/or other materials provided with the | ||
15 | * distribution. | ||
16 | * * Neither the name of Intel Corporation nor the names of its | ||
17 | * contributors may be used to endorse or promote products derived | ||
18 | * from this software without specific prior written permission. | ||
19 | * | ||
20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||
21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||
22 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||
23 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||
24 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
25 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||
26 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
27 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
28 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
29 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||
30 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
31 | * | ||
32 | * | ||
33 | * Intel Corporation <ilw@linux.intel.com> | ||
34 | * Samuel Ortiz <samuel.ortiz@intel.com> | ||
35 | * Zhu Yi <yi.zhu@intel.com> | ||
36 | * | ||
37 | */ | ||
38 | |||
39 | #ifndef __IWM_COMMANDS_H__ | ||
40 | #define __IWM_COMMANDS_H__ | ||
41 | |||
42 | #include <linux/ieee80211.h> | ||
43 | |||
44 | #define IWM_BARKER_REBOOT_NOTIFICATION 0xF | ||
45 | #define IWM_ACK_BARKER_NOTIFICATION 0x10 | ||
46 | |||
47 | /* UMAC commands */ | ||
48 | #define UMAC_RST_CTRL_FLG_LARC_CLK_EN 0x0001 | ||
49 | #define UMAC_RST_CTRL_FLG_LARC_RESET 0x0002 | ||
50 | #define UMAC_RST_CTRL_FLG_FUNC_RESET 0x0004 | ||
51 | #define UMAC_RST_CTRL_FLG_DEV_RESET 0x0008 | ||
52 | #define UMAC_RST_CTRL_FLG_WIFI_CORE_EN 0x0010 | ||
53 | #define UMAC_RST_CTRL_FLG_WIFI_LINK_EN 0x0040 | ||
54 | #define UMAC_RST_CTRL_FLG_WIFI_MLME_EN 0x0080 | ||
55 | #define UMAC_RST_CTRL_FLG_NVM_RELOAD 0x0100 | ||
56 | |||
57 | struct iwm_umac_cmd_reset { | ||
58 | __le32 flags; | ||
59 | } __packed; | ||
60 | |||
61 | #define UMAC_PARAM_TBL_ORD_FIX 0x0 | ||
62 | #define UMAC_PARAM_TBL_ORD_VAR 0x1 | ||
63 | #define UMAC_PARAM_TBL_CFG_FIX 0x2 | ||
64 | #define UMAC_PARAM_TBL_CFG_VAR 0x3 | ||
65 | #define UMAC_PARAM_TBL_BSS_TRK 0x4 | ||
66 | #define UMAC_PARAM_TBL_FA_CFG_FIX 0x5 | ||
67 | #define UMAC_PARAM_TBL_STA 0x6 | ||
68 | #define UMAC_PARAM_TBL_CHN 0x7 | ||
69 | #define UMAC_PARAM_TBL_STATISTICS 0x8 | ||
70 | |||
71 | /* fast access table */ | ||
72 | enum { | ||
73 | CFG_FRAG_THRESHOLD = 0, | ||
74 | CFG_FRAME_RETRY_LIMIT, | ||
75 | CFG_OS_QUEUE_UTIL_TH, | ||
76 | CFG_RX_FILTER, | ||
77 | /* <-- LAST --> */ | ||
78 | FAST_ACCESS_CFG_TBL_FIX_LAST | ||
79 | }; | ||
80 | |||
81 | /* fixed size table */ | ||
82 | enum { | ||
83 | CFG_POWER_INDEX = 0, | ||
84 | CFG_PM_LEGACY_RX_TIMEOUT, | ||
85 | CFG_PM_LEGACY_TX_TIMEOUT, | ||
86 | CFG_PM_CTRL_FLAGS, | ||
87 | CFG_PM_KEEP_ALIVE_IN_BEACONS, | ||
88 | CFG_BT_ON_THRESHOLD, | ||
89 | CFG_RTS_THRESHOLD, | ||
90 | CFG_CTS_TO_SELF, | ||
91 | CFG_COEX_MODE, | ||
92 | CFG_WIRELESS_MODE, | ||
93 | CFG_ASSOCIATION_TIMEOUT, | ||
94 | CFG_ROAM_TIMEOUT, | ||
95 | CFG_CAPABILITY_SUPPORTED_RATES, | ||
96 | CFG_SCAN_ALLOWED_UNASSOC_FLAGS, | ||
97 | CFG_SCAN_ALLOWED_MAIN_ASSOC_FLAGS, | ||
98 | CFG_SCAN_ALLOWED_PAN_ASSOC_FLAGS, | ||
99 | CFG_SCAN_INTERNAL_PERIODIC_ENABLED, | ||
100 | CFG_SCAN_IMM_INTERNAL_PERIODIC_SCAN_ON_INIT, | ||
101 | CFG_SCAN_DEFAULT_PERIODIC_FREQ_SEC, | ||
102 | CFG_SCAN_NUM_PASSIVE_CHAN_PER_PARTIAL_SCAN, | ||
103 | CFG_TLC_SUPPORTED_TX_HT_RATES, | ||
104 | CFG_TLC_SUPPORTED_TX_RATES, | ||
105 | CFG_TLC_SPATIAL_STREAM_SUPPORTED, | ||
106 | CFG_TLC_RETRY_PER_RATE, | ||
107 | CFG_TLC_RETRY_PER_HT_RATE, | ||
108 | CFG_TLC_FIXED_MCS, | ||
109 | CFG_TLC_CONTROL_FLAGS, | ||
110 | CFG_TLC_SR_MIN_FAIL, | ||
111 | CFG_TLC_SR_MIN_PASS, | ||
112 | CFG_TLC_HT_STAY_IN_COL_PASS_THRESH, | ||
113 | CFG_TLC_HT_STAY_IN_COL_FAIL_THRESH, | ||
114 | CFG_TLC_LEGACY_STAY_IN_COL_PASS_THRESH, | ||
115 | CFG_TLC_LEGACY_STAY_IN_COL_FAIL_THRESH, | ||
116 | CFG_TLC_HT_FLUSH_STATS_PACKETS, | ||
117 | CFG_TLC_LEGACY_FLUSH_STATS_PACKETS, | ||
118 | CFG_TLC_LEGACY_FLUSH_STATS_MS, | ||
119 | CFG_TLC_HT_FLUSH_STATS_MS, | ||
120 | CFG_TLC_STAY_IN_COL_TIME_OUT, | ||
121 | CFG_TLC_AGG_SHORT_LIM, | ||
122 | CFG_TLC_AGG_LONG_LIM, | ||
123 | CFG_TLC_HT_SR_NO_DECREASE, | ||
124 | CFG_TLC_LEGACY_SR_NO_DECREASE, | ||
125 | CFG_TLC_SR_FORCE_DECREASE, | ||
126 | CFG_TLC_SR_ALLOW_INCREASE, | ||
127 | CFG_TLC_AGG_SET_LONG, | ||
128 | CFG_TLC_AUTO_AGGREGATION, | ||
129 | CFG_TLC_AGG_THRESHOLD, | ||
130 | CFG_TLC_TID_LOAD_THRESHOLD, | ||
131 | CFG_TLC_BLOCK_ACK_TIMEOUT, | ||
132 | CFG_TLC_NO_BA_COUNTED_AS_ONE, | ||
133 | CFG_TLC_NUM_BA_STREAMS_ALLOWED, | ||
134 | CFG_TLC_NUM_BA_STREAMS_PRESENT, | ||
135 | CFG_TLC_RENEW_ADDBA_DELAY, | ||
136 | CFG_TLC_NUM_OF_MULTISEC_TO_COUN_LOAD, | ||
137 | CFG_TLC_IS_STABLE_IN_HT, | ||
138 | CFG_TLC_SR_SIC_1ST_FAIL, | ||
139 | CFG_TLC_SR_SIC_1ST_PASS, | ||
140 | CFG_TLC_SR_SIC_TOTAL_FAIL, | ||
141 | CFG_TLC_SR_SIC_TOTAL_PASS, | ||
142 | CFG_RLC_CHAIN_CTRL, | ||
143 | CFG_TRK_TABLE_OP_MODE, | ||
144 | CFG_TRK_TABLE_RSSI_THRESHOLD, | ||
145 | CFG_TX_PWR_TARGET, /* Used By xVT */ | ||
146 | CFG_TX_PWR_LIMIT_USR, | ||
147 | CFG_TX_PWR_LIMIT_BSS, /* 11d limit */ | ||
148 | CFG_TX_PWR_LIMIT_BSS_CONSTRAINT, /* 11h constraint */ | ||
149 | CFG_TX_PWR_MODE, | ||
150 | CFG_MLME_DBG_NOTIF_BLOCK, | ||
151 | CFG_BT_OFF_BECONS_INTERVALS, | ||
152 | CFG_BT_FRAG_DURATION, | ||
153 | CFG_ACTIVE_CHAINS, | ||
154 | CFG_CALIB_CTRL, | ||
155 | CFG_CAPABILITY_SUPPORTED_HT_RATES, | ||
156 | CFG_HT_MAC_PARAM_INFO, | ||
157 | CFG_MIMO_PS_MODE, | ||
158 | CFG_HT_DEFAULT_CAPABILIES_INFO, | ||
159 | CFG_LED_SC_RESOLUTION_FACTOR, | ||
160 | CFG_PTAM_ENERGY_CCK_DET_DEFAULT, | ||
161 | CFG_PTAM_CORR40_4_TH_ADD_MIN_MRC_DEFAULT, | ||
162 | CFG_PTAM_CORR40_4_TH_ADD_MIN_DEFAULT, | ||
163 | CFG_PTAM_CORR32_4_TH_ADD_MIN_MRC_DEFAULT, | ||
164 | CFG_PTAM_CORR32_4_TH_ADD_MIN_DEFAULT, | ||
165 | CFG_PTAM_CORR32_1_TH_ADD_MIN_MRC_DEFAULT, | ||
166 | CFG_PTAM_CORR32_1_TH_ADD_MIN_DEFAULT, | ||
167 | CFG_PTAM_ENERGY_CCK_DET_MIN_VAL, | ||
168 | CFG_PTAM_CORR40_4_TH_ADD_MIN_MRC_MIN_VAL, | ||
169 | CFG_PTAM_CORR40_4_TH_ADD_MIN_MIN_VAL, | ||
170 | CFG_PTAM_CORR32_4_TH_ADD_MIN_MRC_MIN_VAL, | ||
171 | CFG_PTAM_CORR32_4_TH_ADD_MIN_MIN_VAL, | ||
172 | CFG_PTAM_CORR32_1_TH_ADD_MIN_MRC_MIN_VAL, | ||
173 | CFG_PTAM_CORR32_1_TH_ADD_MIN_MIN_VAL, | ||
174 | CFG_PTAM_ENERGY_CCK_DET_MAX_VAL, | ||
175 | CFG_PTAM_CORR40_4_TH_ADD_MIN_MRC_MAX_VAL, | ||
176 | CFG_PTAM_CORR40_4_TH_ADD_MIN_MAX_VAL, | ||
177 | CFG_PTAM_CORR32_4_TH_ADD_MIN_MRC_MAX_VAL, | ||
178 | CFG_PTAM_CORR32_4_TH_ADD_MIN_MAX_VAL, | ||
179 | CFG_PTAM_CORR32_1_TH_ADD_MIN_MRC_MAX_VAL, | ||
180 | CFG_PTAM_CORR32_1_TH_ADD_MIN_MAX_VAL, | ||
181 | CFG_PTAM_ENERGY_CCK_DET_STEP_VAL, | ||
182 | CFG_PTAM_CORR40_4_TH_ADD_MIN_MRC_STEP_VAL, | ||
183 | CFG_PTAM_CORR40_4_TH_ADD_MIN_STEP_VAL, | ||
184 | CFG_PTAM_CORR32_4_TH_ADD_MIN_MRC_STEP_VAL, | ||
185 | CFG_PTAM_CORR32_4_TH_ADD_MIN_STEP_VAL, | ||
186 | CFG_PTAM_CORR32_1_TH_ADD_MIN_MRC_STEP_VAL, | ||
187 | CFG_PTAM_CORR32_1_TH_ADD_MIN_STEP_VAL, | ||
188 | CFG_PTAM_LINK_SENS_FA_OFDM_MAX, | ||
189 | CFG_PTAM_LINK_SENS_FA_OFDM_MIN, | ||
190 | CFG_PTAM_LINK_SENS_FA_CCK_MAX, | ||
191 | CFG_PTAM_LINK_SENS_FA_CCK_MIN, | ||
192 | CFG_PTAM_LINK_SENS_NRG_DIFF, | ||
193 | CFG_PTAM_LINK_SENS_NRG_MARGIN, | ||
194 | CFG_PTAM_LINK_SENS_MAX_NUMBER_OF_TIMES_IN_CCK_NO_FA, | ||
195 | CFG_PTAM_LINK_SENS_AUTO_CORR_MAX_TH_CCK, | ||
196 | CFG_AGG_MGG_TID_LOAD_ADDBA_THRESHOLD, | ||
197 | CFG_AGG_MGG_TID_LOAD_DELBA_THRESHOLD, | ||
198 | CFG_AGG_MGG_ADDBA_BUF_SIZE, | ||
199 | CFG_AGG_MGG_ADDBA_INACTIVE_TIMEOUT, | ||
200 | CFG_AGG_MGG_ADDBA_DEBUG_FLAGS, | ||
201 | CFG_SCAN_PERIODIC_RSSI_HIGH_THRESHOLD, | ||
202 | CFG_SCAN_PERIODIC_COEF_RSSI_HIGH, | ||
203 | CFG_11D_ENABLED, | ||
204 | CFG_11H_FEATURE_FLAGS, | ||
205 | |||
206 | /* <-- LAST --> */ | ||
207 | CFG_TBL_FIX_LAST | ||
208 | }; | ||
209 | |||
210 | /* variable size table */ | ||
211 | enum { | ||
212 | CFG_NET_ADDR = 0, | ||
213 | CFG_LED_PATTERN_TABLE, | ||
214 | |||
215 | /* <-- LAST --> */ | ||
216 | CFG_TBL_VAR_LAST | ||
217 | }; | ||
218 | |||
219 | struct iwm_umac_cmd_set_param_fix { | ||
220 | __le16 tbl; | ||
221 | __le16 key; | ||
222 | __le32 value; | ||
223 | } __packed; | ||
224 | |||
225 | struct iwm_umac_cmd_set_param_var { | ||
226 | __le16 tbl; | ||
227 | __le16 key; | ||
228 | __le16 len; | ||
229 | __le16 reserved; | ||
230 | } __packed; | ||
231 | |||
232 | struct iwm_umac_cmd_get_param { | ||
233 | __le16 tbl; | ||
234 | __le16 key; | ||
235 | } __packed; | ||
236 | |||
237 | struct iwm_umac_cmd_get_param_resp { | ||
238 | __le16 tbl; | ||
239 | __le16 key; | ||
240 | __le16 len; | ||
241 | __le16 reserved; | ||
242 | } __packed; | ||
243 | |||
244 | struct iwm_umac_cmd_eeprom_proxy_hdr { | ||
245 | __le32 type; | ||
246 | __le32 offset; | ||
247 | __le32 len; | ||
248 | } __packed; | ||
249 | |||
250 | struct iwm_umac_cmd_eeprom_proxy { | ||
251 | struct iwm_umac_cmd_eeprom_proxy_hdr hdr; | ||
252 | u8 buf[0]; | ||
253 | } __packed; | ||
254 | |||
255 | #define IWM_UMAC_CMD_EEPROM_TYPE_READ 0x1 | ||
256 | #define IWM_UMAC_CMD_EEPROM_TYPE_WRITE 0x2 | ||
257 | |||
258 | #define UMAC_CHANNEL_FLAG_VALID BIT(0) | ||
259 | #define UMAC_CHANNEL_FLAG_IBSS BIT(1) | ||
260 | #define UMAC_CHANNEL_FLAG_ACTIVE BIT(3) | ||
261 | #define UMAC_CHANNEL_FLAG_RADAR BIT(4) | ||
262 | #define UMAC_CHANNEL_FLAG_DFS BIT(7) | ||
263 | |||
264 | struct iwm_umac_channel_info { | ||
265 | u8 band; | ||
266 | u8 type; | ||
267 | u8 reserved; | ||
268 | u8 flags; | ||
269 | __le32 channels_mask; | ||
270 | } __packed; | ||
271 | |||
272 | struct iwm_umac_cmd_get_channel_list { | ||
273 | __le16 count; | ||
274 | __le16 reserved; | ||
275 | struct iwm_umac_channel_info ch[0]; | ||
276 | } __packed; | ||
277 | |||
278 | |||
279 | /* UMAC WiFi interface commands */ | ||
280 | |||
281 | /* Coexistence mode */ | ||
282 | #define COEX_MODE_SA 0x1 | ||
283 | #define COEX_MODE_XOR 0x2 | ||
284 | #define COEX_MODE_CM 0x3 | ||
285 | #define COEX_MODE_MAX 0x4 | ||
286 | |||
287 | /* Wireless mode */ | ||
288 | #define WIRELESS_MODE_11A 0x1 | ||
289 | #define WIRELESS_MODE_11G 0x2 | ||
290 | #define WIRELESS_MODE_11N 0x4 | ||
291 | |||
292 | #define UMAC_PROFILE_EX_IE_REQUIRED 0x1 | ||
293 | #define UMAC_PROFILE_QOS_ALLOWED 0x2 | ||
294 | |||
295 | /* Scanning */ | ||
296 | #define UMAC_WIFI_IF_PROBE_OPTION_MAX 10 | ||
297 | |||
298 | #define UMAC_WIFI_IF_SCAN_TYPE_USER 0x0 | ||
299 | #define UMAC_WIFI_IF_SCAN_TYPE_UMAC_RESERVED 0x1 | ||
300 | #define UMAC_WIFI_IF_SCAN_TYPE_HOST_PERIODIC 0x2 | ||
301 | #define UMAC_WIFI_IF_SCAN_TYPE_MAX 0x3 | ||
302 | |||
303 | struct iwm_umac_ssid { | ||
304 | u8 ssid_len; | ||
305 | u8 ssid[IEEE80211_MAX_SSID_LEN]; | ||
306 | u8 reserved[3]; | ||
307 | } __packed; | ||
308 | |||
309 | struct iwm_umac_cmd_scan_request { | ||
310 | struct iwm_umac_wifi_if hdr; | ||
311 | __le32 type; /* UMAC_WIFI_IF_SCAN_TYPE_* */ | ||
312 | u8 ssid_num; | ||
313 | u8 seq_num; | ||
314 | u8 timeout; /* In seconds */ | ||
315 | u8 reserved; | ||
316 | struct iwm_umac_ssid ssids[UMAC_WIFI_IF_PROBE_OPTION_MAX]; | ||
317 | } __packed; | ||
318 | |||
319 | #define UMAC_CIPHER_TYPE_NONE 0xFF | ||
320 | #define UMAC_CIPHER_TYPE_USE_GROUPCAST 0x00 | ||
321 | #define UMAC_CIPHER_TYPE_WEP_40 0x01 | ||
322 | #define UMAC_CIPHER_TYPE_WEP_104 0x02 | ||
323 | #define UMAC_CIPHER_TYPE_TKIP 0x04 | ||
324 | #define UMAC_CIPHER_TYPE_CCMP 0x08 | ||
325 | |||
326 | /* Supported authentication types - bitmap */ | ||
327 | #define UMAC_AUTH_TYPE_OPEN 0x00 | ||
328 | #define UMAC_AUTH_TYPE_LEGACY_PSK 0x01 | ||
329 | #define UMAC_AUTH_TYPE_8021X 0x02 | ||
330 | #define UMAC_AUTH_TYPE_RSNA_PSK 0x04 | ||
331 | |||
332 | /* iwm_umac_security.flag is WPA supported -- bits[0:0] */ | ||
333 | #define UMAC_SEC_FLG_WPA_ON_POS 0 | ||
334 | #define UMAC_SEC_FLG_WPA_ON_SEED 1 | ||
335 | #define UMAC_SEC_FLG_WPA_ON_MSK (UMAC_SEC_FLG_WPA_ON_SEED << \ | ||
336 | UMAC_SEC_FLG_WPA_ON_POS) | ||
337 | |||
338 | /* iwm_umac_security.flag is WPA2 supported -- bits [1:1] */ | ||
339 | #define UMAC_SEC_FLG_RSNA_ON_POS 1 | ||
340 | #define UMAC_SEC_FLG_RSNA_ON_SEED 1 | ||
341 | #define UMAC_SEC_FLG_RSNA_ON_MSK (UMAC_SEC_FLG_RSNA_ON_SEED << \ | ||
342 | UMAC_SEC_FLG_RSNA_ON_POS) | ||
343 | |||
344 | /* iwm_umac_security.flag is WSC mode on -- bits [2:2] */ | ||
345 | #define UMAC_SEC_FLG_WSC_ON_POS 2 | ||
346 | #define UMAC_SEC_FLG_WSC_ON_SEED 1 | ||
347 | #define UMAC_SEC_FLG_WSC_ON_MSK (UMAC_SEC_FLG_WSC_ON_SEED << \ | ||
348 | UMAC_SEC_FLG_WSC_ON_POS) | ||
349 | |||
350 | |||
351 | /* Legacy profile can use only WEP40 and WEP104 for encryption and | ||
352 | * OPEN or PSK for authentication */ | ||
353 | #define UMAC_SEC_FLG_LEGACY_PROFILE 0 | ||
354 | |||
355 | struct iwm_umac_security { | ||
356 | u8 auth_type; | ||
357 | u8 ucast_cipher; | ||
358 | u8 mcast_cipher; | ||
359 | u8 flags; | ||
360 | } __packed; | ||
361 | |||
362 | struct iwm_umac_ibss { | ||
363 | u8 beacon_interval; /* in millisecond */ | ||
364 | u8 atim; /* in millisecond */ | ||
365 | s8 join_only; | ||
366 | u8 band; | ||
367 | u8 channel; | ||
368 | u8 reserved[3]; | ||
369 | } __packed; | ||
370 | |||
371 | #define UMAC_MODE_BSS 0 | ||
372 | #define UMAC_MODE_IBSS 1 | ||
373 | |||
374 | #define UMAC_BSSID_MAX 4 | ||
375 | |||
376 | struct iwm_umac_profile { | ||
377 | struct iwm_umac_wifi_if hdr; | ||
378 | __le32 mode; | ||
379 | struct iwm_umac_ssid ssid; | ||
380 | u8 bssid[UMAC_BSSID_MAX][ETH_ALEN]; | ||
381 | struct iwm_umac_security sec; | ||
382 | struct iwm_umac_ibss ibss; | ||
383 | __le32 channel_2ghz; | ||
384 | __le32 channel_5ghz; | ||
385 | __le16 flags; | ||
386 | u8 wireless_mode; | ||
387 | u8 bss_num; | ||
388 | } __packed; | ||
389 | |||
390 | struct iwm_umac_invalidate_profile { | ||
391 | struct iwm_umac_wifi_if hdr; | ||
392 | u8 reason; | ||
393 | u8 reserved[3]; | ||
394 | } __packed; | ||
395 | |||
396 | /* Encryption key commands */ | ||
397 | struct iwm_umac_key_wep40 { | ||
398 | struct iwm_umac_wifi_if hdr; | ||
399 | struct iwm_umac_key_hdr key_hdr; | ||
400 | u8 key[WLAN_KEY_LEN_WEP40]; | ||
401 | u8 static_key; | ||
402 | u8 reserved[2]; | ||
403 | } __packed; | ||
404 | |||
405 | struct iwm_umac_key_wep104 { | ||
406 | struct iwm_umac_wifi_if hdr; | ||
407 | struct iwm_umac_key_hdr key_hdr; | ||
408 | u8 key[WLAN_KEY_LEN_WEP104]; | ||
409 | u8 static_key; | ||
410 | u8 reserved[2]; | ||
411 | } __packed; | ||
412 | |||
413 | #define IWM_TKIP_KEY_SIZE 16 | ||
414 | #define IWM_TKIP_MIC_SIZE 8 | ||
415 | struct iwm_umac_key_tkip { | ||
416 | struct iwm_umac_wifi_if hdr; | ||
417 | struct iwm_umac_key_hdr key_hdr; | ||
418 | u8 iv_count[6]; | ||
419 | u8 reserved[2]; | ||
420 | u8 tkip_key[IWM_TKIP_KEY_SIZE]; | ||
421 | u8 mic_rx_key[IWM_TKIP_MIC_SIZE]; | ||
422 | u8 mic_tx_key[IWM_TKIP_MIC_SIZE]; | ||
423 | } __packed; | ||
424 | |||
425 | struct iwm_umac_key_ccmp { | ||
426 | struct iwm_umac_wifi_if hdr; | ||
427 | struct iwm_umac_key_hdr key_hdr; | ||
428 | u8 iv_count[6]; | ||
429 | u8 reserved[2]; | ||
430 | u8 key[WLAN_KEY_LEN_CCMP]; | ||
431 | } __packed; | ||
432 | |||
433 | struct iwm_umac_key_remove { | ||
434 | struct iwm_umac_wifi_if hdr; | ||
435 | struct iwm_umac_key_hdr key_hdr; | ||
436 | } __packed; | ||
437 | |||
438 | struct iwm_umac_tx_key_id { | ||
439 | struct iwm_umac_wifi_if hdr; | ||
440 | u8 key_idx; | ||
441 | u8 reserved[3]; | ||
442 | } __packed; | ||
443 | |||
444 | struct iwm_umac_pwr_trigger { | ||
445 | struct iwm_umac_wifi_if hdr; | ||
446 | __le32 reseved; | ||
447 | } __packed; | ||
448 | |||
449 | struct iwm_umac_cmd_stats_req { | ||
450 | __le32 flags; | ||
451 | } __packed; | ||
452 | |||
453 | struct iwm_umac_cmd_stop_resume_tx { | ||
454 | u8 flags; | ||
455 | u8 sta_id; | ||
456 | __le16 stop_resume_tid_msk; | ||
457 | __le16 last_seq_num[IWM_UMAC_TID_NR]; | ||
458 | u16 reserved; | ||
459 | } __packed; | ||
460 | |||
461 | #define IWM_CMD_PMKID_ADD 1 | ||
462 | #define IWM_CMD_PMKID_DEL 2 | ||
463 | #define IWM_CMD_PMKID_FLUSH 3 | ||
464 | |||
465 | struct iwm_umac_pmkid_update { | ||
466 | struct iwm_umac_wifi_if hdr; | ||
467 | __le32 command; | ||
468 | u8 bssid[ETH_ALEN]; | ||
469 | __le16 reserved; | ||
470 | u8 pmkid[WLAN_PMKID_LEN]; | ||
471 | } __packed; | ||
472 | |||
473 | /* LMAC commands */ | ||
474 | int iwm_read_mac(struct iwm_priv *iwm, u8 *mac); | ||
475 | int iwm_send_prio_table(struct iwm_priv *iwm); | ||
476 | int iwm_send_init_calib_cfg(struct iwm_priv *iwm, u8 calib_requested); | ||
477 | int iwm_send_periodic_calib_cfg(struct iwm_priv *iwm, u8 calib_requested); | ||
478 | int iwm_send_calib_results(struct iwm_priv *iwm); | ||
479 | int iwm_store_rxiq_calib_result(struct iwm_priv *iwm); | ||
480 | int iwm_send_ct_kill_cfg(struct iwm_priv *iwm, u8 entry, u8 exit); | ||
481 | |||
482 | /* UMAC commands */ | ||
483 | int iwm_send_wifi_if_cmd(struct iwm_priv *iwm, void *payload, u16 payload_size, | ||
484 | bool resp); | ||
485 | int iwm_send_umac_reset(struct iwm_priv *iwm, __le32 reset_flags, bool resp); | ||
486 | int iwm_umac_set_config_fix(struct iwm_priv *iwm, u16 tbl, u16 key, u32 value); | ||
487 | int iwm_umac_set_config_var(struct iwm_priv *iwm, u16 key, | ||
488 | void *payload, u16 payload_size); | ||
489 | int iwm_send_umac_config(struct iwm_priv *iwm, __le32 reset_flags); | ||
490 | int iwm_send_mlme_profile(struct iwm_priv *iwm); | ||
491 | int __iwm_invalidate_mlme_profile(struct iwm_priv *iwm); | ||
492 | int iwm_invalidate_mlme_profile(struct iwm_priv *iwm); | ||
493 | int iwm_send_packet(struct iwm_priv *iwm, struct sk_buff *skb, int pool_id); | ||
494 | int iwm_set_tx_key(struct iwm_priv *iwm, u8 key_idx); | ||
495 | int iwm_set_key(struct iwm_priv *iwm, bool remove, struct iwm_key *key); | ||
496 | int iwm_tx_power_trigger(struct iwm_priv *iwm); | ||
497 | int iwm_send_umac_stats_req(struct iwm_priv *iwm, u32 flags); | ||
498 | int iwm_send_umac_channel_list(struct iwm_priv *iwm); | ||
499 | int iwm_scan_ssids(struct iwm_priv *iwm, struct cfg80211_ssid *ssids, | ||
500 | int ssid_num); | ||
501 | int iwm_scan_one_ssid(struct iwm_priv *iwm, u8 *ssid, int ssid_len); | ||
502 | int iwm_send_umac_stop_resume_tx(struct iwm_priv *iwm, | ||
503 | struct iwm_umac_notif_stop_resume_tx *ntf); | ||
504 | int iwm_send_pmkid_update(struct iwm_priv *iwm, | ||
505 | struct cfg80211_pmksa *pmksa, u32 command); | ||
506 | |||
507 | /* UDMA commands */ | ||
508 | int iwm_target_reset(struct iwm_priv *iwm); | ||
509 | #endif | ||