Home | History | Annotate | Line # | Download | only in ic
bwfmreg.h revision 1.4
      1  1.4   mlelstv /* $NetBSD: bwfmreg.h,v 1.4 2019/09/01 05:40:39 mlelstv Exp $ */
      2  1.3      maya /* $OpenBSD: bwfmreg.h,v 1.16 2018/02/07 21:44:09 patrick Exp $ */
      3  1.1  jmcneill /*
      4  1.1  jmcneill  * Copyright (c) 2010-2016 Broadcom Corporation
      5  1.1  jmcneill  * Copyright (c) 2016,2017 Patrick Wildt <patrick (at) blueri.se>
      6  1.1  jmcneill  *
      7  1.1  jmcneill  * Permission to use, copy, modify, and/or distribute this software for any
      8  1.1  jmcneill  * purpose with or without fee is hereby granted, provided that the above
      9  1.1  jmcneill  * copyright notice and this permission notice appear in all copies.
     10  1.1  jmcneill  *
     11  1.1  jmcneill  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
     12  1.1  jmcneill  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
     13  1.1  jmcneill  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
     14  1.1  jmcneill  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     15  1.1  jmcneill  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
     16  1.1  jmcneill  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
     17  1.1  jmcneill  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     18  1.1  jmcneill  */
     19  1.1  jmcneill 
     20  1.1  jmcneill /* SDIO registers */
     21  1.1  jmcneill #define BWFM_SDIO_FUNC1_SBADDRLOW		0x1000A
     22  1.1  jmcneill #define BWFM_SDIO_FUNC1_SBADDRMID		0x1000B
     23  1.1  jmcneill #define BWFM_SDIO_FUNC1_SBADDRHIGH		0x1000C
     24  1.1  jmcneill #define BWFM_SDIO_FUNC1_CHIPCLKCSR		0x1000E
     25  1.1  jmcneill #define  BWFM_SDIO_FUNC1_CHIPCLKCSR_FORCE_ALP			0x01
     26  1.1  jmcneill #define  BWFM_SDIO_FUNC1_CHIPCLKCSR_FORCE_HT			0x02
     27  1.1  jmcneill #define  BWFM_SDIO_FUNC1_CHIPCLKCSR_FORCE_ILP			0x04
     28  1.1  jmcneill #define  BWFM_SDIO_FUNC1_CHIPCLKCSR_ALP_AVAIL_REQ		0x08
     29  1.1  jmcneill #define  BWFM_SDIO_FUNC1_CHIPCLKCSR_HT_AVAIL_REQ		0x10
     30  1.1  jmcneill #define  BWFM_SDIO_FUNC1_CHIPCLKCSR_FORCE_HW_CLKREQ_OFF		0x20
     31  1.1  jmcneill #define  BWFM_SDIO_FUNC1_CHIPCLKCSR_ALP_AVAIL			0x40
     32  1.1  jmcneill #define  BWFM_SDIO_FUNC1_CHIPCLKCSR_HT_AVAIL			0x80
     33  1.1  jmcneill #define  BWFM_SDIO_FUNC1_CHIPCLKCSR_CSR_MASK			0x1F
     34  1.1  jmcneill #define BWFM_SDIO_FUNC1_SDIOPULLUP		0x1000F
     35  1.1  jmcneill 
     36  1.1  jmcneill #define BWFM_SDIO_SB_OFT_ADDR_MASK		0x07FFF
     37  1.1  jmcneill #define BWFM_SDIO_SB_ACCESS_2_4B_FLAG		0x08000
     38  1.1  jmcneill 
     39  1.1  jmcneill /* Chip registers */
     40  1.1  jmcneill #define BWFM_CHIP_BASE				0x18000000
     41  1.1  jmcneill #define BWFM_CHIP_REG_CHIPID			0x00000000
     42  1.1  jmcneill #define  BWFM_CHIP_CHIPID_ID(x)				(((x) >> 0) & 0xffff)
     43  1.1  jmcneill #define  BWFM_CHIP_CHIPID_REV(x)			(((x) >> 16) & 0xf)
     44  1.1  jmcneill #define  BWFM_CHIP_CHIPID_PKG(x)			(((x) >> 20) & 0xf)
     45  1.1  jmcneill #define  BWFM_CHIP_CHIPID_CC(x)				(((x) >> 24) & 0xf)
     46  1.1  jmcneill #define  BWFM_CHIP_CHIPID_TYPE(x)			(((x) >> 28) & 0xf)
     47  1.1  jmcneill #define  BWFM_CHIP_CHIPID_TYPE_SOCI_SB			0
     48  1.1  jmcneill #define  BWFM_CHIP_CHIPID_TYPE_SOCI_AI			1
     49  1.1  jmcneill #define BWFM_CHIP_REG_CAPABILITIES		0x00000004
     50  1.1  jmcneill #define  BWFM_CHIP_REG_CAPABILITIES_PMU			0x10000000
     51  1.1  jmcneill #define BWFM_CHIP_REG_CAPABILITIES_EXT		0x000000AC
     52  1.1  jmcneill #define  BWFM_CHIP_REG_CAPABILITIES_EXT_AOB_PRESENT	0x00000040
     53  1.3      maya #define BWFM_CHIP_REG_WATCHDOG			0x00000080
     54  1.1  jmcneill #define BWFM_CHIP_REG_EROMPTR			0x000000FC
     55  1.3      maya #define BWFM_CHIP_REG_SR_CAPABILITY		0x00000500
     56  1.3      maya #define BWFM_CHIP_REG_SR_CONTROL0		0x00000504
     57  1.3      maya #define BWFM_CHIP_REG_SR_CONTROL1		0x00000508
     58  1.1  jmcneill #define BWFM_CHIP_REG_PMUCONTROL		0x00000600
     59  1.1  jmcneill #define  BWFM_CHIP_REG_PMUCONTROL_RES_MASK		0x00006000
     60  1.1  jmcneill #define  BWFM_CHIP_REG_PMUCONTROL_RES_SHIFT		13
     61  1.1  jmcneill #define  BWFM_CHIP_REG_PMUCONTROL_RES_RELOAD		0x2
     62  1.1  jmcneill #define BWFM_CHIP_REG_PMUCAPABILITIES		0x00000604
     63  1.1  jmcneill #define  BWFM_CHIP_REG_PMUCAPABILITIES_REV_MASK		0x000000ff
     64  1.3      maya #define BWFM_CHIP_REG_PMUCAPABILITIES_EXT	0x0000064C
     65  1.3      maya #define  BWFM_CHIP_REG_PMUCAPABILITIES_SR_SUPP		(1 << 1)
     66  1.3      maya #define BWFM_CHIP_REG_CHIPCONTROL_ADDR		0x00000650
     67  1.3      maya #define BWFM_CHIP_REG_CHIPCONTROL_DATA		0x00000654
     68  1.3      maya #define BWFM_CHIP_REG_RETENTION_CTL		0x00000670
     69  1.3      maya #define  BWFM_CHIP_REG_RETENTION_CTL_MACPHY_DIS		(1 << 26)
     70  1.3      maya #define  BWFM_CHIP_REG_RETENTION_CTL_LOGIC_DIS		(1 << 27)
     71  1.1  jmcneill 
     72  1.1  jmcneill /* Agent registers */
     73  1.1  jmcneill #define BWFM_AGENT_IOCTL			0x0408
     74  1.1  jmcneill #define  BWFM_AGENT_IOCTL_CLK				0x0001
     75  1.1  jmcneill #define  BWFM_AGENT_IOCTL_FGC				0x0002
     76  1.1  jmcneill #define  BWFM_AGENT_IOCTL_CORE_BITS			0x3FFC
     77  1.1  jmcneill #define  BWFM_AGENT_IOCTL_PME_EN			0x4000
     78  1.1  jmcneill #define  BWFM_AGENT_IOCTL_BIST_EN			0x8000
     79  1.3      maya #define  BWFM_AGENT_IOCTL_ARMCR4_CPUHALT		0x0020
     80  1.1  jmcneill #define BWFM_AGENT_RESET_CTL			0x0800
     81  1.1  jmcneill #define  BWFM_AGENT_RESET_CTL_RESET			0x0001
     82  1.1  jmcneill 
     83  1.1  jmcneill /* Agent Core-IDs */
     84  1.1  jmcneill #define BWFM_AGENT_CORE_CHIPCOMMON		0x800
     85  1.1  jmcneill #define BWFM_AGENT_INTERNAL_MEM			0x80E
     86  1.1  jmcneill #define BWFM_AGENT_CORE_80211			0x812
     87  1.1  jmcneill #define BWFM_AGENT_CORE_PMU			0x827
     88  1.1  jmcneill #define BWFM_AGENT_CORE_SDIO_DEV		0x829
     89  1.1  jmcneill #define BWFM_AGENT_CORE_ARM_CM3			0x82A
     90  1.3      maya #define BWFM_AGENT_CORE_PCIE2			0x83C
     91  1.1  jmcneill #define BWFM_AGENT_CORE_ARM_CR4			0x83E
     92  1.1  jmcneill #define BWFM_AGENT_CORE_ARM_CA7			0x847
     93  1.3      maya #define BWFM_AGENT_SYS_MEM			0x849
     94  1.1  jmcneill 
     95  1.1  jmcneill /* Specific Core Bits */
     96  1.1  jmcneill #define BWFM_AGENT_ARMCR4_IOCTL_CPUHALT		0x0020
     97  1.1  jmcneill #define BWFM_AGENT_D11_IOCTL_PHYCLOCKEN		0x0004
     98  1.1  jmcneill #define BWFM_AGENT_D11_IOCTL_PHYRESET		0x0008
     99  1.1  jmcneill 
    100  1.3      maya /* CR4 registers */
    101  1.3      maya #define BWFM_ARMCR4_CAP				0x0004
    102  1.3      maya #define  BWFM_ARMCR4_CAP_TCBANB_MASK			0xf
    103  1.3      maya #define  BWFM_ARMCR4_CAP_TCBANB_SHIFT			0
    104  1.3      maya #define  BWFM_ARMCR4_CAP_TCBBNB_MASK			0xf0
    105  1.3      maya #define  BWFM_ARMCR4_CAP_TCBBNB_SHIFT			4
    106  1.3      maya #define BWFM_ARMCR4_BANKIDX			0x0040
    107  1.3      maya #define BWFM_ARMCR4_BANKINFO			0x0044
    108  1.3      maya #define  BWFM_ARMCR4_BANKINFO_BSZ_MASK			0x3f
    109  1.3      maya #define  BWFM_ARMCR4_BANKINFO_BSZ_MULT			8192
    110  1.3      maya #define BWFM_ARMCR4_BANKPDA			0x004C
    111  1.3      maya 
    112  1.1  jmcneill /* SOCRAM registers */
    113  1.3      maya #define BWFM_SOCRAM_COREINFO			0x0000
    114  1.3      maya #define  BWFM_SOCRAM_COREINFO_SRBSZ_BASE		14
    115  1.3      maya #define  BWFM_SOCRAM_COREINFO_SRBSZ_MASK		0xf
    116  1.3      maya #define  BWFM_SOCRAM_COREINFO_SRBSZ_SHIFT		0
    117  1.3      maya #define  BWFM_SOCRAM_COREINFO_SRNB_MASK			0xf0
    118  1.3      maya #define  BWFM_SOCRAM_COREINFO_SRNB_SHIFT		4
    119  1.3      maya #define  BWFM_SOCRAM_COREINFO_LSS_MASK			0xf00000
    120  1.3      maya #define  BWFM_SOCRAM_COREINFO_LSS_SHIFT			20
    121  1.1  jmcneill #define BWFM_SOCRAM_BANKIDX			0x0010
    122  1.3      maya #define  BWFM_SOCRAM_BANKIDX_MEMTYPE_RAM		0
    123  1.3      maya #define  BWFM_SOCRAM_BANKIDX_MEMTYPE_ROM		1
    124  1.3      maya #define  BWFM_SOCRAM_BANKIDX_MEMTYPE_DEVRAM		2
    125  1.3      maya #define  BWFM_SOCRAM_BANKIDX_MEMTYPE_SHIFT		8
    126  1.3      maya #define BWFM_SOCRAM_BANKINFO			0x0040
    127  1.3      maya #define  BWFM_SOCRAM_BANKINFO_SZBASE			8192
    128  1.3      maya #define  BWFM_SOCRAM_BANKINFO_SZMASK			0x7f
    129  1.3      maya #define  BWFM_SOCRAM_BANKINFO_RETNTRAM_MASK		0x10000
    130  1.1  jmcneill #define BWFM_SOCRAM_BANKPDA			0x0044
    131  1.1  jmcneill 
    132  1.1  jmcneill /* SDPCMD registers */
    133  1.1  jmcneill #define BWFM_SDPCMD_INTSTATUS			0x0020
    134  1.1  jmcneill 
    135  1.1  jmcneill /* DMP descriptor */
    136  1.1  jmcneill #define BWFM_DMP_DESC_MASK			0x0000000F
    137  1.1  jmcneill #define BWFM_DMP_DESC_EMPTY			0x00000000
    138  1.1  jmcneill #define BWFM_DMP_DESC_VALID			0x00000001
    139  1.1  jmcneill #define BWFM_DMP_DESC_COMPONENT			0x00000001
    140  1.1  jmcneill #define BWFM_DMP_DESC_MASTER_PORT		0x00000003
    141  1.1  jmcneill #define BWFM_DMP_DESC_ADDRESS			0x00000005
    142  1.1  jmcneill #define BWFM_DMP_DESC_ADDRSIZE_GT32		0x00000008
    143  1.1  jmcneill #define BWFM_DMP_DESC_EOT			0x0000000F
    144  1.1  jmcneill #define BWFM_DMP_COMP_DESIGNER			0xFFF00000
    145  1.1  jmcneill #define BWFM_DMP_COMP_DESIGNER_S		20
    146  1.1  jmcneill #define BWFM_DMP_COMP_PARTNUM			0x000FFF00
    147  1.1  jmcneill #define BWFM_DMP_COMP_PARTNUM_S			8
    148  1.1  jmcneill #define BWFM_DMP_COMP_CLASS			0x000000F0
    149  1.1  jmcneill #define BWFM_DMP_COMP_CLASS_S			4
    150  1.1  jmcneill #define BWFM_DMP_COMP_REVISION			0xFF000000
    151  1.1  jmcneill #define BWFM_DMP_COMP_REVISION_S		24
    152  1.1  jmcneill #define BWFM_DMP_COMP_NUM_SWRAP			0x00F80000
    153  1.1  jmcneill #define BWFM_DMP_COMP_NUM_SWRAP_S		19
    154  1.1  jmcneill #define BWFM_DMP_COMP_NUM_MWRAP			0x0007C000
    155  1.1  jmcneill #define BWFM_DMP_COMP_NUM_MWRAP_S		14
    156  1.1  jmcneill #define BWFM_DMP_COMP_NUM_SPORT			0x00003E00
    157  1.1  jmcneill #define BWFM_DMP_COMP_NUM_SPORT_S		9
    158  1.1  jmcneill #define BWFM_DMP_COMP_NUM_MPORT			0x000001F0
    159  1.1  jmcneill #define BWFM_DMP_COMP_NUM_MPORT_S		4
    160  1.1  jmcneill #define BWFM_DMP_MASTER_PORT_UID		0x0000FF00
    161  1.1  jmcneill #define BWFM_DMP_MASTER_PORT_UID_S		8
    162  1.1  jmcneill #define BWFM_DMP_MASTER_PORT_NUM		0x000000F0
    163  1.1  jmcneill #define BWFM_DMP_MASTER_PORT_NUM_S		4
    164  1.1  jmcneill #define BWFM_DMP_SLAVE_ADDR_BASE		0xFFFFF000
    165  1.1  jmcneill #define BWFM_DMP_SLAVE_ADDR_BASE_S		12
    166  1.1  jmcneill #define BWFM_DMP_SLAVE_PORT_NUM			0x00000F00
    167  1.1  jmcneill #define BWFM_DMP_SLAVE_PORT_NUM_S		8
    168  1.1  jmcneill #define BWFM_DMP_SLAVE_TYPE			0x000000C0
    169  1.1  jmcneill #define BWFM_DMP_SLAVE_TYPE_S			6
    170  1.1  jmcneill #define  BWFM_DMP_SLAVE_TYPE_SLAVE		0
    171  1.1  jmcneill #define  BWFM_DMP_SLAVE_TYPE_BRIDGE		1
    172  1.1  jmcneill #define  BWFM_DMP_SLAVE_TYPE_SWRAP		2
    173  1.1  jmcneill #define  BWFM_DMP_SLAVE_TYPE_MWRAP		3
    174  1.1  jmcneill #define BWFM_DMP_SLAVE_SIZE_TYPE		0x00000030
    175  1.1  jmcneill #define BWFM_DMP_SLAVE_SIZE_TYPE_S		4
    176  1.1  jmcneill #define  BWFM_DMP_SLAVE_SIZE_4K			0
    177  1.1  jmcneill #define  BWFM_DMP_SLAVE_SIZE_8K			1
    178  1.1  jmcneill #define  BWFM_DMP_SLAVE_SIZE_16K		2
    179  1.1  jmcneill #define  BWFM_DMP_SLAVE_SIZE_DESC		3
    180  1.1  jmcneill 
    181  1.1  jmcneill /* Security Parameters */
    182  1.1  jmcneill #define BWFM_AUTH_OPEN				0
    183  1.1  jmcneill #define BWFM_AUTH_SHARED_KEY			1
    184  1.1  jmcneill #define BWFM_AUTH_AUTO				2
    185  1.3      maya #define BWFM_CRYPTO_ALGO_OFF			0
    186  1.3      maya #define BWFM_CRYPTO_ALGO_WEP1			1
    187  1.3      maya #define BWFM_CRYPTO_ALGO_TKIP			2
    188  1.3      maya #define BWFM_CRYPTO_ALGO_WEP128			3
    189  1.3      maya #define BWFM_CRYPTO_ALGO_AES_CCM		4
    190  1.3      maya #define BWFM_CRYPTO_ALGO_AES_RESERVED1		5
    191  1.3      maya #define BWFM_CRYPTO_ALGO_AES_RESERVED2		6
    192  1.1  jmcneill #define BWFM_MFP_NONE				0
    193  1.1  jmcneill #define BWFM_MFP_CAPABLE			1
    194  1.1  jmcneill #define BWFM_MFP_REQUIRED			2
    195  1.1  jmcneill #define BWFM_WPA_AUTH_DISABLED			(0 << 0)
    196  1.1  jmcneill #define BWFM_WPA_AUTH_NONE			(1 << 0)
    197  1.1  jmcneill #define BWFM_WPA_AUTH_WPA_UNSPECIFIED		(1 << 1)
    198  1.1  jmcneill #define BWFM_WPA_AUTH_WPA_PSK			(1 << 2)
    199  1.1  jmcneill #define BWFM_WPA_AUTH_WPA2_UNSPECIFIED		(1 << 6)
    200  1.1  jmcneill #define BWFM_WPA_AUTH_WPA2_PSK			(1 << 7)
    201  1.1  jmcneill #define BWFM_WPA_AUTH_WPA2_1X_SHA256		(1 << 12)
    202  1.1  jmcneill #define BWFM_WPA_AUTH_WPA2_PSK_SHA256		(1 << 15)
    203  1.1  jmcneill #define BWFM_WSEC_NONE				(0 << 0)
    204  1.1  jmcneill #define BWFM_WSEC_WEP				(1 << 0)
    205  1.1  jmcneill #define BWFM_WSEC_TKIP				(1 << 1)
    206  1.1  jmcneill #define BWFM_WSEC_AES				(1 << 2)
    207  1.1  jmcneill 
    208  1.3      maya /* Channel Parameters */
    209  1.3      maya #define BWFM_CHANSPEC_CHAN_MASK			0xff
    210  1.3      maya #define BWFM_CHANSPEC_CHAN_SHIFT		0
    211  1.3      maya #define BWFM_CHANSPEC_D11N_SB_L			(0x1 << 8) /* control lower */
    212  1.3      maya #define BWFM_CHANSPEC_D11N_SB_U			(0x2 << 8) /* control lower */
    213  1.3      maya #define BWFM_CHANSPEC_D11N_SB_N			(0x3 << 8) /* none */
    214  1.3      maya #define BWFM_CHANSPEC_D11N_SB_MASK		(0x3 << 8)
    215  1.3      maya #define BWFM_CHANSPEC_D11N_SB_SHIFT		8
    216  1.3      maya #define BWFM_CHANSPEC_D11N_BW_10		(0x1 << 10)
    217  1.3      maya #define BWFM_CHANSPEC_D11N_BW_20		(0x2 << 10)
    218  1.3      maya #define BWFM_CHANSPEC_D11N_BW_40		(0x3 << 10)
    219  1.3      maya #define BWFM_CHANSPEC_D11N_BW_MASK		(0x3 << 10)
    220  1.3      maya #define BWFM_CHANSPEC_D11N_BW_SHIFT		10
    221  1.3      maya #define BWFM_CHANSPEC_D11N_BND_5G		(0x1 << 12)
    222  1.3      maya #define BWFM_CHANSPEC_D11N_BND_2G		(0x2 << 12)
    223  1.3      maya #define BWFM_CHANSPEC_D11N_BND_MASK		(0x3 << 12)
    224  1.3      maya #define BWFM_CHANSPEC_D11N_BND_SHIFT		12
    225  1.3      maya #define BWFM_CHANSPEC_D11AC_SB_LLL		(0x0 << 8)
    226  1.3      maya #define BWFM_CHANSPEC_D11AC_SB_LLU		(0x1 << 8)
    227  1.3      maya #define BWFM_CHANSPEC_D11AC_SB_LUL		(0x2 << 8)
    228  1.3      maya #define BWFM_CHANSPEC_D11AC_SB_LUU		(0x3 << 8)
    229  1.3      maya #define BWFM_CHANSPEC_D11AC_SB_ULL		(0x4 << 8)
    230  1.3      maya #define BWFM_CHANSPEC_D11AC_SB_ULU		(0x5 << 8)
    231  1.3      maya #define BWFM_CHANSPEC_D11AC_SB_UUL		(0x6 << 8)
    232  1.3      maya #define BWFM_CHANSPEC_D11AC_SB_UUU		(0x7 << 8)
    233  1.3      maya #define BWFM_CHANSPEC_D11AC_SB_MASK		(0x7 << 8)
    234  1.3      maya #define BWFM_CHANSPEC_D11AC_SB_SHIFT		8
    235  1.3      maya #define BWFM_CHANSPEC_D11AC_BW_5		(0x0 << 11)
    236  1.3      maya #define BWFM_CHANSPEC_D11AC_BW_10		(0x1 << 11)
    237  1.3      maya #define BWFM_CHANSPEC_D11AC_BW_20		(0x2 << 11)
    238  1.3      maya #define BWFM_CHANSPEC_D11AC_BW_40		(0x3 << 11)
    239  1.3      maya #define BWFM_CHANSPEC_D11AC_BW_80		(0x4 << 11)
    240  1.3      maya #define BWFM_CHANSPEC_D11AC_BW_160		(0x5 << 11)
    241  1.3      maya #define BWFM_CHANSPEC_D11AC_BW_8080		(0x6 << 11)
    242  1.3      maya #define BWFM_CHANSPEC_D11AC_BW_MASK		(0x7 << 11)
    243  1.3      maya #define BWFM_CHANSPEC_D11AC_BW_SHIFT		11
    244  1.3      maya #define BWFM_CHANSPEC_D11AC_BND_2G		(0x0 << 14)
    245  1.3      maya #define BWFM_CHANSPEC_D11AC_BND_3G		(0x1 << 14)
    246  1.3      maya #define BWFM_CHANSPEC_D11AC_BND_4G		(0x2 << 14)
    247  1.3      maya #define BWFM_CHANSPEC_D11AC_BND_5G		(0x3 << 14)
    248  1.3      maya #define BWFM_CHANSPEC_D11AC_BND_MASK		(0x3 << 14)
    249  1.3      maya #define BWFM_CHANSPEC_D11AC_BND_SHIFT		14
    250  1.3      maya 
    251  1.3      maya #define BWFM_BAND_AUTO				0
    252  1.3      maya #define BWFM_BAND_5G				1
    253  1.3      maya #define BWFM_BAND_2G				2
    254  1.3      maya #define BWFM_BAND_ALL				3
    255  1.3      maya 
    256  1.3      maya /* Power Modes */
    257  1.3      maya #define BWFM_PM_CAM				0
    258  1.3      maya #define BWFM_PM_PS				1
    259  1.3      maya #define BWFM_PM_FAST_PS				2
    260  1.3      maya 
    261  1.1  jmcneill /* DCMD commands */
    262  1.1  jmcneill #define BWFM_C_GET_VERSION			1
    263  1.1  jmcneill #define BWFM_C_UP				2
    264  1.1  jmcneill #define BWFM_C_DOWN				3
    265  1.1  jmcneill #define BWFM_C_SET_PROMISC			10
    266  1.1  jmcneill #define BWFM_C_GET_RATE				12
    267  1.1  jmcneill #define BWFM_C_GET_INFRA			19
    268  1.1  jmcneill #define BWFM_C_SET_INFRA			20
    269  1.1  jmcneill #define BWFM_C_GET_AUTH				21
    270  1.1  jmcneill #define BWFM_C_SET_AUTH				22
    271  1.1  jmcneill #define BWFM_C_GET_BSSID			23
    272  1.1  jmcneill #define BWFM_C_GET_SSID				25
    273  1.1  jmcneill #define BWFM_C_SET_SSID				26
    274  1.1  jmcneill #define BWFM_C_TERMINATED			28
    275  1.1  jmcneill #define BWFM_C_GET_CHANNEL			29
    276  1.1  jmcneill #define BWFM_C_SET_CHANNEL			30
    277  1.1  jmcneill #define BWFM_C_GET_SRL				31
    278  1.1  jmcneill #define BWFM_C_SET_SRL				32
    279  1.1  jmcneill #define BWFM_C_GET_LRL				33
    280  1.1  jmcneill #define BWFM_C_SET_LRL				34
    281  1.1  jmcneill #define BWFM_C_GET_RADIO			37
    282  1.1  jmcneill #define BWFM_C_SET_RADIO			38
    283  1.1  jmcneill #define BWFM_C_GET_PHYTYPE			39
    284  1.1  jmcneill #define BWFM_C_SET_KEY				45
    285  1.1  jmcneill #define BWFM_C_GET_REGULATORY			46
    286  1.1  jmcneill #define BWFM_C_SET_REGULATORY			47
    287  1.1  jmcneill #define BWFM_C_SET_PASSIVE_SCAN			49
    288  1.1  jmcneill #define BWFM_C_SCAN				50
    289  1.1  jmcneill #define BWFM_C_SCAN_RESULTS			51
    290  1.1  jmcneill #define BWFM_C_DISASSOC				52
    291  1.1  jmcneill #define BWFM_C_REASSOC				53
    292  1.1  jmcneill #define BWFM_C_SET_ROAM_TRIGGER			55
    293  1.1  jmcneill #define BWFM_C_SET_ROAM_DELTA			57
    294  1.1  jmcneill #define BWFM_C_GET_BCNPRD			75
    295  1.1  jmcneill #define BWFM_C_SET_BCNPRD			76
    296  1.1  jmcneill #define BWFM_C_GET_DTIMPRD			77
    297  1.1  jmcneill #define BWFM_C_SET_DTIMPRD			78
    298  1.1  jmcneill #define BWFM_C_SET_COUNTRY			84
    299  1.1  jmcneill #define BWFM_C_GET_PM				85
    300  1.1  jmcneill #define BWFM_C_SET_PM				86
    301  1.1  jmcneill #define BWFM_C_GET_REVINFO			98
    302  1.1  jmcneill #define BWFM_C_GET_CURR_RATESET			114
    303  1.1  jmcneill #define BWFM_C_GET_AP				117
    304  1.1  jmcneill #define BWFM_C_SET_AP				118
    305  1.1  jmcneill #define BWFM_C_SET_SCB_AUTHORIZE		121
    306  1.1  jmcneill #define BWFM_C_SET_SCB_DEAUTHORIZE		122
    307  1.1  jmcneill #define BWFM_C_GET_RSSI				127
    308  1.1  jmcneill #define BWFM_C_GET_WSEC				133
    309  1.1  jmcneill #define BWFM_C_SET_WSEC				134
    310  1.1  jmcneill #define BWFM_C_GET_PHY_NOISE			135
    311  1.1  jmcneill #define BWFM_C_GET_BSS_INFO			136
    312  1.1  jmcneill #define BWFM_C_GET_GET_PKTCNTS			137
    313  1.1  jmcneill #define BWFM_C_GET_BANDLIST			140
    314  1.1  jmcneill #define BWFM_C_SET_SCB_TIMEOUT			158
    315  1.1  jmcneill #define BWFM_C_GET_ASSOCLIST			159
    316  1.1  jmcneill #define BWFM_C_GET_PHYLIST			180
    317  1.1  jmcneill #define BWFM_C_SET_SCAN_CHANNEL_TIME		185
    318  1.1  jmcneill #define BWFM_C_SET_SCAN_UNASSOC_TIME		187
    319  1.1  jmcneill #define BWFM_C_SCB_DEAUTHENTICATE_FOR_REASON	201
    320  1.1  jmcneill #define BWFM_C_SET_ASSOC_PREFER			205
    321  1.1  jmcneill #define BWFM_C_GET_VALID_CHANNELS		217
    322  1.1  jmcneill #define BWFM_C_GET_KEY_PRIMARY			235
    323  1.1  jmcneill #define BWFM_C_SET_KEY_PRIMARY			236
    324  1.1  jmcneill #define BWFM_C_SET_SCAN_PASSIVE_TIME		258
    325  1.1  jmcneill #define BWFM_C_GET_VAR				262
    326  1.1  jmcneill #define BWFM_C_SET_VAR				263
    327  1.1  jmcneill #define BWFM_C_SET_WSEC_PMK			268
    328  1.1  jmcneill 
    329  1.1  jmcneill /* Small, medium, and maximum buffer size for dcmd */
    330  1.1  jmcneill #define	BWFM_DCMD_SMLEN				256
    331  1.1  jmcneill #define	BWFM_DCMD_MEDLEN			1536
    332  1.1  jmcneill #define	BWFM_DCMD_MAXLEN			8192
    333  1.1  jmcneill 
    334  1.1  jmcneill struct bwfm_proto_bcdc_dcmd {
    335  1.1  jmcneill 	struct {
    336  1.1  jmcneill 		uint32_t cmd;
    337  1.1  jmcneill 		uint32_t len;
    338  1.1  jmcneill 		uint32_t flags;
    339  1.1  jmcneill #define BWFM_BCDC_DCMD_ERROR		(1 << 0)
    340  1.1  jmcneill #define BWFM_BCDC_DCMD_GET		(0 << 1)
    341  1.1  jmcneill #define BWFM_BCDC_DCMD_SET		(1 << 1)
    342  1.1  jmcneill #define BWFM_BCDC_DCMD_IF_GET(x)	(((x) >> 12) & 0xf)
    343  1.1  jmcneill #define BWFM_BCDC_DCMD_IF_SET(x)	(((x) & 0xf) << 12)
    344  1.1  jmcneill #define BWFM_BCDC_DCMD_ID_GET(x)	(((x) >> 16) & 0xffff)
    345  1.1  jmcneill #define BWFM_BCDC_DCMD_ID_SET(x)	(((x) & 0xffff) << 16)
    346  1.1  jmcneill 		uint32_t status;
    347  1.1  jmcneill 	} hdr;
    348  1.1  jmcneill 	char buf[8192];
    349  1.1  jmcneill };
    350  1.1  jmcneill 
    351  1.1  jmcneill struct bwfm_proto_bcdc_hdr {
    352  1.1  jmcneill 	uint8_t flags;
    353  1.1  jmcneill #define BWFM_BCDC_FLAG_PROTO_VER	2
    354  1.1  jmcneill #define BWFM_BCDC_FLAG_VER(x)		(((x) & 0xf) << 4)
    355  1.1  jmcneill #define BWFM_BCDC_FLAG_SUM_GOOD		(1 << 2) /* rx */
    356  1.1  jmcneill #define BWFM_BCDC_FLAG_SUM_NEEDED	(1 << 3) /* tx */
    357  1.1  jmcneill 	uint8_t priority;
    358  1.1  jmcneill #define BWFM_BCDC_PRIORITY_MASK		0x7
    359  1.1  jmcneill 	uint8_t flags2;
    360  1.1  jmcneill #define BWFM_BCDC_FLAG2_IF_MASK		0xf
    361  1.1  jmcneill 	uint8_t data_offset;
    362  1.1  jmcneill };
    363  1.1  jmcneill 
    364  1.1  jmcneill #define BWFM_MCSSET_LEN				16
    365  1.1  jmcneill #define BWFM_MAX_SSID_LEN			32
    366  1.2  jmcneill #define BWFM_BSS_INFO_BUFLEN			2048
    367  1.1  jmcneill struct bwfm_bss_info {
    368  1.1  jmcneill 	uint32_t version;
    369  1.1  jmcneill 	uint32_t length;
    370  1.1  jmcneill 	uint8_t bssid[ETHER_ADDR_LEN];
    371  1.1  jmcneill 	uint16_t beacon_period;
    372  1.1  jmcneill 	uint16_t capability;
    373  1.1  jmcneill 	uint8_t ssid_len;
    374  1.1  jmcneill 	uint8_t ssid[BWFM_MAX_SSID_LEN];
    375  1.1  jmcneill 	uint32_t nrates;
    376  1.1  jmcneill 	uint8_t rates[16];
    377  1.1  jmcneill 	uint16_t chanspec;
    378  1.1  jmcneill 	uint16_t atim_window;
    379  1.1  jmcneill 	uint8_t dtim_period;
    380  1.1  jmcneill 	uint16_t rssi;
    381  1.1  jmcneill 	uint8_t phy_noise;
    382  1.1  jmcneill 	uint8_t n_cap;
    383  1.1  jmcneill 	uint32_t nbss_cap;
    384  1.1  jmcneill 	uint8_t ctl_ch;
    385  1.1  jmcneill 	uint32_t reserved32[1];
    386  1.1  jmcneill 	uint8_t flags;
    387  1.1  jmcneill 	uint8_t reserved[3];
    388  1.1  jmcneill 	uint8_t basic_mcs[BWFM_MCSSET_LEN];
    389  1.1  jmcneill 	uint16_t ie_offset;
    390  1.1  jmcneill 	uint32_t ie_length;
    391  1.1  jmcneill 	uint16_t snr;
    392  1.1  jmcneill };
    393  1.1  jmcneill 
    394  1.1  jmcneill struct bwfm_ssid {
    395  1.1  jmcneill 	uint32_t len;
    396  1.1  jmcneill 	uint8_t ssid[BWFM_MAX_SSID_LEN];
    397  1.1  jmcneill };
    398  1.1  jmcneill 
    399  1.1  jmcneill struct bwfm_scan_params {
    400  1.1  jmcneill 	struct bwfm_ssid ssid;
    401  1.1  jmcneill 	uint8_t bssid[ETHER_ADDR_LEN];
    402  1.1  jmcneill 	uint8_t bss_type;
    403  1.1  jmcneill #define DOT11_BSSTYPE_ANY		2
    404  1.1  jmcneill 	uint8_t scan_type;
    405  1.3      maya #define BWFM_SCANTYPE_ACTIVE		0
    406  1.3      maya #define BWFM_SCANTYPE_PASSIVE		1
    407  1.3      maya #define BWFM_SCANTYPE_DEFAULT		0xff
    408  1.1  jmcneill 	uint32_t nprobes;
    409  1.1  jmcneill 	uint32_t active_time;
    410  1.1  jmcneill 	uint32_t passive_time;
    411  1.1  jmcneill 	uint32_t home_time;
    412  1.1  jmcneill 	uint32_t channel_num;
    413  1.1  jmcneill 	uint16_t channel_list[];
    414  1.1  jmcneill };
    415  1.1  jmcneill 
    416  1.1  jmcneill struct bwfm_scan_results {
    417  1.1  jmcneill 	uint32_t buflen;
    418  1.1  jmcneill 	uint32_t version;
    419  1.1  jmcneill 	uint32_t count;
    420  1.1  jmcneill 	struct bwfm_bss_info bss_info[];
    421  1.1  jmcneill };
    422  1.1  jmcneill 
    423  1.1  jmcneill struct bwfm_escan_params {
    424  1.1  jmcneill 	uint32_t version;
    425  1.1  jmcneill #define BWFM_ESCAN_REQ_VERSION		1
    426  1.1  jmcneill 	uint16_t action;
    427  1.1  jmcneill #define WL_ESCAN_ACTION_START		1
    428  1.1  jmcneill #define WL_ESCAN_ACTION_CONTINUE	2
    429  1.1  jmcneill #define WL_ESCAN_ACTION_ABORT		3
    430  1.1  jmcneill 	uint16_t sync_id;
    431  1.1  jmcneill 	struct bwfm_scan_params scan_params;
    432  1.1  jmcneill };
    433  1.1  jmcneill 
    434  1.1  jmcneill struct bwfm_escan_results {
    435  1.1  jmcneill 	uint32_t buflen;
    436  1.1  jmcneill 	uint32_t version;
    437  1.1  jmcneill 	uint16_t sync_id;
    438  1.1  jmcneill 	uint16_t bss_count;
    439  1.1  jmcneill 	struct bwfm_bss_info bss_info[];
    440  1.1  jmcneill };
    441  1.1  jmcneill 
    442  1.1  jmcneill struct bwfm_assoc_params {
    443  1.1  jmcneill 	uint8_t bssid[ETHER_ADDR_LEN];
    444  1.1  jmcneill 	uint32_t chanspec_num;
    445  1.1  jmcneill 	uint16_t chanspec_list[];
    446  1.1  jmcneill };
    447  1.1  jmcneill 
    448  1.1  jmcneill struct bwfm_join_pref_params {
    449  1.1  jmcneill 	uint8_t type;
    450  1.1  jmcneill #define BWFM_JOIN_PREF_RSSI		1
    451  1.1  jmcneill #define BWFM_JOIN_PREF_WPA		2
    452  1.1  jmcneill #define BWFM_JOIN_PREF_BAND		3
    453  1.1  jmcneill #define BWFM_JOIN_PREF_RSSI_DELTA	4
    454  1.1  jmcneill 	uint8_t len;
    455  1.1  jmcneill 	uint8_t rssi_gain;
    456  1.1  jmcneill #define BWFM_JOIN_PREF_RSSI_BOOST	8
    457  1.1  jmcneill 	uint8_t band;
    458  1.1  jmcneill #define BWFM_JOIN_PREF_BAND_AUTO	0
    459  1.1  jmcneill #define BWFM_JOIN_PREF_BAND_5G		1
    460  1.1  jmcneill #define BWFM_JOIN_PREF_BAND_2G		2
    461  1.1  jmcneill #define BWFM_JOIN_PREF_BAND_ALL		3
    462  1.1  jmcneill };
    463  1.1  jmcneill 
    464  1.1  jmcneill struct bwfm_join_params {
    465  1.1  jmcneill 	struct bwfm_ssid ssid;
    466  1.1  jmcneill 	struct bwfm_assoc_params assoc;
    467  1.1  jmcneill };
    468  1.1  jmcneill 
    469  1.1  jmcneill struct bwfm_join_scan_params {
    470  1.1  jmcneill 	uint8_t scan_type;
    471  1.1  jmcneill 	uint32_t nprobes;
    472  1.1  jmcneill 	uint32_t active_time;
    473  1.1  jmcneill 	uint32_t passive_time;
    474  1.1  jmcneill 	uint32_t home_time;
    475  1.1  jmcneill };
    476  1.1  jmcneill 
    477  1.1  jmcneill struct bwfm_ext_join_params {
    478  1.1  jmcneill 	struct bwfm_ssid ssid;
    479  1.1  jmcneill 	struct bwfm_join_scan_params scan;
    480  1.1  jmcneill 	struct bwfm_assoc_params assoc;
    481  1.1  jmcneill };
    482  1.1  jmcneill 
    483  1.1  jmcneill struct bwfm_wsec_pmk {
    484  1.1  jmcneill 	uint16_t key_len;
    485  1.1  jmcneill #define BWFM_WSEC_MAX_PSK_LEN		32
    486  1.1  jmcneill 	uint16_t flags;
    487  1.1  jmcneill #define BWFM_WSEC_PASSPHRASE		(1 << 0)
    488  1.1  jmcneill 	uint8_t key[2 * BWFM_WSEC_MAX_PSK_LEN + 1];
    489  1.1  jmcneill };
    490  1.1  jmcneill 
    491  1.1  jmcneill struct bwfm_wsec_key {
    492  1.1  jmcneill 	uint32_t index;
    493  1.1  jmcneill 	uint32_t len;
    494  1.1  jmcneill 	uint8_t data[32];
    495  1.1  jmcneill 	uint32_t pad_1[18];
    496  1.1  jmcneill 	uint32_t algo;
    497  1.1  jmcneill #define	BWFM_CRYPTO_ALGO_OFF		0
    498  1.1  jmcneill #define	BWFM_CRYPTO_ALGO_WEP1		1
    499  1.1  jmcneill #define	BWFM_CRYPTO_ALGO_TKIP		2
    500  1.1  jmcneill #define	BWFM_CRYPTO_ALGO_WEP128		3
    501  1.1  jmcneill #define	BWFM_CRYPTO_ALGO_AES_CCM	4
    502  1.1  jmcneill #define	BWFM_CRYPTO_ALGO_AES_RESERVED1	5
    503  1.1  jmcneill #define	BWFM_CRYPTO_ALGO_AES_RESERVED2	6
    504  1.1  jmcneill 	uint32_t flags;
    505  1.1  jmcneill #define	BWFM_PRIMARY_KEY		(1 << 1)
    506  1.1  jmcneill 	uint32_t pad_2[3];
    507  1.1  jmcneill 	uint32_t iv_initialized;
    508  1.1  jmcneill 	uint32_t pad_3;
    509  1.1  jmcneill 	struct {
    510  1.1  jmcneill 		uint32_t hi;
    511  1.1  jmcneill 		uint16_t lo;
    512  1.1  jmcneill 	} rxiv;
    513  1.1  jmcneill 	uint32_t pad_4[2];
    514  1.1  jmcneill 	uint8_t ea[IEEE80211_ADDR_LEN];
    515  1.1  jmcneill };
    516  1.1  jmcneill 
    517  1.1  jmcneill #define	BWFM_BAND_5G			1
    518  1.1  jmcneill #define	BWFM_BAND_2G			2
    519  1.1  jmcneill 
    520  1.1  jmcneill /* Event handling */
    521  1.1  jmcneill enum bwfm_fweh_event_code {
    522  1.1  jmcneill 	BWFM_E_SET_SSID = 0,
    523  1.1  jmcneill 	BWFM_E_JOIN = 1,
    524  1.1  jmcneill 	BWFM_E_START = 2,
    525  1.1  jmcneill 	BWFM_E_AUTH = 3,
    526  1.1  jmcneill 	BWFM_E_AUTH_IND = 4,
    527  1.1  jmcneill 	BWFM_E_DEAUTH = 5,
    528  1.1  jmcneill 	BWFM_E_DEAUTH_IND = 6,
    529  1.1  jmcneill 	BWFM_E_ASSOC = 7,
    530  1.1  jmcneill 	BWFM_E_ASSOC_IND = 8,
    531  1.1  jmcneill 	BWFM_E_REASSOC = 9,
    532  1.1  jmcneill 	BWFM_E_REASSOC_IND = 10,
    533  1.1  jmcneill 	BWFM_E_DISASSOC = 11,
    534  1.1  jmcneill 	BWFM_E_DISASSOC_IND = 12,
    535  1.1  jmcneill 	BWFM_E_QUIET_START = 13,
    536  1.1  jmcneill 	BWFM_E_QUIET_END = 14,
    537  1.1  jmcneill 	BWFM_E_BEACON_RX = 15,
    538  1.1  jmcneill 	BWFM_E_LINK = 16,
    539  1.1  jmcneill 	BWFM_E_MIC_ERROR = 17,
    540  1.1  jmcneill 	BWFM_E_NDIS_LINK = 18,
    541  1.1  jmcneill 	BWFM_E_ROAM = 19,
    542  1.1  jmcneill 	BWFM_E_TXFAIL = 20,
    543  1.1  jmcneill 	BWFM_E_PMKID_CACHE = 21,
    544  1.1  jmcneill 	BWFM_E_RETROGRADE_TSF = 22,
    545  1.1  jmcneill 	BWFM_E_PRUNE = 23,
    546  1.1  jmcneill 	BWFM_E_AUTOAUTH = 24,
    547  1.1  jmcneill 	BWFM_E_EAPOL_MSG = 25,
    548  1.1  jmcneill 	BWFM_E_SCAN_COMPLETE = 26,
    549  1.1  jmcneill 	BWFM_E_ADDTS_IND = 27,
    550  1.1  jmcneill 	BWFM_E_DELTS_IND = 28,
    551  1.1  jmcneill 	BWFM_E_BCNSENT_IND = 29,
    552  1.1  jmcneill 	BWFM_E_BCNRX_MSG = 30,
    553  1.1  jmcneill 	BWFM_E_BCNLOST_MSG = 31,
    554  1.1  jmcneill 	BWFM_E_ROAM_PREP = 32,
    555  1.1  jmcneill 	BWFM_E_PFN_NET_FOUND = 33,
    556  1.1  jmcneill 	BWFM_E_PFN_NET_LOST = 34,
    557  1.1  jmcneill 	BWFM_E_RESET_COMPLETE = 35,
    558  1.1  jmcneill 	BWFM_E_JOIN_START = 36,
    559  1.1  jmcneill 	BWFM_E_ROAM_START = 37,
    560  1.1  jmcneill 	BWFM_E_ASSOC_START = 38,
    561  1.1  jmcneill 	BWFM_E_IBSS_ASSOC = 39,
    562  1.1  jmcneill 	BWFM_E_RADIO = 40,
    563  1.1  jmcneill 	BWFM_E_PSM_WATCHDOG = 41,
    564  1.1  jmcneill 	BWFM_E_PROBREQ_MSG = 44,
    565  1.1  jmcneill 	BWFM_E_SCAN_CONFIRM_IND = 45,
    566  1.1  jmcneill 	BWFM_E_PSK_SUP = 46,
    567  1.1  jmcneill 	BWFM_E_COUNTRY_CODE_CHANGED = 47,
    568  1.1  jmcneill 	BWFM_E_EXCEEDED_MEDIUM_TIME = 48,
    569  1.1  jmcneill 	BWFM_E_ICV_ERROR = 49,
    570  1.1  jmcneill 	BWFM_E_UNICAST_DECODE_ERROR = 50,
    571  1.1  jmcneill 	BWFM_E_MULTICAST_DECODE_ERROR = 51,
    572  1.1  jmcneill 	BWFM_E_TRACE = 52,
    573  1.1  jmcneill 	BWFM_E_IF = 54,
    574  1.1  jmcneill 	BWFM_E_P2P_DISC_LISTEN_COMPLETE = 55,
    575  1.1  jmcneill 	BWFM_E_RSSI = 56,
    576  1.1  jmcneill 	BWFM_E_EXTLOG_MSG = 58,
    577  1.1  jmcneill 	BWFM_E_ACTION_FRAME = 59,
    578  1.1  jmcneill 	BWFM_E_ACTION_FRAME_COMPLETE = 60,
    579  1.1  jmcneill 	BWFM_E_PRE_ASSOC_IND = 61,
    580  1.1  jmcneill 	BWFM_E_PRE_REASSOC_IND = 62,
    581  1.1  jmcneill 	BWFM_E_CHANNEL_ADOPTED = 63,
    582  1.1  jmcneill 	BWFM_E_AP_STARTED = 64,
    583  1.1  jmcneill 	BWFM_E_DFS_AP_STOP = 65,
    584  1.1  jmcneill 	BWFM_E_DFS_AP_RESUME = 66,
    585  1.1  jmcneill 	BWFM_E_ESCAN_RESULT = 69,
    586  1.1  jmcneill 	BWFM_E_ACTION_FRAME_OFF_CHAN_COMPLETE = 70,
    587  1.1  jmcneill 	BWFM_E_PROBERESP_MSG = 71,
    588  1.1  jmcneill 	BWFM_E_P2P_PROBEREQ_MSG = 72,
    589  1.1  jmcneill 	BWFM_E_DCS_REQUEST = 73,
    590  1.1  jmcneill 	BWFM_E_FIFO_CREDIT_MAP = 74,
    591  1.1  jmcneill 	BWFM_E_ACTION_FRAME_RX = 75,
    592  1.1  jmcneill 	BWFM_E_TDLS_PEER_EVENT = 92,
    593  1.1  jmcneill 	BWFM_E_BCMC_CREDIT_SUPPORT = 127,
    594  1.1  jmcneill 	BWFM_E_LAST = 139
    595  1.1  jmcneill };
    596  1.1  jmcneill #define BWFM_EVENT_MASK_LEN		(roundup(BWFM_E_LAST, 8) / 8)
    597  1.1  jmcneill 
    598  1.1  jmcneill enum bwfm_fweh_event_status {
    599  1.1  jmcneill 	BWFM_E_STATUS_SUCCESS = 0,
    600  1.1  jmcneill 	BWFM_E_STATUS_FAIL = 1,
    601  1.1  jmcneill 	BWFM_E_STATUS_TIMEOUT = 2,
    602  1.1  jmcneill 	BWFM_E_STATUS_NO_NETWORKS = 3,
    603  1.1  jmcneill 	BWFM_E_STATUS_ABORT = 4,
    604  1.1  jmcneill 	BWFM_E_STATUS_NO_ACK = 5,
    605  1.1  jmcneill 	BWFM_E_STATUS_UNSOLICITED = 6,
    606  1.1  jmcneill 	BWFM_E_STATUS_ATTEMPT = 7,
    607  1.1  jmcneill 	BWFM_E_STATUS_PARTIAL = 8,
    608  1.1  jmcneill 	BWFM_E_STATUS_NEWSCAN = 9,
    609  1.1  jmcneill 	BWFM_E_STATUS_NEWASSOC = 10,
    610  1.1  jmcneill 	BWFM_E_STATUS_11HQUIET = 11,
    611  1.1  jmcneill 	BWFM_E_STATUS_SUPPRESS = 12,
    612  1.1  jmcneill 	BWFM_E_STATUS_NOCHANS = 13,
    613  1.1  jmcneill 	BWFM_E_STATUS_CS_ABORT = 15,
    614  1.1  jmcneill 	BWFM_E_STATUS_ERROR = 16,
    615  1.1  jmcneill };
    616  1.1  jmcneill 
    617  1.1  jmcneill struct bwfm_ethhdr {
    618  1.1  jmcneill 	uint16_t subtype;
    619  1.1  jmcneill 	uint16_t length;
    620  1.1  jmcneill 	uint8_t version;
    621  1.1  jmcneill 	uint8_t oui[3];
    622  1.1  jmcneill #define	BWFM_BRCM_OUI			"\x00\x10\x18"
    623  1.1  jmcneill 	uint16_t usr_subtype;
    624  1.1  jmcneill #define	BWFM_BRCM_SUBTYPE_EVENT		1
    625  1.1  jmcneill };
    626  1.1  jmcneill 
    627  1.1  jmcneill struct bwfm_event_msg {
    628  1.1  jmcneill 	uint16_t version;
    629  1.1  jmcneill 	uint16_t flags;
    630  1.1  jmcneill 	uint32_t event_type;
    631  1.1  jmcneill 	uint32_t status;
    632  1.1  jmcneill 	uint32_t reason;
    633  1.1  jmcneill 	uint32_t auth_type;
    634  1.1  jmcneill 	uint32_t datalen;
    635  1.1  jmcneill 	struct ether_addr addr;
    636  1.1  jmcneill 	char ifname[IFNAMSIZ];
    637  1.1  jmcneill 	uint8_t ifidx;
    638  1.1  jmcneill 	uint8_t bsscfgidx;
    639  1.1  jmcneill };
    640  1.1  jmcneill 
    641  1.1  jmcneill struct bwfm_event {
    642  1.1  jmcneill 	struct ether_header ehdr;
    643  1.1  jmcneill #define BWFM_ETHERTYPE_LINK_CTL			0x886c
    644  1.1  jmcneill 	struct bwfm_ethhdr hdr;
    645  1.1  jmcneill 	struct bwfm_event_msg msg;
    646  1.1  jmcneill } __packed;
    647  1.4   mlelstv 
    648