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