Commit | Line | Data |
---|---|---|
d3c0b633 AS |
1 | /* |
2 | * Copyright (c) 2012 Broadcom Corporation | |
3 | * | |
4 | * Permission to use, copy, modify, and/or distribute this software for any | |
5 | * purpose with or without fee is hereby granted, provided that the above | |
6 | * copyright notice and this permission notice appear in all copies. | |
7 | * | |
8 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
9 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
10 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY | |
11 | * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
12 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION | |
13 | * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |
14 | * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
15 | */ | |
16 | ||
17 | ||
18 | #ifndef FWIL_TYPES_H_ | |
19 | #define FWIL_TYPES_H_ | |
20 | ||
21 | #include <linux/if_ether.h> | |
22 | ||
18e2f61d HM |
23 | |
24 | #define BRCMF_FIL_ACTION_FRAME_SIZE 1800 | |
25 | ||
b3657453 HM |
26 | /* ARP Offload feature flags for arp_ol iovar */ |
27 | #define BRCMF_ARP_OL_AGENT 0x00000001 | |
28 | #define BRCMF_ARP_OL_SNOOP 0x00000002 | |
29 | #define BRCMF_ARP_OL_HOST_AUTO_REPLY 0x00000004 | |
30 | #define BRCMF_ARP_OL_PEER_AUTO_REPLY 0x00000008 | |
31 | ||
6f5838a4 AS |
32 | #define BRCMF_BSS_INFO_VERSION 109 /* curr ver of brcmf_bss_info_le struct */ |
33 | #define BRCMF_BSS_RSSI_ON_CHANNEL 0x0002 | |
34 | ||
1f0dc59a AS |
35 | #define BRCMF_STA_WME 0x00000002 /* WMM association */ |
36 | #define BRCMF_STA_AUTHE 0x00000008 /* Authenticated */ | |
37 | #define BRCMF_STA_ASSOC 0x00000010 /* Associated */ | |
38 | #define BRCMF_STA_AUTHO 0x00000020 /* Authorized */ | |
39 | #define BRCMF_STA_SCBSTATS 0x00004000 /* Per STA debug stats */ | |
6f5838a4 AS |
40 | |
41 | /* size of brcmf_scan_params not including variable length array */ | |
42 | #define BRCMF_SCAN_PARAMS_FIXED_SIZE 64 | |
43 | ||
44 | /* masks for channel and ssid count */ | |
45 | #define BRCMF_SCAN_PARAMS_COUNT_MASK 0x0000ffff | |
46 | #define BRCMF_SCAN_PARAMS_NSSID_SHIFT 16 | |
47 | ||
48 | /* primary (ie tx) key */ | |
49 | #define BRCMF_PRIMARY_KEY (1 << 1) | |
50 | #define DOT11_BSSTYPE_ANY 2 | |
51 | #define BRCMF_ESCAN_REQ_VERSION 1 | |
52 | ||
53 | #define BRCMF_MAXRATES_IN_SET 16 /* max # of rates in rateset */ | |
18e2f61d | 54 | |
d2353679 DK |
55 | /* OBSS Coex Auto/On/Off */ |
56 | #define BRCMF_OBSS_COEX_AUTO (-1) | |
57 | #define BRCMF_OBSS_COEX_OFF 0 | |
58 | #define BRCMF_OBSS_COEX_ON 1 | |
59 | ||
4eb3af7c HM |
60 | /* WOWL bits */ |
61 | /* Wakeup on Magic packet: */ | |
b9a82f89 | 62 | #define BRCMF_WOWL_MAGIC (1 << 0) |
4eb3af7c | 63 | /* Wakeup on Netpattern */ |
b9a82f89 | 64 | #define BRCMF_WOWL_NET (1 << 1) |
4eb3af7c | 65 | /* Wakeup on loss-of-link due to Disassoc/Deauth: */ |
b9a82f89 | 66 | #define BRCMF_WOWL_DIS (1 << 2) |
4eb3af7c | 67 | /* Wakeup on retrograde TSF: */ |
b9a82f89 | 68 | #define BRCMF_WOWL_RETR (1 << 3) |
4eb3af7c | 69 | /* Wakeup on loss of beacon: */ |
b9a82f89 | 70 | #define BRCMF_WOWL_BCN (1 << 4) |
4eb3af7c | 71 | /* Wakeup after test: */ |
b9a82f89 | 72 | #define BRCMF_WOWL_TST (1 << 5) |
4eb3af7c | 73 | /* Wakeup after PTK refresh: */ |
b9a82f89 | 74 | #define BRCMF_WOWL_M1 (1 << 6) |
4eb3af7c | 75 | /* Wakeup after receipt of EAP-Identity Req: */ |
b9a82f89 | 76 | #define BRCMF_WOWL_EAPID (1 << 7) |
4eb3af7c | 77 | /* Wakeind via PME(0) or GPIO(1): */ |
b9a82f89 | 78 | #define BRCMF_WOWL_PME_GPIO (1 << 8) |
4eb3af7c | 79 | /* need tkip phase 1 key to be updated by the driver: */ |
b9a82f89 | 80 | #define BRCMF_WOWL_NEEDTKIP1 (1 << 9) |
4eb3af7c | 81 | /* enable wakeup if GTK fails: */ |
b9a82f89 | 82 | #define BRCMF_WOWL_GTK_FAILURE (1 << 10) |
4eb3af7c | 83 | /* support extended magic packets: */ |
b9a82f89 | 84 | #define BRCMF_WOWL_EXTMAGPAT (1 << 11) |
4eb3af7c | 85 | /* support ARP/NS/keepalive offloading: */ |
b9a82f89 | 86 | #define BRCMF_WOWL_ARPOFFLOAD (1 << 12) |
4eb3af7c | 87 | /* read protocol version for EAPOL frames: */ |
b9a82f89 | 88 | #define BRCMF_WOWL_WPA2 (1 << 13) |
4eb3af7c | 89 | /* If the bit is set, use key rotaton: */ |
b9a82f89 | 90 | #define BRCMF_WOWL_KEYROT (1 << 14) |
4eb3af7c | 91 | /* If the bit is set, frm received was bcast frame: */ |
b9a82f89 | 92 | #define BRCMF_WOWL_BCAST (1 << 15) |
4eb3af7c | 93 | /* If the bit is set, scan offload is enabled: */ |
b9a82f89 | 94 | #define BRCMF_WOWL_SCANOL (1 << 16) |
4eb3af7c | 95 | /* Wakeup on tcpkeep alive timeout: */ |
b9a82f89 | 96 | #define BRCMF_WOWL_TCPKEEP_TIME (1 << 17) |
4eb3af7c | 97 | /* Wakeup on mDNS Conflict Resolution: */ |
b9a82f89 | 98 | #define BRCMF_WOWL_MDNS_CONFLICT (1 << 18) |
4eb3af7c | 99 | /* Wakeup on mDNS Service Connect: */ |
b9a82f89 | 100 | #define BRCMF_WOWL_MDNS_SERVICE (1 << 19) |
4eb3af7c | 101 | /* tcp keepalive got data: */ |
b9a82f89 | 102 | #define BRCMF_WOWL_TCPKEEP_DATA (1 << 20) |
4eb3af7c | 103 | /* Firmware died in wowl mode: */ |
b9a82f89 | 104 | #define BRCMF_WOWL_FW_HALT (1 << 21) |
4eb3af7c | 105 | /* Enable detection of radio button changes: */ |
b9a82f89 | 106 | #define BRCMF_WOWL_ENAB_HWRADIO (1 << 22) |
4eb3af7c | 107 | /* Offloads detected MIC failure(s): */ |
b9a82f89 | 108 | #define BRCMF_WOWL_MIC_FAIL (1 << 23) |
4eb3af7c | 109 | /* Wakeup in Unassociated state (Net/Magic Pattern): */ |
b9a82f89 | 110 | #define BRCMF_WOWL_UNASSOC (1 << 24) |
4eb3af7c | 111 | /* Wakeup if received matched secured pattern: */ |
b9a82f89 | 112 | #define BRCMF_WOWL_SECURE (1 << 25) |
4eb3af7c | 113 | /* Link Down indication in WoWL mode: */ |
b9a82f89 HM |
114 | #define BRCMF_WOWL_LINKDOWN (1 << 31) |
115 | ||
116 | #define BRCMF_WOWL_MAXPATTERNS 8 | |
117 | #define BRCMF_WOWL_MAXPATTERNSIZE 128 | |
118 | ||
63db1a49 | 119 | #define BRCMF_COUNTRY_BUF_SZ 4 |
1f0dc59a | 120 | #define BRCMF_ANT_MAX 4 |
4eb3af7c | 121 | |
bf2a7e04 HM |
122 | #define BRCMF_MAX_ASSOCLIST 128 |
123 | ||
e09cc63d DK |
124 | /* join preference types for join_pref iovar */ |
125 | enum brcmf_join_pref_types { | |
126 | BRCMF_JOIN_PREF_RSSI = 1, | |
127 | BRCMF_JOIN_PREF_WPA, | |
128 | BRCMF_JOIN_PREF_BAND, | |
129 | BRCMF_JOIN_PREF_RSSI_DELTA, | |
130 | }; | |
131 | ||
d3c0b633 AS |
132 | enum brcmf_fil_p2p_if_types { |
133 | BRCMF_FIL_P2P_IF_CLIENT, | |
134 | BRCMF_FIL_P2P_IF_GO, | |
135 | BRCMF_FIL_P2P_IF_DYNBCN_GO, | |
136 | BRCMF_FIL_P2P_IF_DEV, | |
137 | }; | |
138 | ||
b9a82f89 HM |
139 | enum brcmf_wowl_pattern_type { |
140 | BRCMF_WOWL_PATTERN_TYPE_BITMAP = 0, | |
141 | BRCMF_WOWL_PATTERN_TYPE_ARP, | |
142 | BRCMF_WOWL_PATTERN_TYPE_NA | |
143 | }; | |
144 | ||
d3c0b633 AS |
145 | struct brcmf_fil_p2p_if_le { |
146 | u8 addr[ETH_ALEN]; | |
7ee2d926 | 147 | __le16 type; |
d3c0b633 AS |
148 | __le16 chspec; |
149 | }; | |
150 | ||
151 | struct brcmf_fil_chan_info_le { | |
152 | __le32 hw_channel; | |
153 | __le32 target_channel; | |
154 | __le32 scan_channel; | |
155 | }; | |
156 | ||
18e2f61d HM |
157 | struct brcmf_fil_action_frame_le { |
158 | u8 da[ETH_ALEN]; | |
159 | __le16 len; | |
160 | __le32 packet_id; | |
161 | u8 data[BRCMF_FIL_ACTION_FRAME_SIZE]; | |
162 | }; | |
163 | ||
164 | struct brcmf_fil_af_params_le { | |
165 | __le32 channel; | |
166 | __le32 dwell_time; | |
167 | u8 bssid[ETH_ALEN]; | |
168 | u8 pad[2]; | |
169 | struct brcmf_fil_action_frame_le action_frame; | |
170 | }; | |
171 | ||
a0f07959 | 172 | struct brcmf_fil_bss_enable_le { |
37a869ec | 173 | __le32 bsscfgidx; |
a0f07959 HM |
174 | __le32 enable; |
175 | }; | |
176 | ||
d2353679 DK |
177 | struct brcmf_fil_bwcap_le { |
178 | __le32 band; | |
179 | __le32 bw_cap; | |
180 | }; | |
181 | ||
89c2f382 AS |
182 | /** |
183 | * struct tdls_iovar - common structure for tdls iovars. | |
184 | * | |
185 | * @ea: ether address of peer station. | |
186 | * @mode: mode value depending on specific tdls iovar. | |
187 | * @chanspec: channel specification. | |
188 | * @pad: unused (for future use). | |
189 | */ | |
190 | struct brcmf_tdls_iovar_le { | |
191 | u8 ea[ETH_ALEN]; /* Station address */ | |
192 | u8 mode; /* mode: depends on iovar */ | |
193 | __le16 chanspec; | |
194 | __le32 pad; /* future */ | |
195 | }; | |
196 | ||
197 | enum brcmf_tdls_manual_ep_ops { | |
198 | BRCMF_TDLS_MANUAL_EP_CREATE = 1, | |
199 | BRCMF_TDLS_MANUAL_EP_DELETE = 3, | |
200 | BRCMF_TDLS_MANUAL_EP_DISCOVERY = 6 | |
201 | }; | |
202 | ||
6f5838a4 AS |
203 | /* Pattern matching filter. Specifies an offset within received packets to |
204 | * start matching, the pattern to match, the size of the pattern, and a bitmask | |
205 | * that indicates which bits within the pattern should be matched. | |
206 | */ | |
207 | struct brcmf_pkt_filter_pattern_le { | |
208 | /* | |
209 | * Offset within received packet to start pattern matching. | |
210 | * Offset '0' is the first byte of the ethernet header. | |
211 | */ | |
212 | __le32 offset; | |
213 | /* Size of the pattern. Bitmask must be the same size.*/ | |
214 | __le32 size_bytes; | |
215 | /* | |
216 | * Variable length mask and pattern data. mask starts at offset 0. | |
217 | * Pattern immediately follows mask. | |
218 | */ | |
219 | u8 mask_and_pattern[1]; | |
220 | }; | |
221 | ||
222 | /* IOVAR "pkt_filter_add" parameter. Used to install packet filters. */ | |
223 | struct brcmf_pkt_filter_le { | |
224 | __le32 id; /* Unique filter id, specified by app. */ | |
225 | __le32 type; /* Filter type (WL_PKT_FILTER_TYPE_xxx). */ | |
226 | __le32 negate_match; /* Negate the result of filter matches */ | |
227 | union { /* Filter definitions */ | |
228 | struct brcmf_pkt_filter_pattern_le pattern; /* Filter pattern */ | |
229 | } u; | |
230 | }; | |
231 | ||
232 | /* IOVAR "pkt_filter_enable" parameter. */ | |
233 | struct brcmf_pkt_filter_enable_le { | |
234 | __le32 id; /* Unique filter id */ | |
235 | __le32 enable; /* Enable/disable bool */ | |
236 | }; | |
237 | ||
238 | /* BSS info structure | |
239 | * Applications MUST CHECK ie_offset field and length field to access IEs and | |
240 | * next bss_info structure in a vector (in struct brcmf_scan_results) | |
241 | */ | |
242 | struct brcmf_bss_info_le { | |
243 | __le32 version; /* version field */ | |
244 | __le32 length; /* byte length of data in this record, | |
245 | * starting at version and including IEs | |
246 | */ | |
247 | u8 BSSID[ETH_ALEN]; | |
248 | __le16 beacon_period; /* units are Kusec */ | |
249 | __le16 capability; /* Capability information */ | |
250 | u8 SSID_len; | |
251 | u8 SSID[32]; | |
252 | struct { | |
253 | __le32 count; /* # rates in this set */ | |
254 | u8 rates[16]; /* rates in 500kbps units w/hi bit set if basic */ | |
255 | } rateset; /* supported rates */ | |
256 | __le16 chanspec; /* chanspec for bss */ | |
257 | __le16 atim_window; /* units are Kusec */ | |
258 | u8 dtim_period; /* DTIM period */ | |
259 | __le16 RSSI; /* receive signal strength (in dBm) */ | |
260 | s8 phy_noise; /* noise (in dBm) */ | |
261 | ||
262 | u8 n_cap; /* BSS is 802.11N Capable */ | |
263 | /* 802.11N BSS Capabilities (based on HT_CAP_*): */ | |
264 | __le32 nbss_cap; | |
265 | u8 ctl_ch; /* 802.11N BSS control channel number */ | |
266 | __le32 reserved32[1]; /* Reserved for expansion of BSS properties */ | |
267 | u8 flags; /* flags */ | |
268 | u8 reserved[3]; /* Reserved for expansion of BSS properties */ | |
269 | u8 basic_mcs[MCSSET_LEN]; /* 802.11N BSS required MCS set */ | |
270 | ||
271 | __le16 ie_offset; /* offset at which IEs start, from beginning */ | |
272 | __le32 ie_length; /* byte length of Information Elements */ | |
273 | __le16 SNR; /* average SNR of during frame reception */ | |
274 | /* Add new fields here */ | |
275 | /* variable length Information Elements */ | |
276 | }; | |
277 | ||
278 | struct brcm_rateset_le { | |
279 | /* # rates in this set */ | |
280 | __le32 count; | |
281 | /* rates in 500kbps units w/hi bit set if basic */ | |
282 | u8 rates[BRCMF_MAXRATES_IN_SET]; | |
283 | }; | |
284 | ||
285 | struct brcmf_ssid { | |
286 | u32 SSID_len; | |
287 | unsigned char SSID[32]; | |
288 | }; | |
289 | ||
290 | struct brcmf_ssid_le { | |
291 | __le32 SSID_len; | |
292 | unsigned char SSID[32]; | |
293 | }; | |
294 | ||
295 | struct brcmf_scan_params_le { | |
296 | struct brcmf_ssid_le ssid_le; /* default: {0, ""} */ | |
297 | u8 bssid[ETH_ALEN]; /* default: bcast */ | |
298 | s8 bss_type; /* default: any, | |
299 | * DOT11_BSSTYPE_ANY/INFRASTRUCTURE/INDEPENDENT | |
300 | */ | |
301 | u8 scan_type; /* flags, 0 use default */ | |
302 | __le32 nprobes; /* -1 use default, number of probes per channel */ | |
303 | __le32 active_time; /* -1 use default, dwell time per channel for | |
304 | * active scanning | |
305 | */ | |
306 | __le32 passive_time; /* -1 use default, dwell time per channel | |
307 | * for passive scanning | |
308 | */ | |
309 | __le32 home_time; /* -1 use default, dwell time for the | |
310 | * home channel between channel scans | |
311 | */ | |
312 | __le32 channel_num; /* count of channels and ssids that follow | |
313 | * | |
314 | * low half is count of channels in | |
315 | * channel_list, 0 means default (use all | |
316 | * available channels) | |
317 | * | |
318 | * high half is entries in struct brcmf_ssid | |
319 | * array that follows channel_list, aligned for | |
320 | * s32 (4 bytes) meaning an odd channel count | |
321 | * implies a 2-byte pad between end of | |
322 | * channel_list and first ssid | |
323 | * | |
324 | * if ssid count is zero, single ssid in the | |
325 | * fixed parameter portion is assumed, otherwise | |
326 | * ssid in the fixed portion is ignored | |
327 | */ | |
328 | __le16 channel_list[1]; /* list of chanspecs */ | |
329 | }; | |
330 | ||
331 | struct brcmf_scan_results { | |
332 | u32 buflen; | |
333 | u32 version; | |
334 | u32 count; | |
335 | struct brcmf_bss_info_le bss_info_le[]; | |
336 | }; | |
337 | ||
338 | struct brcmf_escan_params_le { | |
339 | __le32 version; | |
340 | __le16 action; | |
341 | __le16 sync_id; | |
342 | struct brcmf_scan_params_le params_le; | |
343 | }; | |
344 | ||
345 | struct brcmf_escan_result_le { | |
346 | __le32 buflen; | |
347 | __le32 version; | |
348 | __le16 sync_id; | |
349 | __le16 bss_count; | |
350 | struct brcmf_bss_info_le bss_info_le; | |
351 | }; | |
352 | ||
353 | #define WL_ESCAN_RESULTS_FIXED_SIZE (sizeof(struct brcmf_escan_result_le) - \ | |
354 | sizeof(struct brcmf_bss_info_le)) | |
355 | ||
356 | /* used for association with a specific BSSID and chanspec list */ | |
357 | struct brcmf_assoc_params_le { | |
358 | /* 00:00:00:00:00:00: broadcast scan */ | |
359 | u8 bssid[ETH_ALEN]; | |
360 | /* 0: all available channels, otherwise count of chanspecs in | |
361 | * chanspec_list */ | |
362 | __le32 chanspec_num; | |
363 | /* list of chanspecs */ | |
364 | __le16 chanspec_list[1]; | |
365 | }; | |
366 | ||
e09cc63d DK |
367 | /** |
368 | * struct join_pref params - parameters for preferred join selection. | |
369 | * | |
370 | * @type: preference type (see enum brcmf_join_pref_types). | |
371 | * @len: length of bytes following (currently always 2). | |
372 | * @rssi_gain: signal gain for selection (only when @type is RSSI_DELTA). | |
373 | * @band: band to which selection preference applies. | |
374 | * This is used if @type is BAND or RSSI_DELTA. | |
375 | */ | |
376 | struct brcmf_join_pref_params { | |
377 | u8 type; | |
378 | u8 len; | |
379 | u8 rssi_gain; | |
380 | u8 band; | |
381 | }; | |
382 | ||
6f5838a4 AS |
383 | /* used for join with or without a specific bssid and channel list */ |
384 | struct brcmf_join_params { | |
385 | struct brcmf_ssid_le ssid_le; | |
386 | struct brcmf_assoc_params_le params_le; | |
387 | }; | |
388 | ||
389 | /* scan params for extended join */ | |
390 | struct brcmf_join_scan_params_le { | |
391 | u8 scan_type; /* 0 use default, active or passive scan */ | |
392 | __le32 nprobes; /* -1 use default, nr of probes per channel */ | |
393 | __le32 active_time; /* -1 use default, dwell time per channel for | |
394 | * active scanning | |
395 | */ | |
396 | __le32 passive_time; /* -1 use default, dwell time per channel | |
397 | * for passive scanning | |
398 | */ | |
399 | __le32 home_time; /* -1 use default, dwell time for the home | |
400 | * channel between channel scans | |
401 | */ | |
402 | }; | |
403 | ||
404 | /* extended join params */ | |
405 | struct brcmf_ext_join_params_le { | |
406 | struct brcmf_ssid_le ssid_le; /* {0, ""}: wildcard scan */ | |
407 | struct brcmf_join_scan_params_le scan_le; | |
408 | struct brcmf_assoc_params_le assoc_le; | |
409 | }; | |
410 | ||
411 | struct brcmf_wsec_key { | |
412 | u32 index; /* key index */ | |
413 | u32 len; /* key length */ | |
414 | u8 data[WLAN_MAX_KEY_LEN]; /* key data */ | |
415 | u32 pad_1[18]; | |
416 | u32 algo; /* CRYPTO_ALGO_AES_CCM, CRYPTO_ALGO_WEP128, etc */ | |
417 | u32 flags; /* misc flags */ | |
418 | u32 pad_2[3]; | |
419 | u32 iv_initialized; /* has IV been initialized already? */ | |
420 | u32 pad_3; | |
421 | /* Rx IV */ | |
422 | struct { | |
423 | u32 hi; /* upper 32 bits of IV */ | |
424 | u16 lo; /* lower 16 bits of IV */ | |
425 | } rxiv; | |
426 | u32 pad_4[2]; | |
427 | u8 ea[ETH_ALEN]; /* per station */ | |
428 | }; | |
429 | ||
430 | /* | |
431 | * dongle requires same struct as above but with fields in little endian order | |
432 | */ | |
433 | struct brcmf_wsec_key_le { | |
434 | __le32 index; /* key index */ | |
435 | __le32 len; /* key length */ | |
436 | u8 data[WLAN_MAX_KEY_LEN]; /* key data */ | |
437 | __le32 pad_1[18]; | |
438 | __le32 algo; /* CRYPTO_ALGO_AES_CCM, CRYPTO_ALGO_WEP128, etc */ | |
439 | __le32 flags; /* misc flags */ | |
440 | __le32 pad_2[3]; | |
441 | __le32 iv_initialized; /* has IV been initialized already? */ | |
442 | __le32 pad_3; | |
443 | /* Rx IV */ | |
444 | struct { | |
445 | __le32 hi; /* upper 32 bits of IV */ | |
446 | __le16 lo; /* lower 16 bits of IV */ | |
447 | } rxiv; | |
448 | __le32 pad_4[2]; | |
449 | u8 ea[ETH_ALEN]; /* per station */ | |
450 | }; | |
451 | ||
452 | /* Used to get specific STA parameters */ | |
453 | struct brcmf_scb_val_le { | |
454 | __le32 val; | |
455 | u8 ea[ETH_ALEN]; | |
456 | }; | |
457 | ||
458 | /* channel encoding */ | |
459 | struct brcmf_channel_info_le { | |
460 | __le32 hw_channel; | |
461 | __le32 target_channel; | |
462 | __le32 scan_channel; | |
463 | }; | |
464 | ||
465 | struct brcmf_sta_info_le { | |
1f0dc59a AS |
466 | __le16 ver; /* version of this struct */ |
467 | __le16 len; /* length in bytes of this structure */ | |
468 | __le16 cap; /* sta's advertised capabilities */ | |
469 | __le32 flags; /* flags defined below */ | |
470 | __le32 idle; /* time since data pkt rx'd from sta */ | |
471 | u8 ea[ETH_ALEN]; /* Station address */ | |
472 | __le32 count; /* # rates in this set */ | |
473 | u8 rates[BRCMF_MAXRATES_IN_SET]; /* rates in 500kbps units */ | |
6f5838a4 | 474 | /* w/hi bit set if basic */ |
1f0dc59a AS |
475 | __le32 in; /* seconds elapsed since associated */ |
476 | __le32 listen_interval_inms; /* Min Listen interval in ms for STA */ | |
477 | __le32 tx_pkts; /* # of packets transmitted */ | |
478 | __le32 tx_failures; /* # of packets failed */ | |
479 | __le32 rx_ucast_pkts; /* # of unicast packets received */ | |
480 | __le32 rx_mcast_pkts; /* # of multicast packets received */ | |
481 | __le32 tx_rate; /* Rate of last successful tx frame */ | |
482 | __le32 rx_rate; /* Rate of last successful rx frame */ | |
483 | __le32 rx_decrypt_succeeds; /* # of packet decrypted successfully */ | |
484 | __le32 rx_decrypt_failures; /* # of packet decrypted failed */ | |
485 | __le32 tx_tot_pkts; /* # of tx pkts (ucast + mcast) */ | |
486 | __le32 rx_tot_pkts; /* # of data packets recvd (uni + mcast) */ | |
487 | __le32 tx_mcast_pkts; /* # of mcast pkts txed */ | |
488 | __le64 tx_tot_bytes; /* data bytes txed (ucast + mcast) */ | |
489 | __le64 rx_tot_bytes; /* data bytes recvd (ucast + mcast) */ | |
490 | __le64 tx_ucast_bytes; /* data bytes txed (ucast) */ | |
491 | __le64 tx_mcast_bytes; /* # data bytes txed (mcast) */ | |
492 | __le64 rx_ucast_bytes; /* data bytes recvd (ucast) */ | |
493 | __le64 rx_mcast_bytes; /* data bytes recvd (mcast) */ | |
494 | s8 rssi[BRCMF_ANT_MAX]; /* per antenna rssi */ | |
495 | s8 nf[BRCMF_ANT_MAX]; /* per antenna noise floor */ | |
496 | __le16 aid; /* association ID */ | |
497 | __le16 ht_capabilities; /* advertised ht caps */ | |
498 | __le16 vht_flags; /* converted vht flags */ | |
499 | __le32 tx_pkts_retry_cnt; /* # of frames where a retry was | |
500 | * exhausted. | |
501 | */ | |
502 | __le32 tx_pkts_retry_exhausted; /* # of user frames where a retry | |
503 | * was exhausted | |
504 | */ | |
505 | s8 rx_lastpkt_rssi[BRCMF_ANT_MAX]; /* Per antenna RSSI of last | |
506 | * received data frame. | |
507 | */ | |
508 | /* TX WLAN retry/failure statistics: | |
509 | * Separated for host requested frames and locally generated frames. | |
510 | * Include unicast frame only where the retries/failures can be counted. | |
511 | */ | |
512 | __le32 tx_pkts_total; /* # user frames sent successfully */ | |
513 | __le32 tx_pkts_retries; /* # user frames retries */ | |
514 | __le32 tx_pkts_fw_total; /* # FW generated sent successfully */ | |
515 | __le32 tx_pkts_fw_retries; /* # retries for FW generated frames */ | |
516 | __le32 tx_pkts_fw_retry_exhausted; /* # FW generated where a retry | |
517 | * was exhausted | |
518 | */ | |
519 | __le32 rx_pkts_retried; /* # rx with retry bit set */ | |
520 | __le32 tx_rate_fallback; /* lowest fallback TX rate */ | |
6f5838a4 AS |
521 | }; |
522 | ||
523 | struct brcmf_chanspec_list { | |
524 | __le32 count; /* # of entries */ | |
525 | __le32 element[1]; /* variable length uint32 list */ | |
526 | }; | |
527 | ||
528 | /* | |
529 | * WLC_E_PROBRESP_MSG | |
530 | * WLC_E_P2P_PROBREQ_MSG | |
531 | * WLC_E_ACTION_FRAME_RX | |
532 | */ | |
533 | struct brcmf_rx_mgmt_data { | |
534 | __be16 version; | |
535 | __be16 chanspec; | |
536 | __be32 rssi; | |
537 | __be32 mactime; | |
538 | __be32 rate; | |
539 | }; | |
540 | ||
b9a82f89 HM |
541 | /** |
542 | * struct brcmf_fil_wowl_pattern_le - wowl pattern configuration struct. | |
543 | * | |
544 | * @cmd: "add", "del" or "clr". | |
545 | * @masksize: Size of the mask in #of bytes | |
546 | * @offset: Pattern byte offset in packet | |
547 | * @patternoffset: Offset of start of pattern. Starting from field masksize. | |
548 | * @patternsize: Size of the pattern itself in #of bytes | |
549 | * @id: id | |
550 | * @reasonsize: Size of the wakeup reason code | |
551 | * @type: Type of pattern (enum brcmf_wowl_pattern_type) | |
552 | */ | |
553 | struct brcmf_fil_wowl_pattern_le { | |
554 | u8 cmd[4]; | |
555 | __le32 masksize; | |
556 | __le32 offset; | |
557 | __le32 patternoffset; | |
558 | __le32 patternsize; | |
559 | __le32 id; | |
560 | __le32 reasonsize; | |
561 | __le32 type; | |
562 | /* u8 mask[] - Mask follows the structure above */ | |
563 | /* u8 pattern[] - Pattern follows the mask is at 'patternoffset' */ | |
564 | }; | |
565 | ||
a44aa400 HM |
566 | struct brcmf_mbss_ssid_le { |
567 | __le32 bsscfgidx; | |
568 | __le32 SSID_len; | |
569 | unsigned char SSID[32]; | |
570 | }; | |
571 | ||
63db1a49 AS |
572 | /** |
573 | * struct brcmf_fil_country_le - country configuration structure. | |
574 | * | |
575 | * @country_abbrev: null-terminated country code used in the country IE. | |
576 | * @rev: revision specifier for ccode. on set, -1 indicates unspecified. | |
577 | * @ccode: null-terminated built-in country code. | |
578 | */ | |
579 | struct brcmf_fil_country_le { | |
580 | char country_abbrev[BRCMF_COUNTRY_BUF_SZ]; | |
581 | __le32 rev; | |
582 | char ccode[BRCMF_COUNTRY_BUF_SZ]; | |
583 | }; | |
584 | ||
9b1933a3 AS |
585 | /** |
586 | * struct brcmf_rev_info_le - device revision info. | |
587 | * | |
588 | * @vendorid: PCI vendor id. | |
589 | * @deviceid: device id of chip. | |
590 | * @radiorev: radio revision. | |
591 | * @chiprev: chip revision. | |
592 | * @corerev: core revision. | |
593 | * @boardid: board identifier (usu. PCI sub-device id). | |
594 | * @boardvendor: board vendor (usu. PCI sub-vendor id). | |
595 | * @boardrev: board revision. | |
596 | * @driverrev: driver version. | |
597 | * @ucoderev: microcode version. | |
598 | * @bus: bus type. | |
599 | * @chipnum: chip number. | |
600 | * @phytype: phy type. | |
601 | * @phyrev: phy revision. | |
602 | * @anarev: anacore rev. | |
603 | * @chippkg: chip package info. | |
604 | * @nvramrev: nvram revision number. | |
605 | */ | |
606 | struct brcmf_rev_info_le { | |
607 | __le32 vendorid; | |
608 | __le32 deviceid; | |
609 | __le32 radiorev; | |
610 | __le32 chiprev; | |
611 | __le32 corerev; | |
612 | __le32 boardid; | |
613 | __le32 boardvendor; | |
614 | __le32 boardrev; | |
615 | __le32 driverrev; | |
616 | __le32 ucoderev; | |
617 | __le32 bus; | |
618 | __le32 chipnum; | |
619 | __le32 phytype; | |
620 | __le32 phyrev; | |
621 | __le32 anarev; | |
622 | __le32 chippkg; | |
623 | __le32 nvramrev; | |
624 | }; | |
625 | ||
bf2a7e04 HM |
626 | /** |
627 | * struct brcmf_assoclist_le - request assoc list. | |
628 | * | |
629 | * @count: indicates number of stations. | |
630 | * @mac: MAC addresses of stations. | |
631 | */ | |
632 | struct brcmf_assoclist_le { | |
633 | __le32 count; | |
634 | u8 mac[BRCMF_MAX_ASSOCLIST][ETH_ALEN]; | |
635 | }; | |
636 | ||
aeb64225 HM |
637 | /** |
638 | * struct brcmf_wowl_wakeind_le - Wakeup indicators | |
639 | * Note: note both fields contain same information. | |
640 | * | |
641 | * @pci_wakeind: Whether PCI PMECSR PMEStatus bit was set. | |
642 | * @ucode_wakeind: What wakeup-event indication was set by ucode | |
643 | */ | |
644 | struct brcmf_wowl_wakeind_le { | |
645 | __le32 pci_wakeind; | |
646 | __le32 ucode_wakeind; | |
647 | }; | |
648 | ||
d3c0b633 | 649 | #endif /* FWIL_TYPES_H_ */ |