Arend van Spriel | c08437b | 2014-07-12 08:49:39 +0200 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (c) 2014 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 | #ifndef _BRCMF_FEATURE_H |
| 17 | #define _BRCMF_FEATURE_H |
| 18 | |
| 19 | /* |
| 20 | * Features: |
| 21 | * |
Arend van Spriel | 28d96e5 | 2015-04-14 20:10:26 +0200 | [diff] [blame] | 22 | * MBSS: multiple BSSID support (eg. guest network in AP mode). |
Arend van Spriel | c08437b | 2014-07-12 08:49:39 +0200 | [diff] [blame] | 23 | * MCHAN: multi-channel for concurrent P2P. |
Arend van Spriel | 7a7a87d | 2015-04-14 20:10:27 +0200 | [diff] [blame] | 24 | * PNO: preferred network offload. |
Arend van Spriel | 28d96e5 | 2015-04-14 20:10:26 +0200 | [diff] [blame] | 25 | * WOWL: Wake-On-WLAN. |
Pontus Fuchs | 2b560d7 | 2015-06-11 00:12:17 +0200 | [diff] [blame] | 26 | * P2P: peer-to-peer |
Hante Meuleman | 8abffd8 | 2015-10-29 20:33:16 +0100 | [diff] [blame] | 27 | * RSDB: Real Simultaneous Dual Band |
Hante Meuleman | a7b82d4 | 2015-12-10 13:43:04 +0100 | [diff] [blame] | 28 | * TDLS: Tunneled Direct Link Setup |
Hante Meuleman | 48ed16e | 2016-01-02 09:41:38 +0100 | [diff] [blame] | 29 | * SCAN_RANDOM_MAC: Random MAC during (net detect) scheduled scan. |
Arend van Spriel | c08437b | 2014-07-12 08:49:39 +0200 | [diff] [blame] | 30 | */ |
| 31 | #define BRCMF_FEAT_LIST \ |
Hante Meuleman | a44aa40 | 2014-12-03 21:05:33 +0100 | [diff] [blame] | 32 | BRCMF_FEAT_DEF(MBSS) \ |
Hante Meuleman | 4eb3af7 | 2014-09-30 10:23:18 +0200 | [diff] [blame] | 33 | BRCMF_FEAT_DEF(MCHAN) \ |
Arend van Spriel | 7a7a87d | 2015-04-14 20:10:27 +0200 | [diff] [blame] | 34 | BRCMF_FEAT_DEF(PNO) \ |
Pontus Fuchs | 2b560d7 | 2015-06-11 00:12:17 +0200 | [diff] [blame] | 35 | BRCMF_FEAT_DEF(WOWL) \ |
Hante Meuleman | 8abffd8 | 2015-10-29 20:33:16 +0100 | [diff] [blame] | 36 | BRCMF_FEAT_DEF(P2P) \ |
Hante Meuleman | a7b82d4 | 2015-12-10 13:43:04 +0100 | [diff] [blame] | 37 | BRCMF_FEAT_DEF(RSDB) \ |
Hante Meuleman | 48ed16e | 2016-01-02 09:41:38 +0100 | [diff] [blame] | 38 | BRCMF_FEAT_DEF(TDLS) \ |
| 39 | BRCMF_FEAT_DEF(SCAN_RANDOM_MAC) |
Hante Meuleman | 8abffd8 | 2015-10-29 20:33:16 +0100 | [diff] [blame] | 40 | |
Arend van Spriel | c08437b | 2014-07-12 08:49:39 +0200 | [diff] [blame] | 41 | /* |
| 42 | * Quirks: |
| 43 | * |
| 44 | * AUTO_AUTH: workaround needed for automatic authentication type. |
| 45 | * NEED_MPC: driver needs to disable MPC during scanning operation. |
| 46 | */ |
| 47 | #define BRCMF_QUIRK_LIST \ |
| 48 | BRCMF_QUIRK_DEF(AUTO_AUTH) \ |
| 49 | BRCMF_QUIRK_DEF(NEED_MPC) |
| 50 | |
| 51 | #define BRCMF_FEAT_DEF(_f) \ |
| 52 | BRCMF_FEAT_ ## _f, |
| 53 | /* |
| 54 | * expand feature list to enumeration. |
| 55 | */ |
| 56 | enum brcmf_feat_id { |
| 57 | BRCMF_FEAT_LIST |
| 58 | BRCMF_FEAT_LAST |
| 59 | }; |
| 60 | #undef BRCMF_FEAT_DEF |
| 61 | |
| 62 | #define BRCMF_QUIRK_DEF(_q) \ |
| 63 | BRCMF_FEAT_QUIRK_ ## _q, |
| 64 | /* |
| 65 | * expand quirk list to enumeration. |
| 66 | */ |
| 67 | enum brcmf_feat_quirk { |
| 68 | BRCMF_QUIRK_LIST |
| 69 | BRCMF_FEAT_QUIRK_LAST |
| 70 | }; |
| 71 | #undef BRCMF_QUIRK_DEF |
| 72 | |
| 73 | /** |
| 74 | * brcmf_feat_attach() - determine features and quirks. |
| 75 | * |
| 76 | * @drvr: driver instance. |
| 77 | */ |
| 78 | void brcmf_feat_attach(struct brcmf_pub *drvr); |
| 79 | |
| 80 | /** |
| 81 | * brcmf_feat_is_enabled() - query feature. |
| 82 | * |
| 83 | * @ifp: interface instance. |
| 84 | * @id: feature id to check. |
| 85 | * |
| 86 | * Return: true is feature is enabled; otherwise false. |
| 87 | */ |
| 88 | bool brcmf_feat_is_enabled(struct brcmf_if *ifp, enum brcmf_feat_id id); |
| 89 | |
| 90 | /** |
| 91 | * brcmf_feat_is_quirk_enabled() - query chip quirk. |
| 92 | * |
| 93 | * @ifp: interface instance. |
| 94 | * @quirk: quirk id to check. |
| 95 | * |
| 96 | * Return: true is quirk is enabled; otherwise false. |
| 97 | */ |
| 98 | bool brcmf_feat_is_quirk_enabled(struct brcmf_if *ifp, |
| 99 | enum brcmf_feat_quirk quirk); |
| 100 | |
| 101 | #endif /* _BRCMF_FEATURE_H */ |