1d8d81063Sfei feng - Sun Microsystems - Beijing China /* 2d8d81063Sfei feng - Sun Microsystems - Beijing China * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 3d8d81063Sfei feng - Sun Microsystems - Beijing China * Use is subject to license terms. 4d8d81063Sfei feng - Sun Microsystems - Beijing China */ 5d8d81063Sfei feng - Sun Microsystems - Beijing China 6d8d81063Sfei feng - Sun Microsystems - Beijing China /* 7d8d81063Sfei feng - Sun Microsystems - Beijing China * Copyright (c) 2007-2009 Sam Leffler, Errno Consulting 8d8d81063Sfei feng - Sun Microsystems - Beijing China * Copyright (c) 2007-2009 Marvell Semiconductor, Inc. 9d8d81063Sfei feng - Sun Microsystems - Beijing China * All rights reserved. 10d8d81063Sfei feng - Sun Microsystems - Beijing China * 11d8d81063Sfei feng - Sun Microsystems - Beijing China * Redistribution and use in source and binary forms, with or without 12d8d81063Sfei feng - Sun Microsystems - Beijing China * modification, are permitted provided that the following conditions 13d8d81063Sfei feng - Sun Microsystems - Beijing China * are met: 14d8d81063Sfei feng - Sun Microsystems - Beijing China * 1. Redistributions of source code must retain the above copyright 15d8d81063Sfei feng - Sun Microsystems - Beijing China * notice, this list of conditions and the following disclaimer, 16d8d81063Sfei feng - Sun Microsystems - Beijing China * without modification. 17d8d81063Sfei feng - Sun Microsystems - Beijing China * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18d8d81063Sfei feng - Sun Microsystems - Beijing China * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any 19d8d81063Sfei feng - Sun Microsystems - Beijing China * redistribution must be conditioned upon including a substantially 20d8d81063Sfei feng - Sun Microsystems - Beijing China * similar Disclaimer requirement for further binary redistribution. 21d8d81063Sfei feng - Sun Microsystems - Beijing China * 22d8d81063Sfei feng - Sun Microsystems - Beijing China * NO WARRANTY 23d8d81063Sfei feng - Sun Microsystems - Beijing China * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 24d8d81063Sfei feng - Sun Microsystems - Beijing China * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 25d8d81063Sfei feng - Sun Microsystems - Beijing China * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY 26d8d81063Sfei feng - Sun Microsystems - Beijing China * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 27d8d81063Sfei feng - Sun Microsystems - Beijing China * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, 28d8d81063Sfei feng - Sun Microsystems - Beijing China * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 29d8d81063Sfei feng - Sun Microsystems - Beijing China * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 30d8d81063Sfei feng - Sun Microsystems - Beijing China * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 31d8d81063Sfei feng - Sun Microsystems - Beijing China * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 32d8d81063Sfei feng - Sun Microsystems - Beijing China * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 33d8d81063Sfei feng - Sun Microsystems - Beijing China * THE POSSIBILITY OF SUCH DAMAGES. 34d8d81063Sfei feng - Sun Microsystems - Beijing China */ 35d8d81063Sfei feng - Sun Microsystems - Beijing China 36d8d81063Sfei feng - Sun Microsystems - Beijing China /* 37d8d81063Sfei feng - Sun Microsystems - Beijing China * Definitions for the Marvell 88W8363 Wireless LAN controller. 38d8d81063Sfei feng - Sun Microsystems - Beijing China */ 39d8d81063Sfei feng - Sun Microsystems - Beijing China 40d8d81063Sfei feng - Sun Microsystems - Beijing China #ifndef _MWL_VAR_H 41d8d81063Sfei feng - Sun Microsystems - Beijing China #define _MWL_VAR_H 42d8d81063Sfei feng - Sun Microsystems - Beijing China 43d8d81063Sfei feng - Sun Microsystems - Beijing China #ifdef __cplusplus 44d8d81063Sfei feng - Sun Microsystems - Beijing China extern "C" { 45d8d81063Sfei feng - Sun Microsystems - Beijing China #endif 46d8d81063Sfei feng - Sun Microsystems - Beijing China 47d8d81063Sfei feng - Sun Microsystems - Beijing China #include <sys/note.h> 48d8d81063Sfei feng - Sun Microsystems - Beijing China #include "mwl_reg.h" 49d8d81063Sfei feng - Sun Microsystems - Beijing China 50d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_CMDBUF_SIZE 0x4000 /* size of f/w command buffer */ 51d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_RX_RING_COUNT 256 52d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_TX_RING_COUNT 256 53d8d81063Sfei feng - Sun Microsystems - Beijing China 54d8d81063Sfei feng - Sun Microsystems - Beijing China #ifndef MWL_AGGR_SIZE 55d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_AGGR_SIZE 3839 /* max tx agregation size */ 56d8d81063Sfei feng - Sun Microsystems - Beijing China #endif 57d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_AGEINTERVAL 1 /* poke f/w every sec to age q's */ 58d8d81063Sfei feng - Sun Microsystems - Beijing China 59d8d81063Sfei feng - Sun Microsystems - Beijing China /* 60d8d81063Sfei feng - Sun Microsystems - Beijing China * Define total number of TX queues in the shared memory. 61d8d81063Sfei feng - Sun Microsystems - Beijing China * This count includes the EDCA queues, Block Ack queues, and HCCA queues 62d8d81063Sfei feng - Sun Microsystems - Beijing China * In addition to this, there could be a management packet queue some 63d8d81063Sfei feng - Sun Microsystems - Beijing China * time in the future 64d8d81063Sfei feng - Sun Microsystems - Beijing China */ 65d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_NUM_EDCA_QUEUES 4 66d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_NUM_HCCA_QUEUES 0 67d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_NUM_BA_QUEUES 0 68d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_NUM_MGMT_QUEUES 0 69d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_NUM_ACK_QUEUES 0 70d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_NUM_TX_QUEUES \ 71d8d81063Sfei feng - Sun Microsystems - Beijing China (MWL_NUM_EDCA_QUEUES + MWL_NUM_HCCA_QUEUES + MWL_NUM_BA_QUEUES + \ 72d8d81063Sfei feng - Sun Microsystems - Beijing China MWL_NUM_MGMT_QUEUES + MWL_NUM_ACK_QUEUES) 73d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_MAX_RXWCB_QUEUES 1 74d8d81063Sfei feng - Sun Microsystems - Beijing China 75d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_MAX_SUPPORTED_RATES 12 76d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_MAX_SUPPORTED_MCS 32 77d8d81063Sfei feng - Sun Microsystems - Beijing China 78d8d81063Sfei feng - Sun Microsystems - Beijing China #define PWTAGETRATETABLE20M 14 * 4 79d8d81063Sfei feng - Sun Microsystems - Beijing China #define PWTAGETRATETABLE40M 9 * 4 80d8d81063Sfei feng - Sun Microsystems - Beijing China #define PWTAGETRATETABLE20M_5G 35 * 4 81d8d81063Sfei feng - Sun Microsystems - Beijing China #define PWTAGETRATETABLE40M_5G 16 * 4 82d8d81063Sfei feng - Sun Microsystems - Beijing China 83d8d81063Sfei feng - Sun Microsystems - Beijing China #define MHF_CALDATA 0x0001 /* cal data retrieved */ 84d8d81063Sfei feng - Sun Microsystems - Beijing China #define MHF_FWHANG 0x0002 /* fw appears hung */ 85d8d81063Sfei feng - Sun Microsystems - Beijing China #define MHF_MBSS 0x0004 /* mbss enabled */ 86d8d81063Sfei feng - Sun Microsystems - Beijing China 87d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_CHAN_STURBO 0x00002000 /* 11a static turbo channel only */ 88d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_CHAN_HALF 0x00004000 /* Half rate channel */ 89d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_CHAN_QUARTER 0x00008000 /* Quarter rate channel */ 90d8d81063Sfei feng - Sun Microsystems - Beijing China 91d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_CHAN_HT20 0x00010000 /* HT 20 channel */ 92d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_CHAN_HT40U 0x00020000 /* HT 40 channel w/ ext above */ 93d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_CHAN_HT40D 0x00040000 /* HT 40 channel w/ ext below */ 94d8d81063Sfei feng - Sun Microsystems - Beijing China 95d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_CHAN_FHSS \ 96d8d81063Sfei feng - Sun Microsystems - Beijing China (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_GFSK) 97d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_CHAN_A \ 98d8d81063Sfei feng - Sun Microsystems - Beijing China (IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_OFDM) 99d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_CHAN_B \ 100d8d81063Sfei feng - Sun Microsystems - Beijing China (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_CCK) 101d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_CHAN_PUREG \ 102d8d81063Sfei feng - Sun Microsystems - Beijing China (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_OFDM) 103d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_CHAN_G \ 104d8d81063Sfei feng - Sun Microsystems - Beijing China (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_DYN) 105d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_CHAN_HT40 \ 106d8d81063Sfei feng - Sun Microsystems - Beijing China (IEEE80211_CHAN_HT40U | IEEE80211_CHAN_HT40D) 107d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_CHAN_HT \ 108d8d81063Sfei feng - Sun Microsystems - Beijing China (IEEE80211_CHAN_HT20 | IEEE80211_CHAN_HT40) 109d8d81063Sfei feng - Sun Microsystems - Beijing China 110d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_CHAN_108A \ 111d8d81063Sfei feng - Sun Microsystems - Beijing China (IEEE80211_CHAN_A | IEEE80211_CHAN_TURBO) 112d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_CHAN_108G \ 113d8d81063Sfei feng - Sun Microsystems - Beijing China (IEEE80211_CHAN_PUREG | IEEE80211_CHAN_TURBO) 114d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_CHAN_ST \ 115d8d81063Sfei feng - Sun Microsystems - Beijing China (IEEE80211_CHAN_108A | IEEE80211_CHAN_STURBO) 116d8d81063Sfei feng - Sun Microsystems - Beijing China 117d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_MODE_STURBO_A 7 118d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_MODE_11NA 8 /* 5GHz, w/ HT */ 119d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_MODE_11NG 9 /* 2GHz, w/ HT */ 120d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_MODE_HALF 10 /* OFDM, 1/2x clock */ 121d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_MODE_QUARTER 11 /* OFDM, 1/4x clock */ 122d8d81063Sfei feng - Sun Microsystems - Beijing China 123d8d81063Sfei feng - Sun Microsystems - Beijing China 124d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_IS_CHAN_2GHZ_F(_c) \ 125d8d81063Sfei feng - Sun Microsystems - Beijing China (((_c)->ic_flags & IEEE80211_CHAN_2GHZ) != 0) 126d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_IS_CHAN_5GHZ_F(_c) \ 127d8d81063Sfei feng - Sun Microsystems - Beijing China (((_c)->ic_flags & IEEE80211_CHAN_5GHZ) != 0) 128d8d81063Sfei feng - Sun Microsystems - Beijing China 129d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_IS_CHAN_FHSS(_c) \ 130d8d81063Sfei feng - Sun Microsystems - Beijing China (((_c)->ic_flags & IEEE80211_CHAN_FHSS) == IEEE80211_CHAN_FHSS) 131d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_IS_CHAN_A(_c) \ 132d8d81063Sfei feng - Sun Microsystems - Beijing China (((_c)->ic_flags & IEEE80211_CHAN_A) == IEEE80211_CHAN_A) 133d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_IS_CHAN_B(_c) \ 134d8d81063Sfei feng - Sun Microsystems - Beijing China (((_c)->ic_flags & IEEE80211_CHAN_B) == IEEE80211_CHAN_B) 135d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_IS_CHAN_PUREG(_c) \ 136d8d81063Sfei feng - Sun Microsystems - Beijing China (((_c)->ic_flags & IEEE80211_CHAN_PUREG) == IEEE80211_CHAN_PUREG) 137d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_IS_CHAN_G(_c) \ 138d8d81063Sfei feng - Sun Microsystems - Beijing China (((_c)->ic_flags & IEEE80211_CHAN_G) == IEEE80211_CHAN_G) 139d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_IS_CHAN_ANYG(_c) \ 140d8d81063Sfei feng - Sun Microsystems - Beijing China (IEEE80211_IS_CHAN_PUREG(_c) || IEEE80211_IS_CHAN_G(_c)) 141d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_IS_CHAN_ST(_c) \ 142d8d81063Sfei feng - Sun Microsystems - Beijing China (((_c)->ic_flags & IEEE80211_CHAN_ST) == IEEE80211_CHAN_ST) 143d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_IS_CHAN_108A(_c) \ 144d8d81063Sfei feng - Sun Microsystems - Beijing China (((_c)->ic_flags & IEEE80211_CHAN_108A) == IEEE80211_CHAN_108A) 145d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_IS_CHAN_108G(_c) \ 146d8d81063Sfei feng - Sun Microsystems - Beijing China (((_c)->ic_flags & IEEE80211_CHAN_108G) == IEEE80211_CHAN_108G) 147d8d81063Sfei feng - Sun Microsystems - Beijing China 148d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_IS_CHAN_HTA(_c) \ 149d8d81063Sfei feng - Sun Microsystems - Beijing China (IEEE80211_IS_CHAN_5GHZ_F(_c) && \ 150d8d81063Sfei feng - Sun Microsystems - Beijing China ((_c)->ic_flags & IEEE80211_CHAN_HT) != 0) 151d8d81063Sfei feng - Sun Microsystems - Beijing China 152d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_IS_CHAN_HTG(_c) \ 153d8d81063Sfei feng - Sun Microsystems - Beijing China (IEEE80211_IS_CHAN_2GHZ_F(_c) && \ 154d8d81063Sfei feng - Sun Microsystems - Beijing China ((_c)->ic_flags & IEEE80211_CHAN_HT) != 0) 155d8d81063Sfei feng - Sun Microsystems - Beijing China 156d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_IS_CHAN_TURBO(_c) \ 157d8d81063Sfei feng - Sun Microsystems - Beijing China (((_c)->ic_flags & IEEE80211_CHAN_TURBO) != 0) 158d8d81063Sfei feng - Sun Microsystems - Beijing China 159d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_IS_CHAN_HALF(_c) \ 160d8d81063Sfei feng - Sun Microsystems - Beijing China (((_c)->ic_flags & IEEE80211_CHAN_HALF) != 0) 161d8d81063Sfei feng - Sun Microsystems - Beijing China 162d8d81063Sfei feng - Sun Microsystems - Beijing China #define IEEE80211_IS_CHAN_QUARTER(_c) \ 163d8d81063Sfei feng - Sun Microsystems - Beijing China (((_c)->ic_flags & IEEE80211_CHAN_QUARTER) != 0) 164d8d81063Sfei feng - Sun Microsystems - Beijing China 165d8d81063Sfei feng - Sun Microsystems - Beijing China /* WME stream classes */ 166d8d81063Sfei feng - Sun Microsystems - Beijing China #define WME_AC_BE 0 /* best effort */ 167d8d81063Sfei feng - Sun Microsystems - Beijing China #define WME_AC_BK 1 /* background */ 168d8d81063Sfei feng - Sun Microsystems - Beijing China #define WME_AC_VI 2 /* video */ 169d8d81063Sfei feng - Sun Microsystems - Beijing China #define WME_AC_VO 3 /* voice */ 170d8d81063Sfei feng - Sun Microsystems - Beijing China 171d8d81063Sfei feng - Sun Microsystems - Beijing China /* 172d8d81063Sfei feng - Sun Microsystems - Beijing China * Transmit queue assignment. 173d8d81063Sfei feng - Sun Microsystems - Beijing China */ 174d8d81063Sfei feng - Sun Microsystems - Beijing China enum { 175d8d81063Sfei feng - Sun Microsystems - Beijing China MWL_WME_AC_BK = 0, /* background access category */ 176d8d81063Sfei feng - Sun Microsystems - Beijing China MWL_WME_AC_BE = 1, /* best effort access category */ 177d8d81063Sfei feng - Sun Microsystems - Beijing China MWL_WME_AC_VI = 2, /* video access category */ 178d8d81063Sfei feng - Sun Microsystems - Beijing China MWL_WME_AC_VO = 3, /* voice access category */ 179d8d81063Sfei feng - Sun Microsystems - Beijing China }; 180d8d81063Sfei feng - Sun Microsystems - Beijing China 181d8d81063Sfei feng - Sun Microsystems - Beijing China const char *mwl_wme_acnames[] = { 182d8d81063Sfei feng - Sun Microsystems - Beijing China "WME_AC_BE", 183d8d81063Sfei feng - Sun Microsystems - Beijing China "WME_AC_BK", 184d8d81063Sfei feng - Sun Microsystems - Beijing China "WME_AC_VI", 185d8d81063Sfei feng - Sun Microsystems - Beijing China "WME_AC_VO", 186d8d81063Sfei feng - Sun Microsystems - Beijing China "WME_UPSD", 187d8d81063Sfei feng - Sun Microsystems - Beijing China }; 188d8d81063Sfei feng - Sun Microsystems - Beijing China 189d8d81063Sfei feng - Sun Microsystems - Beijing China /* 190d8d81063Sfei feng - Sun Microsystems - Beijing China * Set Antenna Configuration (legacy operation). 191d8d81063Sfei feng - Sun Microsystems - Beijing China * 192d8d81063Sfei feng - Sun Microsystems - Beijing China * The RX antenna can be selected using the the bitmask 193d8d81063Sfei feng - Sun Microsystems - Beijing China * ant (bit 0 = antenna 1, bit 1 = antenna 2, etc.) 194d8d81063Sfei feng - Sun Microsystems - Beijing China * (diversity?XXX) 195d8d81063Sfei feng - Sun Microsystems - Beijing China */ 196d8d81063Sfei feng - Sun Microsystems - Beijing China typedef enum { 197d8d81063Sfei feng - Sun Microsystems - Beijing China WL_ANTENNATYPE_RX = 1, 198d8d81063Sfei feng - Sun Microsystems - Beijing China WL_ANTENNATYPE_TX = 2, 199d8d81063Sfei feng - Sun Microsystems - Beijing China } MWL_HAL_ANTENNA; 200d8d81063Sfei feng - Sun Microsystems - Beijing China 201d8d81063Sfei feng - Sun Microsystems - Beijing China /* 202d8d81063Sfei feng - Sun Microsystems - Beijing China * Set Radio Configuration. 203d8d81063Sfei feng - Sun Microsystems - Beijing China * 204d8d81063Sfei feng - Sun Microsystems - Beijing China * onoff != 0 turns radio on; otherwise off. 205d8d81063Sfei feng - Sun Microsystems - Beijing China * if radio is enabled, the preamble is set too. 206d8d81063Sfei feng - Sun Microsystems - Beijing China */ 207d8d81063Sfei feng - Sun Microsystems - Beijing China typedef enum { 208d8d81063Sfei feng - Sun Microsystems - Beijing China WL_LONG_PREAMBLE = 1, 209d8d81063Sfei feng - Sun Microsystems - Beijing China WL_SHORT_PREAMBLE = 3, 210d8d81063Sfei feng - Sun Microsystems - Beijing China WL_AUTO_PREAMBLE = 5, 211d8d81063Sfei feng - Sun Microsystems - Beijing China } MWL_HAL_PREAMBLE; 212d8d81063Sfei feng - Sun Microsystems - Beijing China 213d8d81063Sfei feng - Sun Microsystems - Beijing China /* 214d8d81063Sfei feng - Sun Microsystems - Beijing China * Transmit rate control. Rate codes with bit 0x80 set are 215d8d81063Sfei feng - Sun Microsystems - Beijing China * interpreted as MCS codes (this limits us to 0-127). The 216d8d81063Sfei feng - Sun Microsystems - Beijing China * transmit rate can be set to a single fixed rate or can 217d8d81063Sfei feng - Sun Microsystems - Beijing China * be configured to start at an initial rate and drop based 218d8d81063Sfei feng - Sun Microsystems - Beijing China * on retry counts. 219d8d81063Sfei feng - Sun Microsystems - Beijing China */ 220d8d81063Sfei feng - Sun Microsystems - Beijing China typedef enum { 221d8d81063Sfei feng - Sun Microsystems - Beijing China RATE_AUTO = 0, /* rate selected by firmware */ 222d8d81063Sfei feng - Sun Microsystems - Beijing China RATE_FIXED = 2, /* rate fixed */ 223d8d81063Sfei feng - Sun Microsystems - Beijing China RATE_FIXED_DROP = 1, /* rate starts fixed but may drop */ 224d8d81063Sfei feng - Sun Microsystems - Beijing China } MWL_HAL_TXRATE_HANDLING; 225d8d81063Sfei feng - Sun Microsystems - Beijing China 226d8d81063Sfei feng - Sun Microsystems - Beijing China typedef enum { 227d8d81063Sfei feng - Sun Microsystems - Beijing China CSMODE_CONSERVATIVE = 0, 228d8d81063Sfei feng - Sun Microsystems - Beijing China CSMODE_AGGRESSIVE = 1, 229d8d81063Sfei feng - Sun Microsystems - Beijing China CSMODE_AUTO_ENA = 2, 230d8d81063Sfei feng - Sun Microsystems - Beijing China CSMODE_AUTO_DIS = 3, 231d8d81063Sfei feng - Sun Microsystems - Beijing China } MWL_HAL_CSMODE; 232d8d81063Sfei feng - Sun Microsystems - Beijing China 233d8d81063Sfei feng - Sun Microsystems - Beijing China #pragma pack(1) 234d8d81063Sfei feng - Sun Microsystems - Beijing China 235d8d81063Sfei feng - Sun Microsystems - Beijing China /* 236d8d81063Sfei feng - Sun Microsystems - Beijing China * Device revision information. 237d8d81063Sfei feng - Sun Microsystems - Beijing China */ 238d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct { 239d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t mh_devid; /* PCI device ID */ 240d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t mh_subvendorid; /* PCI subvendor ID */ 241d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t mh_macRev; /* MAC revision */ 242d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t mh_phyRev; /* PHY revision */ 243d8d81063Sfei feng - Sun Microsystems - Beijing China } MWL_DIAG_REVS; 244d8d81063Sfei feng - Sun Microsystems - Beijing China 245d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct { 246d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t freqLow; 247d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t freqHigh; 248d8d81063Sfei feng - Sun Microsystems - Beijing China int nchannels; 249d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_hal_channel { 250d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t freq; /* channel center */ 251d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t ieee; /* channel number */ 252d8d81063Sfei feng - Sun Microsystems - Beijing China int8_t maxTxPow; /* max tx power (dBm) */ 253d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t targetPowers[4]; /* target powers (dBm) */ 254d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_HAL_MAXCHAN 40 255d8d81063Sfei feng - Sun Microsystems - Beijing China } channels[MWL_HAL_MAXCHAN]; 256d8d81063Sfei feng - Sun Microsystems - Beijing China } MWL_HAL_CHANNELINFO; 257d8d81063Sfei feng - Sun Microsystems - Beijing China 258d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct { 259d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t FreqBand : 6, 260d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_FREQ_BAND_2DOT4GHZ 0x1 261d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_FREQ_BAND_5GHZ 0x4 262d8d81063Sfei feng - Sun Microsystems - Beijing China ChnlWidth: 5, 263d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_CH_10_MHz_WIDTH 0x1 264d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_CH_20_MHz_WIDTH 0x2 265d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_CH_40_MHz_WIDTH 0x4 266d8d81063Sfei feng - Sun Microsystems - Beijing China ExtChnlOffset: 2, 267d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_EXT_CH_NONE 0x0 268d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_EXT_CH_ABOVE_CTRL_CH 0x1 269d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_EXT_CH_BELOW_CTRL_CH 0x3 270d8d81063Sfei feng - Sun Microsystems - Beijing China : 19; /* reserved */ 271d8d81063Sfei feng - Sun Microsystems - Beijing China } MWL_HAL_CHANNEL_FLAGS; 272d8d81063Sfei feng - Sun Microsystems - Beijing China 273d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct { 274d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t channel; 275d8d81063Sfei feng - Sun Microsystems - Beijing China MWL_HAL_CHANNEL_FLAGS channelFlags; 276d8d81063Sfei feng - Sun Microsystems - Beijing China } MWL_HAL_CHANNEL; 277d8d81063Sfei feng - Sun Microsystems - Beijing China 278d8d81063Sfei feng - Sun Microsystems - Beijing China /* 279d8d81063Sfei feng - Sun Microsystems - Beijing China * Channels are specified by frequency and attributes. 280d8d81063Sfei feng - Sun Microsystems - Beijing China */ 281d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_channel { 282d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t ic_flags; /* see below */ 283d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t ic_freq; /* setting in Mhz */ 284d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t ic_ieee; /* IEEE channel number */ 285d8d81063Sfei feng - Sun Microsystems - Beijing China int8_t ic_maxregpower; /* maximum regulatory tx power in dBm */ 286d8d81063Sfei feng - Sun Microsystems - Beijing China int8_t ic_maxpower; /* maximum tx power in .5 dBm */ 287d8d81063Sfei feng - Sun Microsystems - Beijing China int8_t ic_minpower; /* minimum tx power in .5 dBm */ 288d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t ic_state; /* dynamic state */ 289d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t ic_extieee; /* HT40 extension channel number */ 290d8d81063Sfei feng - Sun Microsystems - Beijing China int8_t ic_maxantgain; /* maximum antenna gain in .5 dBm */ 291d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t ic_pad; 292d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t ic_devdata; /* opaque device/driver data */ 293d8d81063Sfei feng - Sun Microsystems - Beijing China }; 294d8d81063Sfei feng - Sun Microsystems - Beijing China 295d8d81063Sfei feng - Sun Microsystems - Beijing China /* 296d8d81063Sfei feng - Sun Microsystems - Beijing China * Regulatory Information. 297d8d81063Sfei feng - Sun Microsystems - Beijing China */ 298d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_regdomain { 299d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t regdomain; /* SKU */ 300d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t country; /* ISO country code */ 301d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t location; /* I (indoor), O (outdoor), other */ 302d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t ecm; /* Extended Channel Mode */ 303d8d81063Sfei feng - Sun Microsystems - Beijing China char isocc[2]; /* country code string */ 304d8d81063Sfei feng - Sun Microsystems - Beijing China short pad[2]; 305d8d81063Sfei feng - Sun Microsystems - Beijing China }; 306d8d81063Sfei feng - Sun Microsystems - Beijing China 307d8d81063Sfei feng - Sun Microsystems - Beijing China /* 308d8d81063Sfei feng - Sun Microsystems - Beijing China * Get Hardware/Firmware capabilities. 309d8d81063Sfei feng - Sun Microsystems - Beijing China */ 310d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_hal_hwspec { 311d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t hwVersion; /* version of the HW */ 312d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t hostInterface; /* host interface */ 313d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t maxNumWCB; /* max # of WCB FW handles */ 314d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t maxNumMCAddr; /* max # of mcast addresse FW handles */ 315d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t maxNumTxWcb; /* max # of tx descs per WCB */ 316d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t macAddr[6]; /* MAC address programmed in HW */ 317d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t regionCode; /* EEPROM region code */ 318d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t numAntennas; /* Number of antenna used */ 319d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t fwReleaseNumber; /* firmware release number */ 320d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t wcbBase0; 321d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t rxDescRead; 322d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t rxDescWrite; 323d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t ulFwAwakeCookie; 324d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t wcbBase[MWL_NUM_TX_QUEUES - MWL_NUM_ACK_QUEUES]; 325d8d81063Sfei feng - Sun Microsystems - Beijing China }; 326d8d81063Sfei feng - Sun Microsystems - Beijing China 327d8d81063Sfei feng - Sun Microsystems - Beijing China /* 328d8d81063Sfei feng - Sun Microsystems - Beijing China * Crypto Configuration. 329d8d81063Sfei feng - Sun Microsystems - Beijing China */ 330d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct { 331d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t pad; 332d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t keyTypeId; 333d8d81063Sfei feng - Sun Microsystems - Beijing China #define KEY_TYPE_ID_WEP 0 334d8d81063Sfei feng - Sun Microsystems - Beijing China #define KEY_TYPE_ID_TKIP 1 335d8d81063Sfei feng - Sun Microsystems - Beijing China #define KEY_TYPE_ID_AES 2 /* AES-CCMP */ 336d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t keyFlags; 337d8d81063Sfei feng - Sun Microsystems - Beijing China #define KEY_FLAG_INUSE 0x00000001 /* indicate key is in use */ 338d8d81063Sfei feng - Sun Microsystems - Beijing China #define KEY_FLAG_RXGROUPKEY 0x00000002 /* Group key for RX only */ 339d8d81063Sfei feng - Sun Microsystems - Beijing China #define KEY_FLAG_TXGROUPKEY 0x00000004 /* Group key for TX */ 340d8d81063Sfei feng - Sun Microsystems - Beijing China #define KEY_FLAG_PAIRWISE 0x00000008 /* pairwise */ 341d8d81063Sfei feng - Sun Microsystems - Beijing China #define KEY_FLAG_RXONLY 0x00000010 /* only used for RX */ 342d8d81063Sfei feng - Sun Microsystems - Beijing China #define KEY_FLAG_AUTHENTICATOR 0x00000020 /* Key is for Authenticator */ 343d8d81063Sfei feng - Sun Microsystems - Beijing China #define KEY_FLAG_TSC_VALID 0x00000040 /* Sequence counters valid */ 344d8d81063Sfei feng - Sun Microsystems - Beijing China #define KEY_FLAG_WEP_TXKEY 0x01000000 /* Tx key for WEP */ 345d8d81063Sfei feng - Sun Microsystems - Beijing China #define KEY_FLAG_MICKEY_VALID 0x02000000 /* Tx/Rx MIC keys are valid */ 346d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t keyIndex; /* for WEP only; actual key index */ 347d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t keyLen; /* key size in bytes */ 348d8d81063Sfei feng - Sun Microsystems - Beijing China union { /* key material, keyLen gives size */ 349d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t wep[16]; /* enough for 128 bits */ 350d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t aes[16]; 351d8d81063Sfei feng - Sun Microsystems - Beijing China struct { 352d8d81063Sfei feng - Sun Microsystems - Beijing China /* NB: group or pairwise key is determined by keyFlags */ 353d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t keyMaterial[16]; 354d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t txMic[8]; 355d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t rxMic[8]; 356d8d81063Sfei feng - Sun Microsystems - Beijing China struct { 357d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t low; 358d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t high; 359d8d81063Sfei feng - Sun Microsystems - Beijing China } rsc; 360d8d81063Sfei feng - Sun Microsystems - Beijing China struct { 361d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t low; 362d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t high; 363d8d81063Sfei feng - Sun Microsystems - Beijing China } tsc; 364d8d81063Sfei feng - Sun Microsystems - Beijing China } tkip; 365d8d81063Sfei feng - Sun Microsystems - Beijing China } key; 366d8d81063Sfei feng - Sun Microsystems - Beijing China } MWL_HAL_KEYVAL; 367d8d81063Sfei feng - Sun Microsystems - Beijing China 368d8d81063Sfei feng - Sun Microsystems - Beijing China /* 369d8d81063Sfei feng - Sun Microsystems - Beijing China * Supply tx/rx dma-related settings to the firmware. 370d8d81063Sfei feng - Sun Microsystems - Beijing China */ 371d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_hal_txrxdma { 372d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t maxNumWCB; /* max # of WCB FW handles */ 373d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t maxNumTxWcb; /* max # of tx descs per WCB */ 374d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t rxDescRead; 375d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t rxDescWrite; 376d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t wcbBase[MWL_NUM_TX_QUEUES - MWL_NUM_ACK_QUEUES]; 377d8d81063Sfei feng - Sun Microsystems - Beijing China }; 378d8d81063Sfei feng - Sun Microsystems - Beijing China 379d8d81063Sfei feng - Sun Microsystems - Beijing China /* 380d8d81063Sfei feng - Sun Microsystems - Beijing China * Inform the firmware of a new association station. 381d8d81063Sfei feng - Sun Microsystems - Beijing China * The address is the MAC address of the peer station. 382d8d81063Sfei feng - Sun Microsystems - Beijing China * The AID is supplied sans the 0xc000 bits. The station 383d8d81063Sfei feng - Sun Microsystems - Beijing China * ID is defined by the caller. The peer information must 384d8d81063Sfei feng - Sun Microsystems - Beijing China * be supplied. 385d8d81063Sfei feng - Sun Microsystems - Beijing China * 386d8d81063Sfei feng - Sun Microsystems - Beijing China * NB: All values are in host byte order; any byte swapping 387d8d81063Sfei feng - Sun Microsystems - Beijing China * is handled by the hal. 388d8d81063Sfei feng - Sun Microsystems - Beijing China */ 389d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct { 390d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t LegacyRateBitMap; 391d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t HTRateBitMap; 392d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t CapInfo; 393d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t HTCapabilitiesInfo; 394d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t MacHTParamInfo; 395d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t Rev; 396d8d81063Sfei feng - Sun Microsystems - Beijing China struct { 397d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t ControlChan; 398d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t AddChan; 399d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t OpMode; 400d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t stbc; 401d8d81063Sfei feng - Sun Microsystems - Beijing China } AddHtInfo; 402d8d81063Sfei feng - Sun Microsystems - Beijing China } MWL_HAL_PEERINFO; 403d8d81063Sfei feng - Sun Microsystems - Beijing China 404d8d81063Sfei feng - Sun Microsystems - Beijing China typedef struct { 405d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t McastRate; /* rate for multicast frames */ 406d8d81063Sfei feng - Sun Microsystems - Beijing China #define RATE_MCS 0x80 /* rate is an MCS index */ 407d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t MgtRate; /* rate for management frames */ 408d8d81063Sfei feng - Sun Microsystems - Beijing China struct { 409d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t TryCount; /* try this many times */ 410d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t Rate; /* use this tx rate */ 411d8d81063Sfei feng - Sun Microsystems - Beijing China } RateSeries[4]; /* rate series */ 412d8d81063Sfei feng - Sun Microsystems - Beijing China } MWL_HAL_TXRATE; 413d8d81063Sfei feng - Sun Microsystems - Beijing China 414d8d81063Sfei feng - Sun Microsystems - Beijing China #pragma pack() 415d8d81063Sfei feng - Sun Microsystems - Beijing China 416d8d81063Sfei feng - Sun Microsystems - Beijing China /* driver-specific node state */ 417d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_node { 418d8d81063Sfei feng - Sun Microsystems - Beijing China struct ieee80211_node mn_node; /* base class */ 419d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_ant_info mn_ai; /* antenna info */ 420d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t mn_avgrssi; /* average rssi over all rx frames */ 421d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t mn_staid; /* firmware station id */ 422d8d81063Sfei feng - Sun Microsystems - Beijing China }; 423d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_NODE(ni) ((struct mwl_node *)(ni)) 424d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_NODE_CONST(ni) ((const struct mwl_node *)(ni)) 425d8d81063Sfei feng - Sun Microsystems - Beijing China 426d8d81063Sfei feng - Sun Microsystems - Beijing China /* 427d8d81063Sfei feng - Sun Microsystems - Beijing China * DMA state for tx/rx. 428d8d81063Sfei feng - Sun Microsystems - Beijing China */ 429d8d81063Sfei feng - Sun Microsystems - Beijing China 430d8d81063Sfei feng - Sun Microsystems - Beijing China /* 431d8d81063Sfei feng - Sun Microsystems - Beijing China * Software backed version of tx/rx descriptors. We keep 432d8d81063Sfei feng - Sun Microsystems - Beijing China * the software state out of the h/w descriptor structure 433d8d81063Sfei feng - Sun Microsystems - Beijing China * so that may be allocated in uncached memory w/o paying 434d8d81063Sfei feng - Sun Microsystems - Beijing China * performance hit. 435d8d81063Sfei feng - Sun Microsystems - Beijing China */ 436d8d81063Sfei feng - Sun Microsystems - Beijing China struct dma_area { 437d8d81063Sfei feng - Sun Microsystems - Beijing China ddi_acc_handle_t acc_hdl; /* handle for memory */ 438d8d81063Sfei feng - Sun Microsystems - Beijing China caddr_t mem_va; /* CPU VA of memory */ 439d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t nslots; /* number of slots */ 440d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t size; /* size per slot */ 441d8d81063Sfei feng - Sun Microsystems - Beijing China size_t alength; /* allocated size */ 442d8d81063Sfei feng - Sun Microsystems - Beijing China ddi_dma_handle_t dma_hdl; /* DMA handle */ 443d8d81063Sfei feng - Sun Microsystems - Beijing China offset_t offset; /* relative to handle */ 444d8d81063Sfei feng - Sun Microsystems - Beijing China ddi_dma_cookie_t cookie; /* associated cookie */ 445d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t ncookies; /* must be 1 */ 446d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t token; /* arbitrary identifier */ 447d8d81063Sfei feng - Sun Microsystems - Beijing China }; 448d8d81063Sfei feng - Sun Microsystems - Beijing China 449d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_rxbuf { 450d8d81063Sfei feng - Sun Microsystems - Beijing China struct dma_area rxbuf_dma; /* dma area for buf */ 451d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t bf_baddr; 452d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t *bf_mem; 453d8d81063Sfei feng - Sun Microsystems - Beijing China void *bf_desc; 454d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t bf_daddr; 455d8d81063Sfei feng - Sun Microsystems - Beijing China }; 456d8d81063Sfei feng - Sun Microsystems - Beijing China 457d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_rx_ring { 458d8d81063Sfei feng - Sun Microsystems - Beijing China struct dma_area rxdesc_dma; 459d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t physaddr; 460d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_rxdesc *desc; 461d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_rxbuf *buf; 462d8d81063Sfei feng - Sun Microsystems - Beijing China int count; 463d8d81063Sfei feng - Sun Microsystems - Beijing China int cur; 464d8d81063Sfei feng - Sun Microsystems - Beijing China int next; 465d8d81063Sfei feng - Sun Microsystems - Beijing China }; 466d8d81063Sfei feng - Sun Microsystems - Beijing China 467d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_txbuf { 468d8d81063Sfei feng - Sun Microsystems - Beijing China struct dma_area txbuf_dma; 469d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t bf_baddr; /* physical addr of buf */ 470d8d81063Sfei feng - Sun Microsystems - Beijing China uint8_t *bf_mem; 471d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t bf_daddr; /* physical addr of desc */ 472d8d81063Sfei feng - Sun Microsystems - Beijing China void *bf_desc; /* h/w descriptor */ 473d8d81063Sfei feng - Sun Microsystems - Beijing China int bf_nseg; 474d8d81063Sfei feng - Sun Microsystems - Beijing China struct ieee80211_node *bf_node; 475d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_txq *bf_txq; /* backpointer to tx q/ring */ 476d8d81063Sfei feng - Sun Microsystems - Beijing China }; 477d8d81063Sfei feng - Sun Microsystems - Beijing China 478d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_tx_ring { 479d8d81063Sfei feng - Sun Microsystems - Beijing China struct dma_area txdesc_dma; 480d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t physaddr; 481d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_txdesc *desc; 482d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_txbuf *buf; 483d8d81063Sfei feng - Sun Microsystems - Beijing China int qnum; /* f/w q number */ 484d8d81063Sfei feng - Sun Microsystems - Beijing China int txpri; /* f/w tx priority */ 485d8d81063Sfei feng - Sun Microsystems - Beijing China int count; 486d8d81063Sfei feng - Sun Microsystems - Beijing China int queued; 487d8d81063Sfei feng - Sun Microsystems - Beijing China int cur; 488d8d81063Sfei feng - Sun Microsystems - Beijing China int next; 489d8d81063Sfei feng - Sun Microsystems - Beijing China int stat; 490d8d81063Sfei feng - Sun Microsystems - Beijing China }; 491d8d81063Sfei feng - Sun Microsystems - Beijing China 492d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_softc { 493d8d81063Sfei feng - Sun Microsystems - Beijing China ieee80211com_t sc_ic; 494d8d81063Sfei feng - Sun Microsystems - Beijing China dev_info_t *sc_dev; 495d8d81063Sfei feng - Sun Microsystems - Beijing China 496d8d81063Sfei feng - Sun Microsystems - Beijing China /* ddi reg handler */ 497d8d81063Sfei feng - Sun Microsystems - Beijing China ddi_acc_handle_t sc_cfg_handle; 498d8d81063Sfei feng - Sun Microsystems - Beijing China caddr_t sc_cfg_base; 499d8d81063Sfei feng - Sun Microsystems - Beijing China 500d8d81063Sfei feng - Sun Microsystems - Beijing China /* bar0 handler */ 501d8d81063Sfei feng - Sun Microsystems - Beijing China ddi_acc_handle_t sc_mem_handle; 502d8d81063Sfei feng - Sun Microsystems - Beijing China caddr_t sc_mem_base; 503d8d81063Sfei feng - Sun Microsystems - Beijing China 504d8d81063Sfei feng - Sun Microsystems - Beijing China /* bar1 handler */ 505d8d81063Sfei feng - Sun Microsystems - Beijing China ddi_acc_handle_t sc_io_handle; 506d8d81063Sfei feng - Sun Microsystems - Beijing China caddr_t sc_io_base; 507d8d81063Sfei feng - Sun Microsystems - Beijing China 508d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t sc_cachelsz; 509d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t sc_dmabuf_size; 510d8d81063Sfei feng - Sun Microsystems - Beijing China uchar_t sc_macaddr[6]; 511d8d81063Sfei feng - Sun Microsystems - Beijing China 512d8d81063Sfei feng - Sun Microsystems - Beijing China struct dma_area sc_cmd_dma; 513d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t *sc_cmd_mem; /* f/w cmd buffer */ 514d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t sc_cmd_dmaaddr; /* physaddr of cmd buffer */ 515d8d81063Sfei feng - Sun Microsystems - Beijing China 516d8d81063Sfei feng - Sun Microsystems - Beijing China int sc_hw_flags; 517d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t sc_flags; 518d8d81063Sfei feng - Sun Microsystems - Beijing China 519d8d81063Sfei feng - Sun Microsystems - Beijing China /* SDRAM addr in the chipset */ 520d8d81063Sfei feng - Sun Microsystems - Beijing China int sc_SDRAMSIZE_Addr; 521d8d81063Sfei feng - Sun Microsystems - Beijing China 522d8d81063Sfei feng - Sun Microsystems - Beijing China MWL_HAL_CHANNELINFO sc_20M; 523d8d81063Sfei feng - Sun Microsystems - Beijing China MWL_HAL_CHANNELINFO sc_40M; 524d8d81063Sfei feng - Sun Microsystems - Beijing China MWL_HAL_CHANNELINFO sc_20M_5G; 525d8d81063Sfei feng - Sun Microsystems - Beijing China MWL_HAL_CHANNELINFO sc_40M_5G; 526d8d81063Sfei feng - Sun Microsystems - Beijing China 527d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_hal_hwspec sc_hwspecs; /* h/w capabilities */ 528d8d81063Sfei feng - Sun Microsystems - Beijing China MWL_DIAG_REVS sc_revs; 529d8d81063Sfei feng - Sun Microsystems - Beijing China 530d8d81063Sfei feng - Sun Microsystems - Beijing China int sc_nchans; /* # entries in ic_channels */ 531d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_channel sc_channels[IEEE80211_CHAN_MAX]; 532d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_channel *sc_cur_chan; 533d8d81063Sfei feng - Sun Microsystems - Beijing China MWL_HAL_CHANNEL sc_curchan; 534d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_regdomain sc_regdomain; /* regulatory data */ 535d8d81063Sfei feng - Sun Microsystems - Beijing China 536d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_rx_ring sc_rxring; 537d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_tx_ring sc_txring[MWL_NUM_TX_QUEUES]; 538d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_tx_ring *sc_ac2q[5]; /* WME AC -> h/w q map */ 539d8d81063Sfei feng - Sun Microsystems - Beijing China 540d8d81063Sfei feng - Sun Microsystems - Beijing China struct mwl_hal_txrxdma sc_hwdma; /* h/w dma setup */ 541d8d81063Sfei feng - Sun Microsystems - Beijing China 542d8d81063Sfei feng - Sun Microsystems - Beijing China /* interrupt */ 543d8d81063Sfei feng - Sun Microsystems - Beijing China ddi_iblock_cookie_t sc_iblock; 544d8d81063Sfei feng - Sun Microsystems - Beijing China ddi_softint_handle_t sc_softintr_hdl; 545d8d81063Sfei feng - Sun Microsystems - Beijing China ddi_intr_handle_t *sc_intr_htable; 546d8d81063Sfei feng - Sun Microsystems - Beijing China uint_t sc_intr_pri; 547d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t sc_imask; /* interrupt mask */ 548d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t sc_hal_imask; /* interrupt mask copy */ 549d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t sc_rx_pend; 550d8d81063Sfei feng - Sun Microsystems - Beijing China 551d8d81063Sfei feng - Sun Microsystems - Beijing China /* mutex lock */ 552d8d81063Sfei feng - Sun Microsystems - Beijing China kmutex_t sc_glock; 553d8d81063Sfei feng - Sun Microsystems - Beijing China kmutex_t sc_rxlock; 554d8d81063Sfei feng - Sun Microsystems - Beijing China kmutex_t sc_txlock; 555d8d81063Sfei feng - Sun Microsystems - Beijing China 556d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t sc_rxantenna; /* rx antenna */ 557d8d81063Sfei feng - Sun Microsystems - Beijing China uint16_t sc_txantenna; /* tx antenna */ 558d8d81063Sfei feng - Sun Microsystems - Beijing China 559d8d81063Sfei feng - Sun Microsystems - Beijing China timeout_id_t sc_scan_id; 560d8d81063Sfei feng - Sun Microsystems - Beijing China 561d8d81063Sfei feng - Sun Microsystems - Beijing China /* kstats */ 562d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t sc_tx_nobuf; 563d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t sc_rx_nobuf; 564d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t sc_tx_err; 565d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t sc_rx_err; 566d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t sc_tx_retries; 567d8d81063Sfei feng - Sun Microsystems - Beijing China 568d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t sc_need_sched; 569d8d81063Sfei feng - Sun Microsystems - Beijing China uint32_t sc_rcr; 570d8d81063Sfei feng - Sun Microsystems - Beijing China 571d8d81063Sfei feng - Sun Microsystems - Beijing China int (*sc_newstate)(struct ieee80211com *, 572d8d81063Sfei feng - Sun Microsystems - Beijing China enum ieee80211_state, int); 573d8d81063Sfei feng - Sun Microsystems - Beijing China }; 574d8d81063Sfei feng - Sun Microsystems - Beijing China 575d8d81063Sfei feng - Sun Microsystems - Beijing China #define mwl_mem_write4(sc, off, x) \ 576d8d81063Sfei feng - Sun Microsystems - Beijing China ddi_put32((sc)->sc_mem_handle, \ 577d8d81063Sfei feng - Sun Microsystems - Beijing China (uint32_t *)((sc)->sc_mem_base + (off)), x) 578d8d81063Sfei feng - Sun Microsystems - Beijing China 579d8d81063Sfei feng - Sun Microsystems - Beijing China #define mwl_mem_read4(sc, off) \ 580d8d81063Sfei feng - Sun Microsystems - Beijing China ddi_get32((sc)->sc_mem_handle, \ 581d8d81063Sfei feng - Sun Microsystems - Beijing China (uint32_t *)((sc)->sc_mem_base + (off))) 582d8d81063Sfei feng - Sun Microsystems - Beijing China 583d8d81063Sfei feng - Sun Microsystems - Beijing China #define mwl_ctl_write4(sc, off, x) \ 584d8d81063Sfei feng - Sun Microsystems - Beijing China ddi_put32((sc)->sc_io_handle, \ 585d8d81063Sfei feng - Sun Microsystems - Beijing China (uint32_t *)((sc)->sc_io_base + (off)), x) 586d8d81063Sfei feng - Sun Microsystems - Beijing China 587d8d81063Sfei feng - Sun Microsystems - Beijing China #define mwl_ctl_read4(sc, off) \ 588d8d81063Sfei feng - Sun Microsystems - Beijing China ddi_get32((sc)->sc_io_handle, \ 589d8d81063Sfei feng - Sun Microsystems - Beijing China (uint32_t *)((sc)->sc_io_base + (off))) 590d8d81063Sfei feng - Sun Microsystems - Beijing China 591d8d81063Sfei feng - Sun Microsystems - Beijing China #define mwl_ctl_read1(sc, off) \ 592d8d81063Sfei feng - Sun Microsystems - Beijing China ddi_get8((sc)->sc_io_handle, \ 593d8d81063Sfei feng - Sun Microsystems - Beijing China (uint8_t *)((sc)->sc_io_base + (off))) 594d8d81063Sfei feng - Sun Microsystems - Beijing China 595d8d81063Sfei feng - Sun Microsystems - Beijing China #define _CMD_SETUP(pCmd, type, cmd) do { \ 596d8d81063Sfei feng - Sun Microsystems - Beijing China pCmd = (type *)&sc->sc_cmd_mem[0]; \ 597*cb2cd10cSfei feng - Sun Microsystems - Beijing China (void) memset(pCmd, 0, sizeof (type)); \ 598d8d81063Sfei feng - Sun Microsystems - Beijing China pCmd->CmdHdr.Cmd = LE_16(cmd); \ 599d8d81063Sfei feng - Sun Microsystems - Beijing China pCmd->CmdHdr.Length = LE_16(sizeof (type)); \ 600d8d81063Sfei feng - Sun Microsystems - Beijing China _NOTE(CONSTCOND) \ 601d8d81063Sfei feng - Sun Microsystems - Beijing China } while (0) 602d8d81063Sfei feng - Sun Microsystems - Beijing China 603d8d81063Sfei feng - Sun Microsystems - Beijing China #define _VCMD_SETUP(pCmd, type, cmd) do { \ 604d8d81063Sfei feng - Sun Microsystems - Beijing China _CMD_SETUP(pCmd, type, cmd); \ 605d8d81063Sfei feng - Sun Microsystems - Beijing China pCmd->CmdHdr.MacId = 8; \ 606d8d81063Sfei feng - Sun Microsystems - Beijing China _NOTE(CONSTCOND) \ 607d8d81063Sfei feng - Sun Microsystems - Beijing China } while (0) 608d8d81063Sfei feng - Sun Microsystems - Beijing China 609d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_GLOCK(_sc) mutex_enter(&(_sc)->sc_glock) 610d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_GUNLOCK(_sc) mutex_exit(&(_sc)->sc_glock) 611d8d81063Sfei feng - Sun Microsystems - Beijing China 612d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_RXLOCK(_sc) mutex_enter(&(_sc)->sc_rxlock) 613d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_RXUNLOCK(_sc) mutex_exit(&(_sc)->sc_rxlock) 614d8d81063Sfei feng - Sun Microsystems - Beijing China 615d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_TXLOCK(_sc) mutex_enter(&(_sc)->sc_txlock) 616d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_TXUNLOCK(_sc) mutex_exit(&(_sc)->sc_txlock) 617d8d81063Sfei feng - Sun Microsystems - Beijing China 618d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_F_RUNNING (1 << 0) 619d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_F_SUSPEND (1 << 1) 620d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_F_QUIESCE (1 << 2) 621d8d81063Sfei feng - Sun Microsystems - Beijing China 622d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_RCR_PROMISC (1 << 0) 623d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_RCR_MULTI (1 << 1) 624d8d81063Sfei feng - Sun Microsystems - Beijing China 625d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_IS_RUNNING(_sc) (((_sc)->sc_flags & MWL_F_RUNNING)) 626d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_IS_SUSPEND(_sc) (((_sc)->sc_flags & MWL_F_SUSPEND)) 627d8d81063Sfei feng - Sun Microsystems - Beijing China #define MWL_IS_QUIESCE(_sc) (((_sc)->sc_flags & MWL_F_QUIESCE)) 628d8d81063Sfei feng - Sun Microsystems - Beijing China 629d8d81063Sfei feng - Sun Microsystems - Beijing China /* 630d8d81063Sfei feng - Sun Microsystems - Beijing China * 802.11 regulatory domain definitions. 631d8d81063Sfei feng - Sun Microsystems - Beijing China */ 632d8d81063Sfei feng - Sun Microsystems - Beijing China enum ISOCountryCode { 633d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_AFGHANISTAN = 4, 634d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_ALBANIA = 8, /* Albania */ 635d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_ALGERIA = 12, /* Algeria */ 636d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_AMERICAN_SAMOA = 16, 637d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_ANDORRA = 20, 638d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_ANGOLA = 24, 639d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_ANGUILLA = 660, 640d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_ANTARTICA = 10, 641d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_ANTIGUA = 28, /* Antigua and Barbuda */ 642d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_ARGENTINA = 32, /* Argentina */ 643d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_ARMENIA = 51, /* Armenia */ 644d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_ARUBA = 533, /* Aruba */ 645d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_AUSTRALIA = 36, /* Australia */ 646d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_AUSTRIA = 40, /* Austria */ 647d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_AZERBAIJAN = 31, /* Azerbaijan */ 648d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_BAHAMAS = 44, /* Bahamas */ 649d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_BAHRAIN = 48, /* Bahrain */ 650d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_BANGLADESH = 50, /* Bangladesh */ 651d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_BARBADOS = 52, 652d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_BELARUS = 112, /* Belarus */ 653d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_BELGIUM = 56, /* Belgium */ 654d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_BELIZE = 84, 655d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_BENIN = 204, 656d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_BERMUDA = 60, 657d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_BHUTAN = 64, 658d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_BOLIVIA = 68, /* Bolivia */ 659d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_BOSNIA_AND_HERZEGOWINA = 70, 660d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_BOTSWANA = 72, 661d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_BOUVET_ISLAND = 74, 662d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_BRAZIL = 76, /* Brazil */ 663d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_BRITISH_INDIAN_OCEAN_TERRITORY = 86, 664d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_BRUNEI_DARUSSALAM = 96, /* Brunei Darussalam */ 665d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_BULGARIA = 100, /* Bulgaria */ 666d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_BURKINA_FASO = 854, 667d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_BURUNDI = 108, 668d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_CAMBODIA = 116, 669d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_CAMEROON = 120, 670d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_CANADA = 124, /* Canada */ 671d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_CAPE_VERDE = 132, 672d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_CAYMAN_ISLANDS = 136, 673d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_CENTRAL_AFRICAN_REPUBLIC = 140, 674d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_CHAD = 148, 675d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_CHILE = 152, /* Chile */ 676d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_CHINA = 156, /* People's Republic of China */ 677d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_CHRISTMAS_ISLAND = 162, 678d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_COCOS_ISLANDS = 166, 679d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_COLOMBIA = 170, /* Colombia */ 680d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_COMOROS = 174, 681d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_CONGO = 178, 682d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_COOK_ISLANDS = 184, 683d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_COSTA_RICA = 188, /* Costa Rica */ 684d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_COTE_DIVOIRE = 384, 685d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_CROATIA = 191, /* Croatia (local name: Hrvatska) */ 686d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_CYPRUS = 196, /* Cyprus */ 687d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_CZECH = 203, /* Czech Republic */ 688d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_DENMARK = 208, /* Denmark */ 689d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_DJIBOUTI = 262, 690d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_DOMINICA = 212, 691d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_DOMINICAN_REPUBLIC = 214, /* Dominican Republic */ 692d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_EAST_TIMOR = 626, 693d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_ECUADOR = 218, /* Ecuador */ 694d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_EGYPT = 818, /* Egypt */ 695d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_EL_SALVADOR = 222, /* El Salvador */ 696d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_EQUATORIAL_GUINEA = 226, 697d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_ERITREA = 232, 698d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_ESTONIA = 233, /* Estonia */ 699d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_ETHIOPIA = 210, 700d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_FALKLAND_ISLANDS = 238, /* (Malvinas) */ 701d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_FAEROE_ISLANDS = 234, /* Faeroe Islands */ 702d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_FIJI = 242, 703d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_FINLAND = 246, /* Finland */ 704d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_FRANCE = 250, /* France */ 705d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_FRANCE2 = 255, /* France (Metropolitan) */ 706d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_FRENCH_GUIANA = 254, 707d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_FRENCH_POLYNESIA = 258, 708d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_FRENCH_SOUTHERN_TERRITORIES = 260, 709d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_GABON = 266, 710d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_GAMBIA = 270, 711d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_GEORGIA = 268, /* Georgia */ 712d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_GERMANY = 276, /* Germany */ 713d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_GHANA = 288, 714d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_GIBRALTAR = 292, 715d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_GREECE = 300, /* Greece */ 716d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_GREENLAND = 304, 717d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_GRENADA = 308, 718d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_GUADELOUPE = 312, 719d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_GUAM = 316, 720d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_GUATEMALA = 320, /* Guatemala */ 721d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_GUINEA = 324, 722d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_GUINEA_BISSAU = 624, 723d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_GUYANA = 328, 724d8d81063Sfei feng - Sun Microsystems - Beijing China /* XXX correct remainder */ 725d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_HAITI = 332, 726d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_HONDURAS = 340, /* Honduras */ 727d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_HONG_KONG = 344, /* Hong Kong S.A.R., P.R.C. */ 728d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_HUNGARY = 348, /* Hungary */ 729d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_ICELAND = 352, /* Iceland */ 730d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_INDIA = 356, /* India */ 731d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_INDONESIA = 360, /* Indonesia */ 732d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_IRAN = 364, /* Iran */ 733d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_IRAQ = 368, /* Iraq */ 734d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_IRELAND = 372, /* Ireland */ 735d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_ISRAEL = 376, /* Israel */ 736d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_ITALY = 380, /* Italy */ 737d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAMAICA = 388, /* Jamaica */ 738d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN = 392, /* Japan */ 739d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JORDAN = 400, /* Jordan */ 740d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_KAZAKHSTAN = 398, /* Kazakhstan */ 741d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_KENYA = 404, /* Kenya */ 742d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_KOREA_NORTH = 408, /* North Korea */ 743d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_KOREA_ROC = 410, /* South Korea */ 744d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_KOREA_ROC2 = 411, /* South Korea */ 745d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_KUWAIT = 414, /* Kuwait */ 746d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_LATVIA = 428, /* Latvia */ 747d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_LEBANON = 422, /* Lebanon */ 748d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_LIBYA = 434, /* Libya */ 749d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_LIECHTENSTEIN = 438, /* Liechtenstein */ 750d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_LITHUANIA = 440, /* Lithuania */ 751d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_LUXEMBOURG = 442, /* Luxembourg */ 752d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_MACAU = 446, /* Macau */ 753d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_MACEDONIA = 807, /* Macedonia */ 754d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_MALAYSIA = 458, /* Malaysia */ 755d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_MALTA = 470, /* Malta */ 756d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_MEXICO = 484, /* Mexico */ 757d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_MONACO = 492, /* Principality of Monaco */ 758d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_MOROCCO = 504, /* Morocco */ 759d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_NEPAL = 524, /* Nepal */ 760d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_NETHERLANDS = 528, /* Netherlands */ 761d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_NEW_ZEALAND = 554, /* New Zealand */ 762d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_NICARAGUA = 558, /* Nicaragua */ 763d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_NORWAY = 578, /* Norway */ 764d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_OMAN = 512, /* Oman */ 765d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_PAKISTAN = 586, /* Islamic Republic of Pakistan */ 766d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_PANAMA = 591, /* Panama */ 767d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_PARAGUAY = 600, /* Paraguay */ 768d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_PERU = 604, /* Peru */ 769d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_PHILIPPINES = 608, /* Republic of the Philippines */ 770d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_POLAND = 616, /* Poland */ 771d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_PORTUGAL = 620, /* Portugal */ 772d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_PUERTO_RICO = 630, /* Puerto Rico */ 773d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_QATAR = 634, /* Qatar */ 774d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_ROMANIA = 642, /* Romania */ 775d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_RUSSIA = 643, /* Russia */ 776d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_SAUDI_ARABIA = 682, /* Saudi Arabia */ 777d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_SINGAPORE = 702, /* Singapore */ 778d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_SLOVAKIA = 703, /* Slovak Republic */ 779d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_SLOVENIA = 705, /* Slovenia */ 780d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_SOUTH_AFRICA = 710, /* South Africa */ 781d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_SPAIN = 724, /* Spain */ 782d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_SRILANKA = 144, /* Sri Lanka */ 783d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_SWEDEN = 752, /* Sweden */ 784d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_SWITZERLAND = 756, /* Switzerland */ 785d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_SYRIA = 760, /* Syria */ 786d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_TAIWAN = 158, /* Taiwan */ 787d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_THAILAND = 764, /* Thailand */ 788d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_TRINIDAD_Y_TOBAGO = 780, /* Trinidad y Tobago */ 789d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_TUNISIA = 788, /* Tunisia */ 790d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_TURKEY = 792, /* Turkey */ 791d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_UAE = 784, /* U.A.E. */ 792d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_UKRAINE = 804, /* Ukraine */ 793d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_UNITED_KINGDOM = 826, /* United Kingdom */ 794d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_UNITED_STATES = 840, /* United States */ 795d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_URUGUAY = 858, /* Uruguay */ 796d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_UZBEKISTAN = 860, /* Uzbekistan */ 797d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_VENEZUELA = 862, /* Venezuela */ 798d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_VIET_NAM = 704, /* Viet Nam */ 799d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_YEMEN = 887, /* Yemen */ 800d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_ZIMBABWE = 716, /* Zimbabwe */ 801d8d81063Sfei feng - Sun Microsystems - Beijing China 802d8d81063Sfei feng - Sun Microsystems - Beijing China /* NB: from here down not listed in 3166; they come from Atheros */ 803d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_DEBUG = 0x1ff, /* debug */ 804d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_DEFAULT = 0, /* default */ 805d8d81063Sfei feng - Sun Microsystems - Beijing China 806d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_UNITED_STATES_FCC49 = 842, /* United States (Public Safety) */ 807d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_KOREA_ROC3 = 412, /* South Korea */ 808d8d81063Sfei feng - Sun Microsystems - Beijing China 809d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN1 = 393, /* Japan (JP1) */ 810d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN2 = 394, /* Japan (JP0) */ 811d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN3 = 395, /* Japan (JP1-1) */ 812d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN4 = 396, /* Japan (JE1) */ 813d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN5 = 397, /* Japan (JE2) */ 814d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN6 = 399, /* Japan (JP6) */ 815d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN7 = 4007, /* Japan (J7) */ 816d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN8 = 4008, /* Japan (J8) */ 817d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN9 = 4009, /* Japan (J9) */ 818d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN10 = 4010, /* Japan (J10) */ 819d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN11 = 4011, /* Japan (J11) */ 820d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN12 = 4012, /* Japan (J12) */ 821d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN13 = 4013, /* Japan (J13) */ 822d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN14 = 4014, /* Japan (J14) */ 823d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN15 = 4015, /* Japan (J15) */ 824d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN16 = 4016, /* Japan (J16) */ 825d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN17 = 4017, /* Japan (J17) */ 826d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN18 = 4018, /* Japan (J18) */ 827d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN19 = 4019, /* Japan (J19) */ 828d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN20 = 4020, /* Japan (J20) */ 829d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN21 = 4021, /* Japan (J21) */ 830d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN22 = 4022, /* Japan (J22) */ 831d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN23 = 4023, /* Japan (J23) */ 832d8d81063Sfei feng - Sun Microsystems - Beijing China CTRY_JAPAN24 = 4024, /* Japan (J24) */ 833d8d81063Sfei feng - Sun Microsystems - Beijing China }; 834d8d81063Sfei feng - Sun Microsystems - Beijing China 835d8d81063Sfei feng - Sun Microsystems - Beijing China enum RegdomainCode { 836d8d81063Sfei feng - Sun Microsystems - Beijing China SKU_FCC = 0x10, /* FCC, aka United States */ 837d8d81063Sfei feng - Sun Microsystems - Beijing China SKU_CA = 0x20, /* North America, aka Canada */ 838d8d81063Sfei feng - Sun Microsystems - Beijing China SKU_ETSI = 0x30, /* Europe */ 839d8d81063Sfei feng - Sun Microsystems - Beijing China SKU_ETSI2 = 0x32, /* Europe w/o HT40 in 5GHz */ 840d8d81063Sfei feng - Sun Microsystems - Beijing China SKU_ETSI3 = 0x33, /* Europe - channel 36 */ 841d8d81063Sfei feng - Sun Microsystems - Beijing China SKU_FCC3 = 0x3a, /* FCC w/5470 band, 11h, DFS */ 842d8d81063Sfei feng - Sun Microsystems - Beijing China SKU_JAPAN = 0x40, 843d8d81063Sfei feng - Sun Microsystems - Beijing China SKU_KOREA = 0x45, 844d8d81063Sfei feng - Sun Microsystems - Beijing China SKU_APAC = 0x50, /* Asia Pacific */ 845d8d81063Sfei feng - Sun Microsystems - Beijing China SKU_APAC2 = 0x51, /* Asia Pacific w/ DFS on mid-band */ 846d8d81063Sfei feng - Sun Microsystems - Beijing China SKU_APAC3 = 0x5d, /* Asia Pacific w/o ISM band */ 847d8d81063Sfei feng - Sun Microsystems - Beijing China SKU_ROW = 0x81, /* China/Taiwan/Rest of World */ 848d8d81063Sfei feng - Sun Microsystems - Beijing China SKU_NONE = 0xf0, /* "Region Free" */ 849d8d81063Sfei feng - Sun Microsystems - Beijing China SKU_DEBUG = 0x1ff, 850d8d81063Sfei feng - Sun Microsystems - Beijing China 851d8d81063Sfei feng - Sun Microsystems - Beijing China /* NB: from here down private */ 852d8d81063Sfei feng - Sun Microsystems - Beijing China SKU_SR9 = 0x0298, /* Ubiquiti SR9 (900MHz/GSM) */ 853d8d81063Sfei feng - Sun Microsystems - Beijing China SKU_XR9 = 0x0299, /* Ubiquiti XR9 (900MHz/GSM) */ 854d8d81063Sfei feng - Sun Microsystems - Beijing China SKU_GZ901 = 0x029a, /* Zcomax GZ-901 (900MHz/GSM) */ 855d8d81063Sfei feng - Sun Microsystems - Beijing China }; 856d8d81063Sfei feng - Sun Microsystems - Beijing China 857d8d81063Sfei feng - Sun Microsystems - Beijing China /* 858d8d81063Sfei feng - Sun Microsystems - Beijing China * Set regdomain code (IEEE SKU). 859d8d81063Sfei feng - Sun Microsystems - Beijing China */ 860d8d81063Sfei feng - Sun Microsystems - Beijing China enum { 861d8d81063Sfei feng - Sun Microsystems - Beijing China DOMAIN_CODE_FCC = 0x10, /* USA */ 862d8d81063Sfei feng - Sun Microsystems - Beijing China DOMAIN_CODE_IC = 0x20, /* Canda */ 863d8d81063Sfei feng - Sun Microsystems - Beijing China DOMAIN_CODE_ETSI = 0x30, /* Europe */ 864d8d81063Sfei feng - Sun Microsystems - Beijing China DOMAIN_CODE_SPAIN = 0x31, /* Spain */ 865d8d81063Sfei feng - Sun Microsystems - Beijing China DOMAIN_CODE_FRANCE = 0x32, /* France */ 866d8d81063Sfei feng - Sun Microsystems - Beijing China DOMAIN_CODE_ETSI_131 = 0x130, /* ETSI w/ 1.3.1 radar type */ 867d8d81063Sfei feng - Sun Microsystems - Beijing China DOMAIN_CODE_MKK = 0x40, /* Japan */ 868d8d81063Sfei feng - Sun Microsystems - Beijing China DOMAIN_CODE_MKK2 = 0x41, /* Japan w/ 10MHz chan spacing */ 869d8d81063Sfei feng - Sun Microsystems - Beijing China DOMAIN_CODE_DGT = 0x80, /* Taiwan */ 870d8d81063Sfei feng - Sun Microsystems - Beijing China DOMAIN_CODE_AUS = 0x81, /* Australia */ 871d8d81063Sfei feng - Sun Microsystems - Beijing China }; 872d8d81063Sfei feng - Sun Microsystems - Beijing China 873d8d81063Sfei feng - Sun Microsystems - Beijing China 874d8d81063Sfei feng - Sun Microsystems - Beijing China #ifdef __cplusplus 875d8d81063Sfei feng - Sun Microsystems - Beijing China } 876d8d81063Sfei feng - Sun Microsystems - Beijing China #endif 877d8d81063Sfei feng - Sun Microsystems - Beijing China 878d8d81063Sfei feng - Sun Microsystems - Beijing China #endif /* _MWL_VAR_H */ 879