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