1
2
3
4
5
6
7 #ifndef FWIL_TYPES_H_
8 #define FWIL_TYPES_H_
9
10 #include <linux/if_ether.h>
11
12
13 #define BRCMF_FIL_ACTION_FRAME_SIZE 1800
14
15
16 #define BRCMF_ARP_OL_AGENT 0x00000001
17 #define BRCMF_ARP_OL_SNOOP 0x00000002
18 #define BRCMF_ARP_OL_HOST_AUTO_REPLY 0x00000004
19 #define BRCMF_ARP_OL_PEER_AUTO_REPLY 0x00000008
20
21 #define BRCMF_BSS_INFO_VERSION 109
22 #define BRCMF_BSS_RSSI_ON_CHANNEL 0x0002
23
24 #define BRCMF_STA_BRCM 0x00000001
25 #define BRCMF_STA_WME 0x00000002
26 #define BRCMF_STA_NONERP 0x00000004
27 #define BRCMF_STA_AUTHE 0x00000008
28 #define BRCMF_STA_ASSOC 0x00000010
29 #define BRCMF_STA_AUTHO 0x00000020
30 #define BRCMF_STA_WDS 0x00000040
31 #define BRCMF_STA_WDS_LINKUP 0x00000080
32 #define BRCMF_STA_PS 0x00000100
33 #define BRCMF_STA_APSD_BE 0x00000200
34 #define BRCMF_STA_APSD_BK 0x00000400
35 #define BRCMF_STA_APSD_VI 0x00000800
36 #define BRCMF_STA_APSD_VO 0x00001000
37 #define BRCMF_STA_N_CAP 0x00002000
38 #define BRCMF_STA_SCBSTATS 0x00004000
39 #define BRCMF_STA_AMPDU_CAP 0x00008000
40 #define BRCMF_STA_AMSDU_CAP 0x00010000
41 #define BRCMF_STA_MIMO_PS 0x00020000
42 #define BRCMF_STA_MIMO_RTS 0x00040000
43 #define BRCMF_STA_RIFS_CAP 0x00080000
44 #define BRCMF_STA_VHT_CAP 0x00100000
45 #define BRCMF_STA_WPS 0x00200000
46 #define BRCMF_STA_DWDS_CAP 0x01000000
47 #define BRCMF_STA_DWDS 0x02000000
48
49
50 #define BRCMF_SCAN_PARAMS_FIXED_SIZE 64
51
52
53 #define BRCMF_SCAN_PARAMS_COUNT_MASK 0x0000ffff
54 #define BRCMF_SCAN_PARAMS_NSSID_SHIFT 16
55
56
57 #define BRCMF_SCANTYPE_DEFAULT 0xFF
58 #define BRCMF_SCANTYPE_ACTIVE 0
59 #define BRCMF_SCANTYPE_PASSIVE 1
60
61 #define BRCMF_WSEC_MAX_PSK_LEN 32
62 #define BRCMF_WSEC_PASSPHRASE BIT(0)
63
64
65 #define BRCMF_PRIMARY_KEY (1 << 1)
66 #define DOT11_BSSTYPE_ANY 2
67 #define BRCMF_ESCAN_REQ_VERSION 1
68
69 #define BRCMF_MAXRATES_IN_SET 16
70
71
72 #define BRCMF_OBSS_COEX_AUTO (-1)
73 #define BRCMF_OBSS_COEX_OFF 0
74 #define BRCMF_OBSS_COEX_ON 1
75
76
77
78 #define BRCMF_WOWL_MAGIC (1 << 0)
79
80 #define BRCMF_WOWL_NET (1 << 1)
81
82 #define BRCMF_WOWL_DIS (1 << 2)
83
84 #define BRCMF_WOWL_RETR (1 << 3)
85
86 #define BRCMF_WOWL_BCN (1 << 4)
87
88 #define BRCMF_WOWL_TST (1 << 5)
89
90 #define BRCMF_WOWL_M1 (1 << 6)
91
92 #define BRCMF_WOWL_EAPID (1 << 7)
93
94 #define BRCMF_WOWL_PME_GPIO (1 << 8)
95
96 #define BRCMF_WOWL_NEEDTKIP1 (1 << 9)
97
98 #define BRCMF_WOWL_GTK_FAILURE (1 << 10)
99
100 #define BRCMF_WOWL_EXTMAGPAT (1 << 11)
101
102 #define BRCMF_WOWL_ARPOFFLOAD (1 << 12)
103
104 #define BRCMF_WOWL_WPA2 (1 << 13)
105
106 #define BRCMF_WOWL_KEYROT (1 << 14)
107
108 #define BRCMF_WOWL_BCAST (1 << 15)
109
110 #define BRCMF_WOWL_SCANOL (1 << 16)
111
112 #define BRCMF_WOWL_TCPKEEP_TIME (1 << 17)
113
114 #define BRCMF_WOWL_MDNS_CONFLICT (1 << 18)
115
116 #define BRCMF_WOWL_MDNS_SERVICE (1 << 19)
117
118 #define BRCMF_WOWL_TCPKEEP_DATA (1 << 20)
119
120 #define BRCMF_WOWL_FW_HALT (1 << 21)
121
122 #define BRCMF_WOWL_ENAB_HWRADIO (1 << 22)
123
124 #define BRCMF_WOWL_MIC_FAIL (1 << 23)
125
126 #define BRCMF_WOWL_UNASSOC (1 << 24)
127
128 #define BRCMF_WOWL_SECURE (1 << 25)
129
130 #define BRCMF_WOWL_PFN_FOUND (1 << 27)
131
132 #define WIPHY_WOWL_EAP_PK (1 << 28)
133
134 #define BRCMF_WOWL_LINKDOWN (1 << 31)
135
136 #define BRCMF_WOWL_MAXPATTERNS 8
137 #define BRCMF_WOWL_MAXPATTERNSIZE 128
138
139 #define BRCMF_COUNTRY_BUF_SZ 4
140 #define BRCMF_ANT_MAX 4
141
142 #define BRCMF_MAX_ASSOCLIST 128
143
144 #define BRCMF_TXBF_SU_BFE_CAP BIT(0)
145 #define BRCMF_TXBF_MU_BFE_CAP BIT(1)
146 #define BRCMF_TXBF_SU_BFR_CAP BIT(0)
147 #define BRCMF_TXBF_MU_BFR_CAP BIT(1)
148
149 #define BRCMF_MAXPMKID 16
150 #define BRCMF_NUMCHANNELS 64
151
152 #define BRCMF_PFN_MACADDR_CFG_VER 1
153 #define BRCMF_PFN_MAC_OUI_ONLY BIT(0)
154 #define BRCMF_PFN_SET_MAC_UNASSOC BIT(1)
155
156 #define BRCMF_MCSSET_LEN 16
157
158 #define BRCMF_RSN_KCK_LENGTH 16
159 #define BRCMF_RSN_KEK_LENGTH 16
160 #define BRCMF_RSN_REPLAY_LEN 8
161
162 #define BRCMF_MFP_NONE 0
163 #define BRCMF_MFP_CAPABLE 1
164 #define BRCMF_MFP_REQUIRED 2
165
166 #define BRCMF_VHT_CAP_MCS_MAP_NSS_MAX 8
167
168 #define BRCMF_HE_CAP_MCS_MAP_NSS_MAX 8
169
170
171
172
173
174 #define MAX_CHUNK_LEN 1400
175
176 #define DLOAD_HANDLER_VER 1
177 #define DLOAD_FLAG_VER_MASK 0xf000
178 #define DLOAD_FLAG_VER_SHIFT 12
179
180 #define DL_BEGIN 0x0002
181 #define DL_END 0x0004
182
183 #define DL_TYPE_CLM 2
184
185
186 enum brcmf_join_pref_types {
187 BRCMF_JOIN_PREF_RSSI = 1,
188 BRCMF_JOIN_PREF_WPA,
189 BRCMF_JOIN_PREF_BAND,
190 BRCMF_JOIN_PREF_RSSI_DELTA,
191 };
192
193 enum brcmf_fil_p2p_if_types {
194 BRCMF_FIL_P2P_IF_CLIENT,
195 BRCMF_FIL_P2P_IF_GO,
196 BRCMF_FIL_P2P_IF_DYNBCN_GO,
197 BRCMF_FIL_P2P_IF_DEV,
198 };
199
200 enum brcmf_wowl_pattern_type {
201 BRCMF_WOWL_PATTERN_TYPE_BITMAP = 0,
202 BRCMF_WOWL_PATTERN_TYPE_ARP,
203 BRCMF_WOWL_PATTERN_TYPE_NA
204 };
205
206 struct brcmf_fil_p2p_if_le {
207 u8 addr[ETH_ALEN];
208 __le16 type;
209 __le16 chspec;
210 };
211
212 struct brcmf_fil_chan_info_le {
213 __le32 hw_channel;
214 __le32 target_channel;
215 __le32 scan_channel;
216 };
217
218 struct brcmf_fil_action_frame_le {
219 u8 da[ETH_ALEN];
220 __le16 len;
221 __le32 packet_id;
222 u8 data[BRCMF_FIL_ACTION_FRAME_SIZE];
223 };
224
225 struct brcmf_fil_af_params_le {
226 __le32 channel;
227 __le32 dwell_time;
228 u8 bssid[ETH_ALEN];
229 u8 pad[2];
230 struct brcmf_fil_action_frame_le action_frame;
231 };
232
233 struct brcmf_fil_bss_enable_le {
234 __le32 bsscfgidx;
235 __le32 enable;
236 };
237
238 struct brcmf_fil_bwcap_le {
239 __le32 band;
240 __le32 bw_cap;
241 };
242
243
244
245
246
247
248
249
250
251 struct brcmf_tdls_iovar_le {
252 u8 ea[ETH_ALEN];
253 u8 mode;
254 __le16 chanspec;
255 __le32 pad;
256 };
257
258 enum brcmf_tdls_manual_ep_ops {
259 BRCMF_TDLS_MANUAL_EP_CREATE = 1,
260 BRCMF_TDLS_MANUAL_EP_DELETE = 3,
261 BRCMF_TDLS_MANUAL_EP_DISCOVERY = 6
262 };
263
264
265
266
267
268 struct brcmf_pkt_filter_pattern_le {
269
270
271
272
273 __le32 offset;
274
275 __le32 size_bytes;
276
277
278
279
280 u8 mask_and_pattern[1];
281 };
282
283
284 struct brcmf_pkt_filter_le {
285 __le32 id;
286 __le32 type;
287 __le32 negate_match;
288 union {
289 struct brcmf_pkt_filter_pattern_le pattern;
290 } u;
291 };
292
293
294 struct brcmf_pkt_filter_enable_le {
295 __le32 id;
296 __le32 enable;
297 };
298
299
300
301
302
303 struct brcmf_bss_info_le {
304 __le32 version;
305 __le32 length;
306
307
308 u8 BSSID[ETH_ALEN];
309 __le16 beacon_period;
310 __le16 capability;
311 u8 SSID_len;
312 u8 SSID[32];
313 struct {
314 __le32 count;
315 u8 rates[16];
316 } rateset;
317 __le16 chanspec;
318 __le16 atim_window;
319 u8 dtim_period;
320 __le16 RSSI;
321 s8 phy_noise;
322
323 u8 n_cap;
324
325 __le32 nbss_cap;
326 u8 ctl_ch;
327 __le32 reserved32[1];
328 u8 flags;
329 u8 reserved[3];
330 u8 basic_mcs[BRCMF_MCSSET_LEN];
331
332 __le16 ie_offset;
333 __le32 ie_length;
334 __le16 SNR;
335
336
337 };
338
339 struct brcm_rateset_le {
340
341 __le32 count;
342
343 u8 rates[BRCMF_MAXRATES_IN_SET];
344 };
345
346 struct brcmf_ssid_le {
347 __le32 SSID_len;
348 unsigned char SSID[IEEE80211_MAX_SSID_LEN];
349 };
350
351 struct brcmf_scan_params_le {
352 struct brcmf_ssid_le ssid_le;
353 u8 bssid[ETH_ALEN];
354 s8 bss_type;
355
356
357 u8 scan_type;
358 __le32 nprobes;
359 __le32 active_time;
360
361
362 __le32 passive_time;
363
364
365 __le32 home_time;
366
367
368 __le32 channel_num;
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384 __le16 channel_list[1];
385 };
386
387 struct brcmf_scan_results {
388 u32 buflen;
389 u32 version;
390 u32 count;
391 struct brcmf_bss_info_le bss_info_le[];
392 };
393
394 struct brcmf_escan_params_le {
395 __le32 version;
396 __le16 action;
397 __le16 sync_id;
398 struct brcmf_scan_params_le params_le;
399 };
400
401 struct brcmf_escan_result_le {
402 __le32 buflen;
403 __le32 version;
404 __le16 sync_id;
405 __le16 bss_count;
406 struct brcmf_bss_info_le bss_info_le;
407 };
408
409 #define WL_ESCAN_RESULTS_FIXED_SIZE (sizeof(struct brcmf_escan_result_le) - \
410 sizeof(struct brcmf_bss_info_le))
411
412
413 struct brcmf_assoc_params_le {
414
415 u8 bssid[ETH_ALEN];
416
417
418 __le32 chanspec_num;
419
420 __le16 chanspec_list[1];
421 };
422
423
424
425
426
427
428
429
430
431
432 struct brcmf_join_pref_params {
433 u8 type;
434 u8 len;
435 u8 rssi_gain;
436 u8 band;
437 };
438
439
440 struct brcmf_join_params {
441 struct brcmf_ssid_le ssid_le;
442 struct brcmf_assoc_params_le params_le;
443 };
444
445
446 struct brcmf_join_scan_params_le {
447 u8 scan_type;
448 __le32 nprobes;
449 __le32 active_time;
450
451
452 __le32 passive_time;
453
454
455 __le32 home_time;
456
457
458 };
459
460
461 struct brcmf_ext_join_params_le {
462 struct brcmf_ssid_le ssid_le;
463 struct brcmf_join_scan_params_le scan_le;
464 struct brcmf_assoc_params_le assoc_le;
465 };
466
467 struct brcmf_wsec_key {
468 u32 index;
469 u32 len;
470 u8 data[WLAN_MAX_KEY_LEN];
471 u32 pad_1[18];
472 u32 algo;
473 u32 flags;
474 u32 pad_2[3];
475 u32 iv_initialized;
476 u32 pad_3;
477
478 struct {
479 u32 hi;
480 u16 lo;
481 } rxiv;
482 u32 pad_4[2];
483 u8 ea[ETH_ALEN];
484 };
485
486
487
488
489 struct brcmf_wsec_key_le {
490 __le32 index;
491 __le32 len;
492 u8 data[WLAN_MAX_KEY_LEN];
493 __le32 pad_1[18];
494 __le32 algo;
495 __le32 flags;
496 __le32 pad_2[3];
497 __le32 iv_initialized;
498 __le32 pad_3;
499
500 struct {
501 __le32 hi;
502 __le16 lo;
503 } rxiv;
504 __le32 pad_4[2];
505 u8 ea[ETH_ALEN];
506 };
507
508
509
510
511
512
513
514
515 struct brcmf_wsec_pmk_le {
516 __le16 key_len;
517 __le16 flags;
518 u8 key[2 * BRCMF_WSEC_MAX_PSK_LEN + 1];
519 };
520
521
522 struct brcmf_scb_val_le {
523 __le32 val;
524 u8 ea[ETH_ALEN];
525 };
526
527
528 struct brcmf_channel_info_le {
529 __le32 hw_channel;
530 __le32 target_channel;
531 __le32 scan_channel;
532 };
533
534 struct brcmf_sta_info_le {
535 __le16 ver;
536 __le16 len;
537 __le16 cap;
538 __le32 flags;
539 __le32 idle;
540 u8 ea[ETH_ALEN];
541 __le32 count;
542 u8 rates[BRCMF_MAXRATES_IN_SET];
543
544 __le32 in;
545 __le32 listen_interval_inms;
546
547
548 __le32 tx_pkts;
549 __le32 tx_failures;
550 __le32 rx_ucast_pkts;
551 __le32 rx_mcast_pkts;
552 __le32 tx_rate;
553 __le32 rx_rate;
554 __le32 rx_decrypt_succeeds;
555 __le32 rx_decrypt_failures;
556
557
558 __le32 tx_tot_pkts;
559 __le32 rx_tot_pkts;
560 __le32 tx_mcast_pkts;
561 __le64 tx_tot_bytes;
562 __le64 rx_tot_bytes;
563 __le64 tx_ucast_bytes;
564 __le64 tx_mcast_bytes;
565 __le64 rx_ucast_bytes;
566 __le64 rx_mcast_bytes;
567 s8 rssi[BRCMF_ANT_MAX];
568 s8 nf[BRCMF_ANT_MAX];
569 __le16 aid;
570 __le16 ht_capabilities;
571 __le16 vht_flags;
572 __le32 tx_pkts_retry_cnt;
573
574
575 __le32 tx_pkts_retry_exhausted;
576
577
578 s8 rx_lastpkt_rssi[BRCMF_ANT_MAX];
579
580
581
582
583
584
585 __le32 tx_pkts_total;
586 __le32 tx_pkts_retries;
587 __le32 tx_pkts_fw_total;
588 __le32 tx_pkts_fw_retries;
589 __le32 tx_pkts_fw_retry_exhausted;
590
591
592 __le32 rx_pkts_retried;
593 __le32 tx_rate_fallback;
594
595 union {
596 struct {
597 struct {
598 __le32 count;
599 u8 rates[BRCMF_MAXRATES_IN_SET];
600 u8 mcs[BRCMF_MCSSET_LEN];
601 __le16 vht_mcs[BRCMF_VHT_CAP_MCS_MAP_NSS_MAX];
602 } rateset_adv;
603 } v5;
604
605 struct {
606 __le32 rx_dur_total;
607 __le16 chanspec;
608 __le16 pad_1;
609 struct {
610 __le16 version;
611 __le16 len;
612 __le32 count;
613 u8 rates[BRCMF_MAXRATES_IN_SET];
614 u8 mcs[BRCMF_MCSSET_LEN];
615 __le16 vht_mcs[BRCMF_VHT_CAP_MCS_MAP_NSS_MAX];
616 __le16 he_mcs[BRCMF_HE_CAP_MCS_MAP_NSS_MAX];
617 } rateset_adv;
618 __le16 wpauth;
619 u8 algo;
620 u8 pad_2;
621 __le32 tx_rspec;
622 __le32 rx_rspec;
623 __le32 wnm_cap;
624 } v7;
625 };
626 };
627
628 struct brcmf_chanspec_list {
629 __le32 count;
630 __le32 element[1];
631 };
632
633
634
635
636
637
638 struct brcmf_rx_mgmt_data {
639 __be16 version;
640 __be16 chanspec;
641 __be32 rssi;
642 __be32 mactime;
643 __be32 rate;
644 };
645
646
647
648
649
650
651
652
653
654
655
656
657
658 struct brcmf_fil_wowl_pattern_le {
659 u8 cmd[4];
660 __le32 masksize;
661 __le32 offset;
662 __le32 patternoffset;
663 __le32 patternsize;
664 __le32 id;
665 __le32 reasonsize;
666 __le32 type;
667
668
669 };
670
671 struct brcmf_mbss_ssid_le {
672 __le32 bsscfgidx;
673 __le32 SSID_len;
674 unsigned char SSID[32];
675 };
676
677
678
679
680
681
682
683
684 struct brcmf_fil_country_le {
685 char country_abbrev[BRCMF_COUNTRY_BUF_SZ];
686 __le32 rev;
687 char ccode[BRCMF_COUNTRY_BUF_SZ];
688 };
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711 struct brcmf_rev_info_le {
712 __le32 vendorid;
713 __le32 deviceid;
714 __le32 radiorev;
715 __le32 chiprev;
716 __le32 corerev;
717 __le32 boardid;
718 __le32 boardvendor;
719 __le32 boardrev;
720 __le32 driverrev;
721 __le32 ucoderev;
722 __le32 bus;
723 __le32 chipnum;
724 __le32 phytype;
725 __le32 phyrev;
726 __le32 anarev;
727 __le32 chippkg;
728 __le32 nvramrev;
729 };
730
731
732
733
734
735
736
737 struct brcmf_assoclist_le {
738 __le32 count;
739 u8 mac[BRCMF_MAX_ASSOCLIST][ETH_ALEN];
740 };
741
742
743
744
745
746
747
748
749 struct brcmf_wowl_wakeind_le {
750 __le32 pci_wakeind;
751 __le32 ucode_wakeind;
752 };
753
754
755
756
757
758
759
760 struct brcmf_pmksa {
761 u8 bssid[ETH_ALEN];
762 u8 pmkid[WLAN_PMKID_LEN];
763 };
764
765
766
767
768
769
770
771 struct brcmf_pmk_list_le {
772 __le32 npmk;
773 struct brcmf_pmksa pmk[BRCMF_MAXPMKID];
774 };
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793 struct brcmf_pno_param_le {
794 __le32 version;
795 __le32 scan_freq;
796 __le32 lost_network_timeout;
797 __le16 flags;
798 __le16 rssi_margin;
799 u8 bestn;
800 u8 mscan;
801 u8 repeat;
802 u8 exp;
803 __le32 slow_freq;
804 };
805
806
807
808
809
810
811
812
813
814 struct brcmf_pno_config_le {
815 __le32 reporttype;
816 __le32 channel_num;
817 __le16 channel_list[BRCMF_NUMCHANNELS];
818 __le32 flags;
819 };
820
821
822
823
824
825
826
827
828
829
830
831 struct brcmf_pno_net_param_le {
832 struct brcmf_ssid_le ssid;
833 __le32 flags;
834 __le32 infra;
835 __le32 auth;
836 __le32 wpa_auth;
837 __le32 wsec;
838 };
839
840
841
842
843
844
845
846
847
848
849
850 struct brcmf_pno_net_info_le {
851 u8 bssid[ETH_ALEN];
852 u8 channel;
853 u8 SSID_len;
854 u8 SSID[32];
855 __le16 RSSI;
856 __le16 timestamp;
857 };
858
859
860
861
862
863
864
865
866 struct brcmf_pno_scanresults_le {
867 __le32 version;
868 __le32 status;
869 __le32 count;
870 };
871
872 struct brcmf_pno_scanresults_v2_le {
873 __le32 version;
874 __le32 status;
875 __le32 count;
876 __le32 scan_ch_bucket;
877 };
878
879
880
881
882
883
884
885
886 struct brcmf_pno_macaddr_le {
887 u8 version;
888 u8 flags;
889 u8 mac[ETH_ALEN];
890 };
891
892
893
894
895
896
897
898
899
900 struct brcmf_dload_data_le {
901 __le16 flag;
902 __le16 dload_type;
903 __le32 len;
904 __le32 crc;
905 u8 data[1];
906 };
907
908
909
910
911
912
913
914 struct brcmf_pno_bssid_le {
915 u8 bssid[ETH_ALEN];
916 __le16 flags;
917 };
918
919
920
921
922
923
924
925
926
927
928 struct brcmf_pktcnt_le {
929 __le32 rx_good_pkt;
930 __le32 rx_bad_pkt;
931 __le32 tx_good_pkt;
932 __le32 tx_bad_pkt;
933 __le32 rx_ocast_good_pkt;
934 };
935
936
937
938
939
940
941
942
943 struct brcmf_gtk_keyinfo_le {
944 u8 kck[BRCMF_RSN_KCK_LENGTH];
945 u8 kek[BRCMF_RSN_KEK_LENGTH];
946 u8 replay_counter[BRCMF_RSN_REPLAY_LEN];
947 };
948
949 #define BRCMF_PNO_REPORT_NO_BATCH BIT(2)
950
951
952
953
954
955
956
957
958
959
960
961
962 struct brcmf_gscan_bucket_config {
963 u8 bucket_end_index;
964 u8 bucket_freq_multiple;
965 u8 flag;
966 u8 reserved;
967 __le16 repeat;
968 __le16 max_freq_multiple;
969 };
970
971
972 #define BRCMF_GSCAN_CFG_VERSION 2
973
974
975
976
977
978
979
980
981
982 enum brcmf_gscan_cfg_flags {
983 BRCMF_GSCAN_CFG_FLAGS_ALL_RESULTS = BIT(0),
984 BRCMF_GSCAN_CFG_ALL_BUCKETS_IN_1ST_SCAN = BIT(3),
985 BRCMF_GSCAN_CFG_FLAGS_CHANGE_ONLY = BIT(7),
986 };
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002 struct brcmf_gscan_config {
1003 __le16 version;
1004 u8 flags;
1005 u8 buffer_threshold;
1006 u8 swc_nbssid_threshold;
1007 u8 swc_rssi_window_size;
1008 u8 count_of_channel_buckets;
1009 u8 retry_threshold;
1010 __le16 lost_ap_window;
1011 struct brcmf_gscan_bucket_config bucket[1];
1012 };
1013
1014 #endif