Linux Audio

Check our new training course

Loading...
  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 */
 35#define BRCMF_FEAT_LIST \
 36	BRCMF_FEAT_DEF(MBSS) \
 37	BRCMF_FEAT_DEF(MCHAN) \
 38	BRCMF_FEAT_DEF(PNO) \
 39	BRCMF_FEAT_DEF(WOWL) \
 40	BRCMF_FEAT_DEF(P2P) \
 41	BRCMF_FEAT_DEF(RSDB) \
 42	BRCMF_FEAT_DEF(TDLS) \
 43	BRCMF_FEAT_DEF(SCAN_RANDOM_MAC) \
 44	BRCMF_FEAT_DEF(WOWL_ND) \
 45	BRCMF_FEAT_DEF(WOWL_GTK) \
 46	BRCMF_FEAT_DEF(WOWL_ARP_ND) \
 47	BRCMF_FEAT_DEF(MFP) \
 48	BRCMF_FEAT_DEF(GSCAN) \
 49	BRCMF_FEAT_DEF(FWSUP) \
 50	BRCMF_FEAT_DEF(MONITOR) \
 51	BRCMF_FEAT_DEF(MONITOR_FLAG) \
 52	BRCMF_FEAT_DEF(MONITOR_FMT_RADIOTAP) \
 53	BRCMF_FEAT_DEF(MONITOR_FMT_HW_RX_HDR) \
 54	BRCMF_FEAT_DEF(DOT11H) \
 55	BRCMF_FEAT_DEF(SAE) \
 56	BRCMF_FEAT_DEF(FWAUTH) \
 57	BRCMF_FEAT_DEF(DUMP_OBSS) \
 58	BRCMF_FEAT_DEF(SCAN_V2) \
 59	BRCMF_FEAT_DEF(PMKID_V2) \
 60	BRCMF_FEAT_DEF(PMKID_V3)
 61
 62/*
 63 * Quirks:
 64 *
 65 * AUTO_AUTH: workaround needed for automatic authentication type.
 66 * NEED_MPC: driver needs to disable MPC during scanning operation.
 67 */
 68#define BRCMF_QUIRK_LIST \
 69	BRCMF_QUIRK_DEF(AUTO_AUTH) \
 70	BRCMF_QUIRK_DEF(NEED_MPC)
 71
 72#define BRCMF_FEAT_DEF(_f) \
 73	BRCMF_FEAT_ ## _f,
 74/*
 75 * expand feature list to enumeration.
 76 */
 77enum brcmf_feat_id {
 78	BRCMF_FEAT_LIST
 79	BRCMF_FEAT_LAST
 80};
 81#undef BRCMF_FEAT_DEF
 82
 83#define BRCMF_QUIRK_DEF(_q) \
 84	BRCMF_FEAT_QUIRK_ ## _q,
 85/*
 86 * expand quirk list to enumeration.
 87 */
 88enum brcmf_feat_quirk {
 89	BRCMF_QUIRK_LIST
 90	BRCMF_FEAT_QUIRK_LAST
 91};
 92#undef BRCMF_QUIRK_DEF
 93
 94/**
 95 * brcmf_feat_attach() - determine features and quirks.
 96 *
 97 * @drvr: driver instance.
 98 */
 99void brcmf_feat_attach(struct brcmf_pub *drvr);
100
101/**
102 * brcmf_feat_debugfs_create() - create debugfs entries.
103 *
104 * @drvr: driver instance.
105 */
106void brcmf_feat_debugfs_create(struct brcmf_pub *drvr);
107
108/**
109 * brcmf_feat_is_enabled() - query feature.
110 *
111 * @ifp: interface instance.
112 * @id: feature id to check.
113 *
114 * Return: true is feature is enabled; otherwise false.
115 */
116bool brcmf_feat_is_enabled(struct brcmf_if *ifp, enum brcmf_feat_id id);
117
118/**
119 * brcmf_feat_is_quirk_enabled() - query chip quirk.
120 *
121 * @ifp: interface instance.
122 * @quirk: quirk id to check.
123 *
124 * Return: true is quirk is enabled; otherwise false.
125 */
126bool brcmf_feat_is_quirk_enabled(struct brcmf_if *ifp,
127				 enum brcmf_feat_quirk quirk);
128
129#endif /* _BRCMF_FEATURE_H */