1 | // SPDX-License-Identifier: ISC |
2 | /* |
3 | * Copyright (c) 2014 Broadcom Corporation |
4 | */ |
5 | #ifndef _BRCMF_FEATURE_H |
6 | #define _BRCMF_FEATURE_H |
7 | |
8 | /* |
9 | * Features: |
10 | * |
11 | * MBSS: multiple BSSID support (eg. guest network in AP mode). |
12 | * MCHAN: multi-channel for concurrent P2P. |
13 | * PNO: preferred network offload. |
14 | * WOWL: Wake-On-WLAN. |
15 | * P2P: peer-to-peer |
16 | * RSDB: Real Simultaneous Dual Band |
17 | * TDLS: Tunneled Direct Link Setup |
18 | * SCAN_RANDOM_MAC: Random MAC during (net detect) scheduled scan. |
19 | * WOWL_ND: WOWL net detect (PNO) |
20 | * WOWL_GTK: (WOWL) GTK rekeying offload |
21 | * WOWL_ARP_ND: ARP and Neighbor Discovery offload support during WOWL. |
22 | * MFP: 802.11w Management Frame Protection. |
23 | * GSCAN: enhanced scan offload feature. |
24 | * FWSUP: Firmware supplicant. |
25 | * MONITOR: firmware can pass monitor packets to host. |
26 | * MONITOR_FLAG: firmware flags monitor packets. |
27 | * MONITOR_FMT_RADIOTAP: firmware provides monitor packets with radiotap header |
28 | * MONITOR_FMT_HW_RX_HDR: firmware provides monitor packets with hw/ucode header |
29 | * DOT11H: firmware supports 802.11h |
30 | * SAE: simultaneous authentication of equals |
31 | * FWAUTH: Firmware authenticator |
32 | * DUMP_OBSS: Firmware has capable to dump obss info to support ACS |
33 | * SCAN_V2: Version 2 scan params |
34 | * SAE_EXT: SAE authentication handled by user-space supplicant |
35 | */ |
36 | #define BRCMF_FEAT_LIST \ |
37 | BRCMF_FEAT_DEF(MBSS) \ |
38 | BRCMF_FEAT_DEF(MCHAN) \ |
39 | BRCMF_FEAT_DEF(PNO) \ |
40 | BRCMF_FEAT_DEF(WOWL) \ |
41 | BRCMF_FEAT_DEF(P2P) \ |
42 | BRCMF_FEAT_DEF(RSDB) \ |
43 | BRCMF_FEAT_DEF(TDLS) \ |
44 | BRCMF_FEAT_DEF(SCAN_RANDOM_MAC) \ |
45 | BRCMF_FEAT_DEF(WOWL_ND) \ |
46 | BRCMF_FEAT_DEF(WOWL_GTK) \ |
47 | BRCMF_FEAT_DEF(WOWL_ARP_ND) \ |
48 | BRCMF_FEAT_DEF(MFP) \ |
49 | BRCMF_FEAT_DEF(GSCAN) \ |
50 | BRCMF_FEAT_DEF(FWSUP) \ |
51 | BRCMF_FEAT_DEF(MONITOR) \ |
52 | BRCMF_FEAT_DEF(MONITOR_FLAG) \ |
53 | BRCMF_FEAT_DEF(MONITOR_FMT_RADIOTAP) \ |
54 | BRCMF_FEAT_DEF(MONITOR_FMT_HW_RX_HDR) \ |
55 | BRCMF_FEAT_DEF(DOT11H) \ |
56 | BRCMF_FEAT_DEF(SAE) \ |
57 | BRCMF_FEAT_DEF(FWAUTH) \ |
58 | BRCMF_FEAT_DEF(DUMP_OBSS) \ |
59 | BRCMF_FEAT_DEF(SCAN_V2) \ |
60 | BRCMF_FEAT_DEF(PMKID_V2) \ |
61 | BRCMF_FEAT_DEF(PMKID_V3) \ |
62 | BRCMF_FEAT_DEF(SAE_EXT) |
63 | |
64 | /* |
65 | * Quirks: |
66 | * |
67 | * AUTO_AUTH: workaround needed for automatic authentication type. |
68 | * NEED_MPC: driver needs to disable MPC during scanning operation. |
69 | */ |
70 | #define BRCMF_QUIRK_LIST \ |
71 | BRCMF_QUIRK_DEF(AUTO_AUTH) \ |
72 | BRCMF_QUIRK_DEF(NEED_MPC) |
73 | |
74 | #define BRCMF_FEAT_DEF(_f) \ |
75 | BRCMF_FEAT_ ## _f, |
76 | /* |
77 | * expand feature list to enumeration. |
78 | */ |
79 | enum brcmf_feat_id { |
80 | BRCMF_FEAT_LIST |
81 | BRCMF_FEAT_LAST |
82 | }; |
83 | #undef BRCMF_FEAT_DEF |
84 | |
85 | #define BRCMF_QUIRK_DEF(_q) \ |
86 | BRCMF_FEAT_QUIRK_ ## _q, |
87 | /* |
88 | * expand quirk list to enumeration. |
89 | */ |
90 | enum brcmf_feat_quirk { |
91 | BRCMF_QUIRK_LIST |
92 | BRCMF_FEAT_QUIRK_LAST |
93 | }; |
94 | #undef BRCMF_QUIRK_DEF |
95 | |
96 | /** |
97 | * brcmf_feat_attach() - determine features and quirks. |
98 | * |
99 | * @drvr: driver instance. |
100 | */ |
101 | void brcmf_feat_attach(struct brcmf_pub *drvr); |
102 | |
103 | /** |
104 | * brcmf_feat_debugfs_create() - create debugfs entries. |
105 | * |
106 | * @drvr: driver instance. |
107 | */ |
108 | void brcmf_feat_debugfs_create(struct brcmf_pub *drvr); |
109 | |
110 | /** |
111 | * brcmf_feat_is_enabled() - query feature. |
112 | * |
113 | * @ifp: interface instance. |
114 | * @id: feature id to check. |
115 | * |
116 | * Return: true is feature is enabled; otherwise false. |
117 | */ |
118 | bool brcmf_feat_is_enabled(struct brcmf_if *ifp, enum brcmf_feat_id id); |
119 | |
120 | /** |
121 | * brcmf_feat_is_quirk_enabled() - query chip quirk. |
122 | * |
123 | * @ifp: interface instance. |
124 | * @quirk: quirk id to check. |
125 | * |
126 | * Return: true is quirk is enabled; otherwise false. |
127 | */ |
128 | bool brcmf_feat_is_quirk_enabled(struct brcmf_if *ifp, |
129 | enum brcmf_feat_quirk quirk); |
130 | |
131 | #endif /* _BRCMF_FEATURE_H */ |
132 | |