Date: Wed, 21 Jan 2009 01:31:08 +0000 (UTC) From: Sam Leffler <sam@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r187509 - in user/sam/wifi/sys/dev/ath: . ath_hal ath_hal/ar5210 ath_hal/ar5211 ath_hal/ar5212 ath_hal/ar5312 ath_hal/ar5416 Message-ID: <200901210131.n0L1V8qb062589@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: sam Date: Wed Jan 21 01:31:08 2009 New Revision: 187509 URL: http://svn.freebsd.org/changeset/base/187509 Log: Checkpoint regulatory gutting: o move toward eliminating HAL_CHANNEL; for now it's still present but rework api's so a switch to an 802.11 channel is more possible o move toward stripping duplicate info from HAL_CHANNEL_INTERNAL; this is now referenced using ic_devdata in the 802.11 channel and real soon all callers will have the 802.11 channel to find the frequency and channel attributes (the only issue remaining is ath_hal_process_noisefloor) o eliminate code to write the HAL_CHANNEL on channel change; this was done to update the tx power for AR/DFS after a reset (so tx power scaling and CTL enforcement was applied) but was wrong and needs to be handled differently o change getChipPowerLimits api to work on a single channel o change ath_hal_getctl api to work on an internal channel o overhaul regulatory code: - remove per-country regulatory constraint work: having the hal construct this state duplicates what's already done in layers above; instead we'll push any initial sku/country code up as a hint that can be acted on to form regulatory state that is plumbed - switch to net80211 country code definitions - strip 900Mhz stuff; we can now handle this entirely in the driver - remove channel sorting; instead tag 802.11 channels with the index of the internal channel table (for now we check the frequency and flags to insure a match but eventually we'll ditch that and also compress all entries for a frequency into one) - remove various enforcements that are now meaningless; all we want to do is construct an initial regulatory hint/channel list from the EEPROM and thereafter trust channel lists that come down from above - move CTL to HAL_CHANNEL_INTERNAL for now; it'll be constructed on the fly once we merge channel entries for the same frequency - change ath_hal_init_channels api to operate directly on 802.11 channels; this call is used to check the EEPROM and construct an initial channel list (but the api also permits explicit override, use CTRY_DEFAULT/SKU_NONE to use the EEPROM contents) - add ath_hal_getchannels api to retrieve a channel list according to builtin rules but without altering any runtime state (unlike ath_hal_init_channels); this is used, in particular, to retrieve the device capabilities needed by the getradiocaps driver callback - add ath_hal_set_channels api to take 802.11 regulatory state and setup required internal state such as CTL's; this is used to implement the setregdomain driver callback - remove ah_countryCode from the internal state; it's no longer needed - move CHANNEL_NFCREQUIRED from privFlags to channelFlags (for now); it will eventually use one of the driver-private bits in ic_flags - change ar5212GetChipPowerLimits to not apply power scaling and CTL's to the values returned for min/max tx power; using ar5212SetRateTable to do this was bad as it clobbers runtime state (need to revisit) - add new status codes to disambiguate errors in regulatory calls - move CHANNEL_DFS to match net80211 definition - move CHANNEL_4MS_LIMIT to match net80211 definition - remove CTRY_DEBUG and CTRY_DEFAULT in favor of net80211 defs - remove ath_hal_isgsmsku; the hal no longer knows about GSM Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah.c user/sam/wifi/sys/dev/ath/ath_hal/ah.h user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210.h user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_misc.c user/sam/wifi/sys/dev/ath/ath_hal/ar5210/ar5210_reset.c user/sam/wifi/sys/dev/ath/ath_hal/ar5211/ar5211.h user/sam/wifi/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c user/sam/wifi/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c user/sam/wifi/sys/dev/ath/ath_hal/ar5211/ar5211_reset.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2413.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar2425.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5111.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5112.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212.h user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212_ani.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c user/sam/wifi/sys/dev/ath/ath_hal/ar5212/ar5413.c user/sam/wifi/sys/dev/ath/ath_hal/ar5312/ar5312_reset.c user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar2133.c user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar5416.h user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar5416_ani.c user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar5416_cal.c user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar5416_cal.h user/sam/wifi/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c user/sam/wifi/sys/dev/ath/if_ath.c Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah.c Wed Jan 21 00:56:28 2009 (r187508) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah.c Wed Jan 21 01:31:08 2009 (r187509) @@ -272,7 +272,7 @@ typedef enum { } WIRELESS_MODE; static WIRELESS_MODE -ath_hal_chan2wmode(struct ath_hal *ah, const HAL_CHANNEL *chan) +ath_hal_chan2wmode(struct ath_hal *ah, const HAL_CHANNEL_INTERNAL *chan) { if (IS_CHAN_CCK(chan)) return WIRELESS_MODE_11b; @@ -294,7 +294,7 @@ static const uint8_t CLOCK_RATE[] = { 4 u_int ath_hal_mac_clks(struct ath_hal *ah, u_int usecs) { - const HAL_CHANNEL *c = (const HAL_CHANNEL *) AH_PRIVATE(ah)->ah_curchan; + const HAL_CHANNEL_INTERNAL *c = AH_PRIVATE(ah)->ah_curchan; u_int clks; /* NB: ah_curchan may be null when called attach time */ @@ -314,7 +314,7 @@ ath_hal_mac_clks(struct ath_hal *ah, u_i u_int ath_hal_mac_usec(struct ath_hal *ah, u_int clks) { - const HAL_CHANNEL *c = (const HAL_CHANNEL *) AH_PRIVATE(ah)->ah_curchan; + const HAL_CHANNEL_INTERNAL *c = AH_PRIVATE(ah)->ah_curchan; u_int usec; /* NB: ah_curchan may be null when called attach time */ @@ -704,7 +704,7 @@ static const int16_t NOISE_FLOOR[] = { - * implement the ah_getChanNoise method. */ int16_t -ath_hal_getChanNoise(struct ath_hal *ah, HAL_CHANNEL *chan) +ath_hal_getChanNoise(struct ath_hal *ah, const HAL_CHANNEL *chan) { HAL_CHANNEL_INTERNAL *ichan; @@ -716,7 +716,7 @@ ath_hal_getChanNoise(struct ath_hal *ah, return 0; } if (ichan->rawNoiseFloor == 0) { - WIRELESS_MODE mode = ath_hal_chan2wmode(ah, chan); + WIRELESS_MODE mode = ath_hal_chan2wmode(ah, ichan); HALASSERT(mode < WIRELESS_MODE_MAX); return NOISE_FLOOR[mode] + ath_hal_getNfAdjust(ah, ichan); @@ -751,7 +751,7 @@ ath_hal_process_noisefloor(struct ath_ha c = &AH_PRIVATE(ah)->ah_channels[i]; if (c->rawNoiseFloor >= 0) continue; - mode = ath_hal_chan2wmode(ah, (HAL_CHANNEL *) c); + mode = ath_hal_chan2wmode(ah, c); HALASSERT(mode < WIRELESS_MODE_MAX); nf = c->rawNoiseFloor + NOISE_FLOOR[mode] + ath_hal_getNfAdjust(ah, c); Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah.h ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah.h Wed Jan 21 00:56:28 2009 (r187508) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah.h Wed Jan 21 01:31:08 2009 (r187509) @@ -63,6 +63,8 @@ typedef enum { HAL_ENOTSUPP = 13, /* Hardware revision not supported */ HAL_ESELFTEST = 14, /* Hardware self-test failed */ HAL_EINPROGRESS = 15, /* Operation incomplete */ + HAL_EEBADREG = 16, /* EEPROM invalid regulatory contents */ + HAL_EEBADCC = 17, /* EEPROM invalid country code */ } HAL_STATUS; typedef enum { @@ -362,19 +364,17 @@ typedef enum { HAL_RFGAIN_NEED_CHANGE = 2 } HAL_RFGAIN; -/* - * Channels are specified by frequency. - */ +typedef uint16_t HAL_CTRY_CODE; /* country code */ +typedef uint16_t HAL_REG_DOMAIN; /* regulatory domain code */ + typedef struct { - uint32_t channelFlags; /* see below */ - uint16_t channel; /* setting in Mhz */ - uint8_t privFlags; - int8_t maxRegTxPower; /* max regulatory tx power in dBm */ - int8_t maxTxPower; /* max true tx power in 0.5 dBm */ - int8_t minTxPower; /* min true tx power in 0.5 dBm */ + uint32_t channelFlags; + uint16_t channel; /* NB: must be first for casting */ + uint16_t devdata; /* XXX temp */ } HAL_CHANNEL; /* channelFlags */ +#define CHANNEL_NFCREQUIRED 0x01 /* channel requires noise floor check */ #define CHANNEL_CW_INT 0x00002 /* CW interference detected on channel */ #define CHANNEL_TURBO 0x00010 /* Turbo Channel */ #define CHANNEL_CCK 0x00020 /* CCK channel */ @@ -389,15 +389,8 @@ typedef struct { #define CHANNEL_HT20 0x10000 /* 11n 20MHZ channel */ #define CHANNEL_HT40PLUS 0x20000 /* 11n 40MHZ channel w/ ext chan above */ #define CHANNEL_HT40MINUS 0x40000 /* 11n 40MHZ channel w/ ext chan below */ - -/* privFlags */ -#define CHANNEL_INTERFERENCE 0x01 /* Software use: channel interference - used for as AR as well as RADAR - interference detection */ -#define CHANNEL_DFS 0x02 /* DFS required on channel */ -#define CHANNEL_4MS_LIMIT 0x04 /* 4msec packet limit on this channel */ -#define CHANNEL_NFCREQUIRED 0x08 /* channel requires noise floor check */ -#define CHANNEL_IQVALID 0x10 /* IQ calibration valid */ +#define CHANNEL_DFS 0x80000 /* DFS required on channel */ +#define CHANNEL_4MS_LIMIT 0x00100000 /* 4msec packet limit on this channel */ #define CHANNEL_A (CHANNEL_5GHZ|CHANNEL_OFDM) #define CHANNEL_B (CHANNEL_2GHZ|CHANNEL_CCK) @@ -435,14 +428,6 @@ typedef struct { uint32_t beacons; } HAL_MIB_STATS; -typedef uint16_t HAL_CTRY_CODE; /* country code */ -typedef uint16_t HAL_REG_DOMAIN; /* regulatory domain code */ - -enum { - CTRY_DEBUG = 0x1ff, /* debug country code */ - CTRY_DEFAULT = 0 /* default country code */ -}; - enum { HAL_MODE_11A = 0x001, /* 11a channels */ HAL_MODE_TURBO = 0x002, /* 11a turbo-only channels */ @@ -666,16 +651,18 @@ struct ath_hal { /* Reset functions */ HAL_BOOL __ahdecl(*ah_reset)(struct ath_hal *, HAL_OPMODE, - HAL_CHANNEL *, HAL_BOOL bChannelChange, - HAL_STATUS *status); + HAL_CHANNEL *, + HAL_BOOL bChannelChange, HAL_STATUS *status); HAL_BOOL __ahdecl(*ah_phyDisable)(struct ath_hal *); HAL_BOOL __ahdecl(*ah_disable)(struct ath_hal *); void __ahdecl(*ah_setPCUConfig)(struct ath_hal *); - HAL_BOOL __ahdecl(*ah_perCalibration)(struct ath_hal*, HAL_CHANNEL *, - HAL_BOOL *); - HAL_BOOL __ahdecl(*ah_perCalibrationN)(struct ath_hal *, HAL_CHANNEL *, - u_int chainMask, HAL_BOOL longCal, HAL_BOOL *isCalDone); - HAL_BOOL __ahdecl(*ah_resetCalValid)(struct ath_hal *, HAL_CHANNEL *); + HAL_BOOL __ahdecl(*ah_perCalibration)(struct ath_hal*, + HAL_CHANNEL *, HAL_BOOL *); + HAL_BOOL __ahdecl(*ah_perCalibrationN)(struct ath_hal *, + HAL_CHANNEL *, u_int chainMask, + HAL_BOOL longCal, HAL_BOOL *isCalDone); + HAL_BOOL __ahdecl(*ah_resetCalValid)(struct ath_hal *, + const HAL_CHANNEL *); HAL_BOOL __ahdecl(*ah_setTxPowerLimit)(struct ath_hal *, uint32_t); /* Transmit functions */ @@ -736,7 +723,8 @@ struct ath_hal { struct ath_desc *next, uint64_t tsf, struct ath_rx_status *); void __ahdecl(*ah_rxMonitor)(struct ath_hal *, - const HAL_NODE_STATS *, HAL_CHANNEL *); + const HAL_NODE_STATS *, + const HAL_CHANNEL *); void __ahdecl(*ah_procMibEvent)(struct ath_hal *, const HAL_NODE_STATS *); @@ -805,7 +793,8 @@ struct ath_hal { HAL_BOOL __ahdecl(*ah_setPowerMode)(struct ath_hal*, HAL_POWER_MODE mode, int setChip); HAL_POWER_MODE __ahdecl(*ah_getPowerMode)(struct ath_hal*); - int16_t __ahdecl(*ah_getChanNoise)(struct ath_hal *, HAL_CHANNEL *); + int16_t __ahdecl(*ah_getChanNoise)(struct ath_hal *, + const HAL_CHANNEL *); /* Beacon Management Functions */ void __ahdecl(*ah_setBeaconTimers)(struct ath_hal*, @@ -848,20 +837,48 @@ extern struct ath_hal * __ahdecl ath_hal HAL_BUS_TAG, HAL_BUS_HANDLE, HAL_STATUS* status); /* - * Return a list of channels available for use with the hardware. - * The list is based on what the hardware is capable of, the specified - * country code, the modeSelect mask, and whether or not outdoor - * channels are to be permitted. + * Regulatory interfaces. Drivers should use ath_hal_init_channels to + * request a set of channels for a particular country code and/or + * regulatory domain. If CTRY_DEFAULT and SKU_NONE are specified then + * this list is constructed according to the contents of the EEPROM. + * ath_hal_getchannels acts similarly but does not alter the operating + * state; this can be used to collect information for a particular + * regulatory configuration. Finally ath_hal_set_channels installs a + * channel list constructed outside the driver. The HAL will adopt the + * channel list and setup internal state according to the specified + * regulatory configuration (e.g. conformance test limits). * - * The channel list is returned in the supplied array. maxchans - * defines the maximum size of this array. nchans contains the actual - * number of channels returned. If a problem occurred or there were - * no channels that met the criteria then AH_FALSE is returned. - */ -extern HAL_BOOL __ahdecl ath_hal_init_channels(struct ath_hal *, - HAL_CHANNEL *chans, u_int maxchans, u_int *nchans, - HAL_CTRY_CODE cc, u_int modeSelect, - HAL_BOOL enableExtendedChannels); + * For all interfaces the channel list is returned in the supplied array. + * maxchans defines the maximum size of this array. nchans contains the + * actual number of channels returned. If a problem occurred then a + * status code != HAL_OK is returned. + */ +struct ieee80211_channel; + +/* + * Return a list of channels according to the specified regulatory. + */ +extern HAL_STATUS __ahdecl ath_hal_getchannels(struct ath_hal *, + struct ieee80211_channel *chans, u_int maxchans, int *nchans, + u_int modeSelect, HAL_CTRY_CODE cc, HAL_REG_DOMAIN regDmn, + HAL_BOOL enableExtendedChannels); + +/* + * Return a list of channels and install it as the current operating + * regulatory list. + */ +extern HAL_STATUS __ahdecl ath_hal_init_channels(struct ath_hal *, + struct ieee80211_channel *chans, u_int maxchans, int *nchans, + u_int modeSelect, HAL_CTRY_CODE cc, HAL_REG_DOMAIN rd, + HAL_BOOL enableExtendedChannels); + +/* + * Install the list of channels as the current operating regulatory + * and setup related state according to the country code and sku. + */ +extern HAL_STATUS __ahdecl ath_hal_set_channels(struct ath_hal *, + struct ieee80211_channel *chans, int nchans, + HAL_CTRY_CODE cc, HAL_REG_DOMAIN regDmn); /* * Calibrate noise floor data following a channel scan or similar. @@ -880,9 +897,4 @@ extern u_int __ahdecl ath_hal_getwireles extern uint16_t __ahdecl ath_hal_computetxtime(struct ath_hal *, const HAL_RATE_TABLE *rates, uint32_t frameLen, uint16_t rateix, HAL_BOOL shortPreamble); - -/* - * Return if device is operating in 900 MHz band. - */ -extern HAL_BOOL ath_hal_isgsmsku(struct ath_hal *); #endif /* _ATH_AH_H_ */ Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Wed Jan 21 00:56:28 2009 (r187508) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah_internal.h Wed Jan 21 01:31:08 2009 (r187509) @@ -108,27 +108,35 @@ OS_DATA_SET(ah_rfs, _name##_rf) struct ath_hal_rf *ath_hal_rfprobe(struct ath_hal *ah, HAL_STATUS *ecode); /* - * Internal form of a HAL_CHANNEL. Note that the structure - * must be defined such that you can cast references to a - * HAL_CHANNEL so don't shuffle the first two members. + * Internal per-channel state. These are found + * using ic_devdata in the ieee80211_channel. */ typedef struct { uint32_t channelFlags; uint16_t channel; /* NB: must be first for casting */ - uint8_t privFlags; + uint16_t devdata; /* XXX temp */ int8_t maxRegTxPower; int8_t maxTxPower; - int8_t minTxPower; /* as above... */ + int8_t minTxPower; + uint8_t antennaMax; + uint8_t privFlags; + uint8_t ctl; /* conformance test limit */ uint8_t calValid; /* bitmask of cal types */ int8_t iCoff; int8_t qCoff; - int8_t antennaMax; + uint8_t pad; /* NB: hole */ int16_t rawNoiseFloor; int16_t noiseFloorAdjust; uint16_t mainSpur; /* cached spur value for this channel */ } HAL_CHANNEL_INTERNAL; +/* privFlags */ +#define CHANNEL_INTERFERENCE 0x01 /* Software use: channel interference + used for as AR as well as RADAR + interference detection */ +#define CHANNEL_IQVALID 0x02 /* IQ calibration valid */ + typedef struct { uint32_t halChanSpreadSupport : 1, halSleepAfterBeaconBroken : 1, @@ -226,7 +234,7 @@ struct ath_hal_private { uint32_t gpio, uint32_t val); void (*ah_gpioSetIntr)(struct ath_hal*, u_int, uint32_t); HAL_BOOL (*ah_getChipPowerLimits)(struct ath_hal *, - HAL_CHANNEL *, uint32_t); + HAL_CHANNEL_INTERNAL *); int16_t (*ah_getNfAdjust)(struct ath_hal *, const HAL_CHANNEL_INTERNAL*); void (*ah_getNoiseFloor)(struct ath_hal *, @@ -255,6 +263,7 @@ struct ath_hal_private { HAL_OPMODE ah_opmode; /* operating mode from reset */ + HAL_CHANNEL_INTERNAL *ah_curchan; /* operating channel */ HAL_CAPABILITIES ah_caps; /* device capabilities */ uint32_t ah_diagreg; /* user-specified AR_DIAG_SW */ int16_t ah_powerLimit; /* tx power cap */ @@ -265,11 +274,9 @@ struct ath_hal_private { /* * State for regulatory domain handling. */ - HAL_REG_DOMAIN ah_currentRD; /* Current regulatory domain */ - HAL_CTRY_CODE ah_countryCode; /* current country code */ + HAL_REG_DOMAIN ah_currentRD; /* EEPROM regulatory domain */ HAL_CHANNEL_INTERNAL ah_channels[256]; /* calculated channel list */ u_int ah_nchan; /* valid channels in list */ - HAL_CHANNEL_INTERNAL *ah_curchan; /* current channel */ const struct regDomainPair *ah_regpair; /* reg state */ const struct regDomain *ah_reg2G; /* reg state for 2G band */ const struct regDomain *ah_reg5G; /* reg state for 5G band */ @@ -308,8 +315,8 @@ struct ath_hal_private { AH_PRIVATE(_ah)->ah_gpioGet(_ah, _gpio, _val) #define ath_hal_gpioSetIntr(_ah, _gpio, _ilevel) \ AH_PRIVATE(_ah)->ah_gpioSetIntr(_ah, _gpio, _ilevel) -#define ath_hal_getpowerlimits(_ah, _chans, _nchan) \ - AH_PRIVATE(_ah)->ah_getChipPowerLimits(_ah, _chans, _nchan) +#define ath_hal_getpowerlimits(_ah, _chan) \ + AH_PRIVATE(_ah)->ah_getChipPowerLimits(_ah, _chan) #define ath_hal_getNfAdjust(_ah, _c) \ AH_PRIVATE(_ah)->ah_getNfAdjust(_ah, _c) #define ath_hal_getNoiseFloor(_ah, _nfArray) \ @@ -328,7 +335,7 @@ struct ath_hal_private { #define ath_hal_eepromDiag(_ah, _request, _a, _asize, _r, _rsize) \ AH_PRIVATE(_ah)->ah_eepromDiag(_ah, _request, _a, _asize, _r, _rsize) -#if !defined(_NET_IF_IEEE80211_H_) && !defined(_NET80211__IEEE80211_H_) +#ifndef _NET_IF_IEEE80211_H_ /* * Stuff that would naturally come from _ieee80211.h */ @@ -344,7 +351,9 @@ struct ath_hal_private { #define IEEE80211_MTU 1500 #define IEEE80211_MAX_LEN (2300 + IEEE80211_CRC_LEN + \ (IEEE80211_WEP_IVLEN + IEEE80211_WEP_KIDLEN + IEEE80211_WEP_CRCLEN)) +#endif /* _NET_IF_IEEE80211_H_ */ +#ifndef _NET80211__IEEE80211_H_ enum { IEEE80211_T_DS, /* direct sequence spread spectrum */ IEEE80211_T_FH, /* frequency hopping */ @@ -492,16 +501,31 @@ isBigEndian(void) */ /* - * Return the max allowed antenna gain based on the current - * regulatory domain. - */ -extern u_int ath_hal_getantennareduction(struct ath_hal *, - HAL_CHANNEL *, u_int twiceGain); + * Return the max allowed antenna gain and apply any regulatory + * domain specific changes. + * + * NOTE: a negative reduction is possible in RD's that only + * measure radiated power (e.g., ETSI) which would increase + * that actual conducted output power (though never beyond + * the calibrated target power). + */ +static OS_INLINE u_int +ath_hal_getantennareduction(struct ath_hal *ah, + const HAL_CHANNEL_INTERNAL *chan, u_int twiceGain) +{ + int8_t antennaMax = twiceGain - chan->antennaMax*2; + return (antennaMax < 0) ? 0 : antennaMax; +} + /* * Return the test group for the specific channel based on * the current regulator domain. */ -extern u_int ath_hal_getctl(struct ath_hal *, HAL_CHANNEL *); +static OS_INLINE u_int +ath_hal_getctl(struct ath_hal *ah, const HAL_CHANNEL_INTERNAL *chan) +{ + return chan->ctl; +} /* * Map a public channel definition to the corresponding @@ -728,7 +752,7 @@ extern void ath_hal_setupratetable(struc /* * Common routine for implementing getChanNoise api. */ -extern int16_t ath_hal_getChanNoise(struct ath_hal *ah, HAL_CHANNEL *chan); +extern int16_t ath_hal_getChanNoise(struct ath_hal *ah, const HAL_CHANNEL* ); /* * Initialization support. Modified: user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c ============================================================================== --- user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Wed Jan 21 00:56:28 2009 (r187508) +++ user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Wed Jan 21 01:31:08 2009 (r187509) @@ -20,6 +20,10 @@ #include "opt_ah.h" #include "ah.h" + +#include <net80211/_ieee80211.h> +#include <net80211/ieee80211_regdomain.h> + #include "ah_internal.h" #include "ah_eeprom.h" #include "ah_devid.h" @@ -72,160 +76,6 @@ typedef uint64_t chanbmask_t[BMLEN]; W1(_fg) | W1(_fh) } /* - * Country/Region Codes - * Numbering from ISO 3166 - */ -enum { - CTRY_ALBANIA = 8, /* Albania */ - CTRY_ALGERIA = 12, /* Algeria */ - CTRY_ARGENTINA = 32, /* Argentina */ - CTRY_ARMENIA = 51, /* Armenia */ - CTRY_AUSTRALIA = 36, /* Australia */ - CTRY_AUSTRIA = 40, /* Austria */ - CTRY_AZERBAIJAN = 31, /* Azerbaijan */ - CTRY_BAHRAIN = 48, /* Bahrain */ - CTRY_BELARUS = 112, /* Belarus */ - CTRY_BELGIUM = 56, /* Belgium */ - CTRY_BELIZE = 84, /* Belize */ - CTRY_BOLIVIA = 68, /* Bolivia */ - CTRY_BRAZIL = 76, /* Brazil */ - CTRY_BRUNEI_DARUSSALAM = 96, /* Brunei Darussalam */ - CTRY_BULGARIA = 100, /* Bulgaria */ - CTRY_CANADA = 124, /* Canada */ - CTRY_CHILE = 152, /* Chile */ - CTRY_CHINA = 156, /* People's Republic of China */ - CTRY_COLOMBIA = 170, /* Colombia */ - CTRY_COSTA_RICA = 188, /* Costa Rica */ - CTRY_CROATIA = 191, /* Croatia */ - CTRY_CYPRUS = 196, - CTRY_CZECH = 203, /* Czech Republic */ - CTRY_DENMARK = 208, /* Denmark */ - CTRY_DOMINICAN_REPUBLIC = 214, /* Dominican Republic */ - CTRY_ECUADOR = 218, /* Ecuador */ - CTRY_EGYPT = 818, /* Egypt */ - CTRY_EL_SALVADOR = 222, /* El Salvador */ - CTRY_ESTONIA = 233, /* Estonia */ - CTRY_FAEROE_ISLANDS = 234, /* Faeroe Islands */ - CTRY_FINLAND = 246, /* Finland */ - CTRY_FRANCE = 250, /* France */ - CTRY_FRANCE2 = 255, /* France2 */ - CTRY_GEORGIA = 268, /* Georgia */ - CTRY_GERMANY = 276, /* Germany */ - CTRY_GREECE = 300, /* Greece */ - CTRY_GUATEMALA = 320, /* Guatemala */ - CTRY_HONDURAS = 340, /* Honduras */ - CTRY_HONG_KONG = 344, /* Hong Kong S.A.R., P.R.C. */ - CTRY_HUNGARY = 348, /* Hungary */ - CTRY_ICELAND = 352, /* Iceland */ - CTRY_INDIA = 356, /* India */ - CTRY_INDONESIA = 360, /* Indonesia */ - CTRY_IRAN = 364, /* Iran */ - CTRY_IRAQ = 368, /* Iraq */ - CTRY_IRELAND = 372, /* Ireland */ - CTRY_ISRAEL = 376, /* Israel */ - CTRY_ITALY = 380, /* Italy */ - CTRY_JAMAICA = 388, /* Jamaica */ - CTRY_JAPAN = 392, /* Japan */ - CTRY_JAPAN1 = 393, /* Japan (JP1) */ - CTRY_JAPAN2 = 394, /* Japan (JP0) */ - CTRY_JAPAN3 = 395, /* Japan (JP1-1) */ - CTRY_JAPAN4 = 396, /* Japan (JE1) */ - CTRY_JAPAN5 = 397, /* Japan (JE2) */ - CTRY_JAPAN6 = 399, /* Japan (JP6) */ - - CTRY_JAPAN7 = 4007, /* Japan (J7) */ - CTRY_JAPAN8 = 4008, /* Japan (J8) */ - CTRY_JAPAN9 = 4009, /* Japan (J9) */ - - CTRY_JAPAN10 = 4010, /* Japan (J10) */ - CTRY_JAPAN11 = 4011, /* Japan (J11) */ - CTRY_JAPAN12 = 4012, /* Japan (J12) */ - - CTRY_JAPAN13 = 4013, /* Japan (J13) */ - CTRY_JAPAN14 = 4014, /* Japan (J14) */ - CTRY_JAPAN15 = 4015, /* Japan (J15) */ - - CTRY_JAPAN16 = 4016, /* Japan (J16) */ - CTRY_JAPAN17 = 4017, /* Japan (J17) */ - CTRY_JAPAN18 = 4018, /* Japan (J18) */ - - CTRY_JAPAN19 = 4019, /* Japan (J19) */ - CTRY_JAPAN20 = 4020, /* Japan (J20) */ - CTRY_JAPAN21 = 4021, /* Japan (J21) */ - - CTRY_JAPAN22 = 4022, /* Japan (J22) */ - CTRY_JAPAN23 = 4023, /* Japan (J23) */ - CTRY_JAPAN24 = 4024, /* Japan (J24) */ - - CTRY_JORDAN = 400, /* Jordan */ - CTRY_KAZAKHSTAN = 398, /* Kazakhstan */ - CTRY_KENYA = 404, /* Kenya */ - CTRY_KOREA_NORTH = 408, /* North Korea */ - CTRY_KOREA_ROC = 410, /* South Korea */ - CTRY_KOREA_ROC2 = 411, /* South Korea */ - CTRY_KOREA_ROC3 = 412, /* South Korea */ - CTRY_KUWAIT = 414, /* Kuwait */ - CTRY_LATVIA = 428, /* Latvia */ - CTRY_LEBANON = 422, /* Lebanon */ - CTRY_LIBYA = 434, /* Libya */ - CTRY_LIECHTENSTEIN = 438, /* Liechtenstein */ - CTRY_LITHUANIA = 440, /* Lithuania */ - CTRY_LUXEMBOURG = 442, /* Luxembourg */ - CTRY_MACAU = 446, /* Macau */ - CTRY_MACEDONIA = 807, /* the Former Yugoslav Republic of Macedonia */ - CTRY_MALAYSIA = 458, /* Malaysia */ - CTRY_MALTA = 470, /* Malta */ - CTRY_MEXICO = 484, /* Mexico */ - CTRY_MONACO = 492, /* Principality of Monaco */ - CTRY_MOROCCO = 504, /* Morocco */ - CTRY_NETHERLANDS = 528, /* Netherlands */ - CTRY_NEW_ZEALAND = 554, /* New Zealand */ - CTRY_NICARAGUA = 558, /* Nicaragua */ - CTRY_NORWAY = 578, /* Norway */ - CTRY_OMAN = 512, /* Oman */ - CTRY_PAKISTAN = 586, /* Islamic Republic of Pakistan */ - CTRY_PANAMA = 591, /* Panama */ - CTRY_PARAGUAY = 600, /* Paraguay */ - CTRY_PERU = 604, /* Peru */ - CTRY_PHILIPPINES = 608, /* Republic of the Philippines */ - CTRY_POLAND = 616, /* Poland */ - CTRY_PORTUGAL = 620, /* Portugal */ - CTRY_PUERTO_RICO = 630, /* Puerto Rico */ - CTRY_QATAR = 634, /* Qatar */ - CTRY_ROMANIA = 642, /* Romania */ - CTRY_RUSSIA = 643, /* Russia */ - CTRY_SAUDI_ARABIA = 682, /* Saudi Arabia */ - CTRY_SINGAPORE = 702, /* Singapore */ - CTRY_SLOVAKIA = 703, /* Slovak Republic */ - CTRY_SLOVENIA = 705, /* Slovenia */ - CTRY_SOUTH_AFRICA = 710, /* South Africa */ - CTRY_SPAIN = 724, /* Spain */ - CTRY_SR9 = 5000, /* Ubiquiti SR9 (900MHz/GSM) */ - CTRY_SWEDEN = 752, /* Sweden */ - CTRY_SWITZERLAND = 756, /* Switzerland */ - CTRY_SYRIA = 760, /* Syria */ - CTRY_TAIWAN = 158, /* Taiwan */ - CTRY_THAILAND = 764, /* Thailand */ - CTRY_TRINIDAD_Y_TOBAGO = 780, /* Trinidad y Tobago */ - CTRY_TUNISIA = 788, /* Tunisia */ - CTRY_TURKEY = 792, /* Turkey */ - CTRY_UAE = 784, /* U.A.E. */ - CTRY_UKRAINE = 804, /* Ukraine */ - CTRY_UNITED_KINGDOM = 826, /* United Kingdom */ - CTRY_UNITED_STATES = 840, /* United States */ - CTRY_UNITED_STATES_FCC49 = 842, /* United States (Public Safety)*/ - CTRY_URUGUAY = 858, /* Uruguay */ - CTRY_UZBEKISTAN = 860, /* Uzbekistan */ - CTRY_VENEZUELA = 862, /* Venezuela */ - CTRY_VIET_NAM = 704, /* Viet Nam */ - CTRY_XR9 = 5001, /* Ubiquiti XR9 (900MHz/GSM) */ - CTRY_GZ901 = 5002, /* Zcomax GZ-901 (900MHz/GSM) */ - CTRY_YEMEN = 887, /* Yemen */ - CTRY_ZIMBABWE = 716 /* Zimbabwe */ -}; - - -/* * Mask to check whether a domain is a multidomain or a single domain */ #define MULTI_DOMAIN_MASK 0xFF00 @@ -403,9 +253,6 @@ enum { NULL1 = 0x0198, WORLD = 0x0199, - SR9_WORLD = 0x0298, - XR9_WORLD = 0x0299, - GZ901_WORLD = 0x029a, DEBUG_REG_DMN = 0x01ff, }; @@ -482,44 +329,44 @@ typedef struct regDomainPair { } REG_DMN_PAIR_MAPPING; static REG_DMN_PAIR_MAPPING regDomainPairs[] = { - {NO_ENUMRD, DEBUG_REG_DMN, DEBUG_REG_DMN, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {NULL1_WORLD, NULL1, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {NULL1_ETSIB, NULL1, ETSIB, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {NULL1_ETSIC, NULL1, ETSIC, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - - {FCC2_FCCA, FCC2, FCCA, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {FCC2_WORLD, FCC2, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {FCC2_ETSIC, FCC2, ETSIC, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {FCC3_FCCA, FCC3, FCCA, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {FCC3_WORLD, FCC3, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {FCC4_FCCA, FCC4, FCCA, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {FCC5_FCCB, FCC5, FCCB, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - - {ETSI1_WORLD, ETSI1, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {ETSI2_WORLD, ETSI2, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {ETSI3_WORLD, ETSI3, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {ETSI4_WORLD, ETSI4, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {ETSI5_WORLD, ETSI5, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {ETSI6_WORLD, ETSI6, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - - {ETSI3_ETSIA, ETSI3, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {FRANCE_RES, ETSI3, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - - {FCC1_WORLD, FCC1, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {FCC1_FCCA, FCC1, FCCA, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {APL1_WORLD, APL1, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {APL2_WORLD, APL2, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {APL3_WORLD, APL3, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {APL4_WORLD, APL4, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {APL5_WORLD, APL5, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {APL6_WORLD, APL6, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {APL8_WORLD, APL8, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {APL9_WORLD, APL9, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - - {APL3_FCCA, APL3, FCCA, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {APL1_ETSIC, APL1, ETSIC, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {APL2_ETSIC, APL2, ETSIC, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {APL2_APLD, APL2, APLD, NO_REQ, NO_REQ, PSCAN_DEFER, }, + {NO_ENUMRD, DEBUG_REG_DMN, DEBUG_REG_DMN, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {NULL1_WORLD, NULL1, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {NULL1_ETSIB, NULL1, ETSIB, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {NULL1_ETSIC, NULL1, ETSIC, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + + {FCC2_FCCA, FCC2, FCCA, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {FCC2_WORLD, FCC2, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {FCC2_ETSIC, FCC2, ETSIC, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {FCC3_FCCA, FCC3, FCCA, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {FCC3_WORLD, FCC3, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {FCC4_FCCA, FCC4, FCCA, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {FCC5_FCCB, FCC5, FCCB, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + + {ETSI1_WORLD, ETSI1, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {ETSI2_WORLD, ETSI2, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {ETSI3_WORLD, ETSI3, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {ETSI4_WORLD, ETSI4, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {ETSI5_WORLD, ETSI5, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {ETSI6_WORLD, ETSI6, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + + {ETSI3_ETSIA, ETSI3, WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {FRANCE_RES, ETSI3, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + + {FCC1_WORLD, FCC1, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {FCC1_FCCA, FCC1, FCCA, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {APL1_WORLD, APL1, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {APL2_WORLD, APL2, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {APL3_WORLD, APL3, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {APL4_WORLD, APL4, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {APL5_WORLD, APL5, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {APL6_WORLD, APL6, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {APL8_WORLD, APL8, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {APL9_WORLD, APL9, WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + + {APL3_FCCA, APL3, FCCA, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {APL1_ETSIC, APL1, ETSIC, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {APL2_ETSIC, APL2, ETSIC, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {APL2_APLD, APL2, APLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, {MKK1_MKKA, MKK1, MKKA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK1 | PSCAN_MKKA, CTRY_JAPAN }, {MKK1_MKKB, MKK1, MKKA, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC| LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK1 | PSCAN_MKKA | PSCAN_MKKA_G, CTRY_JAPAN1 }, @@ -532,19 +379,19 @@ static REG_DMN_PAIR_MAPPING regDomainPai {MKK2_MKKA, MKK2, MKKA, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC| LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK2 | PSCAN_MKKA | PSCAN_MKKA_G, CTRY_JAPAN3 }, /* MKK3 */ - {MKK3_MKKA, MKK3, MKKA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC , PSCAN_MKKA, 0 }, + {MKK3_MKKA, MKK3, MKKA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC , PSCAN_MKKA, CTRY_DEFAULT }, {MKK3_MKKB, MKK3, MKKA, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKKA | PSCAN_MKKA_G, CTRY_JAPAN7 }, - {MKK3_MKKA1, MKK3, MKKA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKKA1 | PSCAN_MKKA1_G, 0 }, + {MKK3_MKKA1, MKK3, MKKA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKKA1 | PSCAN_MKKA1_G, CTRY_DEFAULT }, {MKK3_MKKA2,MKK3, MKKA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKKA2 | PSCAN_MKKA2_G, CTRY_JAPAN8 }, {MKK3_MKKC, MKK3, MKKC, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, NO_PSCAN, CTRY_JAPAN9 }, - {MKK3_FCCA, MKK3, FCCA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, NO_PSCAN, 0 }, + {MKK3_FCCA, MKK3, FCCA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, NO_PSCAN, CTRY_DEFAULT }, /* MKK4 */ {MKK4_MKKB, MKK4, MKKA, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3 | PSCAN_MKKA | PSCAN_MKKA_G, CTRY_JAPAN10 }, - {MKK4_MKKA1, MKK4, MKKA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3 | PSCAN_MKKA1 | PSCAN_MKKA1_G, 0 }, + {MKK4_MKKA1, MKK4, MKKA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3 | PSCAN_MKKA1 | PSCAN_MKKA1_G, CTRY_DEFAULT }, {MKK4_MKKA2, MKK4, MKKA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3 |PSCAN_MKKA2 | PSCAN_MKKA2_G, CTRY_JAPAN11 }, {MKK4_MKKC, MKK4, MKKC, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3, CTRY_JAPAN12 }, - {MKK4_FCCA, MKK4, FCCA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3, 0 }, + {MKK4_FCCA, MKK4, FCCA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3, CTRY_DEFAULT }, /* MKK5 */ {MKK5_MKKB, MKK5, MKKA, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3 | PSCAN_MKKA | PSCAN_MKKA_G, CTRY_JAPAN13 }, @@ -566,24 +413,21 @@ static REG_DMN_PAIR_MAPPING regDomainPai {MKK8_MKKA2,MKK8, MKKA, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK1 | PSCAN_MKK3 | PSCAN_MKKA2 | PSCAN_MKKA2_G, CTRY_JAPAN23 }, {MKK8_MKKC, MKK8, MKKC, DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK1 | PSCAN_MKK3 , CTRY_JAPAN24 }, - {MKK9_MKKA, MKK9, MKKA, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3 | PSCAN_MKKA | PSCAN_MKKA_G, 0 }, - {MKK10_MKKA, MKK10, MKKA, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3 | PSCAN_MKKA | PSCAN_MKKA_G, 0 }, + {MKK9_MKKA, MKK9, MKKA, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3 | PSCAN_MKKA | PSCAN_MKKA_G, CTRY_DEFAULT }, + {MKK10_MKKA, MKK10, MKKA, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB | NEED_NFC | LIMIT_FRAME_4MS, NEED_NFC, PSCAN_MKK3 | PSCAN_MKKA | PSCAN_MKKA_G, CTRY_DEFAULT }, /* These are super domains */ - {WOR0_WORLD, WOR0_WORLD, WOR0_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {WOR1_WORLD, WOR1_WORLD, WOR1_WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {WOR2_WORLD, WOR2_WORLD, WOR2_WORLD, DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {WOR3_WORLD, WOR3_WORLD, WOR3_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {WOR4_WORLD, WOR4_WORLD, WOR4_WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {WOR5_ETSIC, WOR5_ETSIC, WOR5_ETSIC, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {WOR01_WORLD, WOR01_WORLD, WOR01_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {WOR02_WORLD, WOR02_WORLD, WOR02_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {EU1_WORLD, EU1_WORLD, EU1_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, 0 }, - {WOR9_WORLD, WOR9_WORLD, WOR9_WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {WORA_WORLD, WORA_WORLD, WORA_WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, 0 }, - {SR9_WORLD, NULL1, SR9_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_SR9 }, - {XR9_WORLD, NULL1, XR9_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_XR9 }, - {GZ901_WORLD, NULL1, GZ901_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_GZ901 }, + {WOR0_WORLD, WOR0_WORLD, WOR0_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {WOR1_WORLD, WOR1_WORLD, WOR1_WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {WOR2_WORLD, WOR2_WORLD, WOR2_WORLD, DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {WOR3_WORLD, WOR3_WORLD, WOR3_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {WOR4_WORLD, WOR4_WORLD, WOR4_WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {WOR5_ETSIC, WOR5_ETSIC, WOR5_ETSIC, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {WOR01_WORLD, WOR01_WORLD, WOR01_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {WOR02_WORLD, WOR02_WORLD, WOR02_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {EU1_WORLD, EU1_WORLD, EU1_WORLD, NO_REQ, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {WOR9_WORLD, WOR9_WORLD, WOR9_WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, + {WORA_WORLD, WORA_WORLD, WORA_WORLD, DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB, NO_REQ, PSCAN_DEFER, CTRY_DEFAULT }, }; /* @@ -600,162 +444,149 @@ static REG_DMN_PAIR_MAPPING regDomainPai #define SUPER_DOMAIN_MASK 0x0fff #define COUNTRY_CODE_MASK 0x3fff -#define YES AH_TRUE -#define NO AH_FALSE - typedef struct { HAL_CTRY_CODE countryCode; HAL_REG_DOMAIN regDmnEnum; - HAL_BOOL allow11aTurbo; - HAL_BOOL allow11gTurbo; - HAL_BOOL allow11ng20; - HAL_BOOL allow11ng40; - HAL_BOOL allow11na20; - HAL_BOOL allow11na40; } COUNTRY_CODE_TO_ENUM_RD; static COUNTRY_CODE_TO_ENUM_RD allCountries[] = { - {CTRY_DEBUG, NO_ENUMRD, YES, YES, YES,YES, YES,YES }, - {CTRY_DEFAULT, DEF_REGDMN, YES, YES, YES,YES, YES,YES }, - {CTRY_ALBANIA, NULL1_WORLD, NO, YES, YES, NO, NO, NO }, - {CTRY_ALGERIA, NULL1_WORLD, NO, YES, YES, NO, NO, NO }, - {CTRY_ARGENTINA, APL3_WORLD, NO, NO, NO, NO, NO, NO }, - {CTRY_ARMENIA, ETSI4_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_AUSTRALIA, FCC2_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_AUSTRIA, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_AZERBAIJAN, ETSI4_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_BAHRAIN, APL6_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_BELARUS, NULL1_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_BELGIUM, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_BELIZE, APL1_ETSIC, YES, YES, YES,YES, YES,YES }, - {CTRY_BOLIVIA, APL1_ETSIC, YES, YES, YES,YES, YES,YES }, - {CTRY_BRAZIL, FCC3_WORLD, NO, NO, YES, NO, YES, NO }, - {CTRY_BRUNEI_DARUSSALAM,APL1_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_BULGARIA, ETSI6_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_CANADA, FCC2_FCCA, YES, YES, YES,YES, YES,YES }, - {CTRY_CHILE, APL6_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_CHINA, APL1_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_COLOMBIA, FCC1_FCCA, NO, YES, YES,YES, YES, NO }, - {CTRY_COSTA_RICA, NULL1_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_CROATIA, ETSI3_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_CYPRUS, ETSI1_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_CZECH, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_DENMARK, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_DOMINICAN_REPUBLIC,FCC1_FCCA, YES, YES, YES,YES, YES,YES }, - {CTRY_ECUADOR, NULL1_WORLD, NO, NO, NO, NO, NO, NO }, - {CTRY_EGYPT, ETSI3_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_EL_SALVADOR, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_ESTONIA, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_FINLAND, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_FRANCE, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_FRANCE2, ETSI3_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_GEORGIA, ETSI4_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_GERMANY, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_GREECE, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_GUATEMALA, FCC1_FCCA, YES, YES, YES,YES, YES,YES }, - {CTRY_GZ901, GZ901_WORLD, NO, NO, NO, NO, NO, NO }, - {CTRY_HONDURAS, NULL1_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_HONG_KONG, FCC2_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_HUNGARY, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_ICELAND, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_INDIA, APL6_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_INDONESIA, APL1_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_IRAN, APL1_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_IRELAND, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_ISRAEL, NULL1_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_ITALY, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_JAPAN, MKK1_MKKA, NO, NO, YES, NO, YES, NO }, - {CTRY_JAPAN1, MKK1_MKKB, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN2, MKK1_FCCA, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN3, MKK2_MKKA, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN4, MKK1_MKKA1, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN5, MKK1_MKKA2, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN6, MKK1_MKKC, NO, NO, NO, NO, NO, NO }, - - {CTRY_JAPAN7, MKK3_MKKB, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN8, MKK3_MKKA2, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN9, MKK3_MKKC, NO, NO, NO, NO, NO, NO }, - - {CTRY_JAPAN10, MKK4_MKKB, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN11, MKK4_MKKA2, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN12, MKK4_MKKC, NO, NO, NO, NO, NO, NO }, - - {CTRY_JAPAN13, MKK5_MKKB, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN14, MKK5_MKKA2, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN15, MKK5_MKKC, NO, NO, NO, NO, NO, NO }, - - {CTRY_JAPAN16, MKK6_MKKB, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN17, MKK6_MKKA2, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN18, MKK6_MKKC, NO, NO, NO, NO, NO, NO }, - - {CTRY_JAPAN19, MKK7_MKKB, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN20, MKK7_MKKA2, NO, NO, YES, NO, YES, NO }, - {CTRY_JAPAN21, MKK7_MKKC, NO, NO, NO, NO, NO, NO }, - - {CTRY_JAPAN22, MKK8_MKKB, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN23, MKK8_MKKA2, NO, NO, NO, NO, NO, NO }, - {CTRY_JAPAN24, MKK8_MKKC, NO, NO, NO, NO, NO, NO }, - - {CTRY_JORDAN, APL4_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_KAZAKHSTAN, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_KOREA_NORTH, APL2_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_KOREA_ROC, APL2_WORLD, NO, NO, YES, NO, YES, NO }, - {CTRY_KOREA_ROC2, APL2_WORLD, NO, NO, YES, NO, YES, NO }, - {CTRY_KOREA_ROC3, APL9_WORLD, NO, NO, YES, NO, YES, NO }, - {CTRY_KUWAIT, NULL1_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_LATVIA, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_LEBANON, NULL1_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_LIECHTENSTEIN,ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_LITHUANIA, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_LUXEMBOURG, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_MACAU, FCC2_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_MACEDONIA, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_MALAYSIA, APL8_WORLD, NO, NO, YES, NO, YES, NO }, - {CTRY_MALTA, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_MEXICO, FCC1_FCCA, YES, YES, YES,YES, YES,YES }, - {CTRY_MONACO, ETSI4_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_MOROCCO, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_NETHERLANDS, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_NEW_ZEALAND, FCC2_ETSIC, NO, YES, YES,YES, YES,YES }, - {CTRY_NORWAY, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_OMAN, APL6_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_PAKISTAN, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_PANAMA, FCC1_FCCA, YES, YES, YES,YES, YES,YES }, - {CTRY_PERU, APL1_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_PHILIPPINES, FCC3_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_POLAND, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_PORTUGAL, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_PUERTO_RICO, FCC1_FCCA, YES, YES, YES,YES, YES,YES }, - {CTRY_QATAR, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_ROMANIA, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_RUSSIA, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_SAUDI_ARABIA,FCC2_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_SINGAPORE, APL6_WORLD, YES, YES, YES,YES, YES,YES }, - {CTRY_SLOVAKIA, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_SLOVENIA, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_SOUTH_AFRICA,FCC3_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_SPAIN, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_SR9, SR9_WORLD, NO, NO, NO, NO, NO, NO }, - {CTRY_SWEDEN, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_SWITZERLAND, ETSI1_WORLD, NO, YES, YES,YES, YES,YES }, - {CTRY_SYRIA, NULL1_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_TAIWAN, APL3_FCCA, YES, YES, YES,YES, YES,YES }, - {CTRY_THAILAND, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_TRINIDAD_Y_TOBAGO,ETSI4_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_TUNISIA, ETSI3_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_TURKEY, ETSI3_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_UKRAINE, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_UAE, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_UNITED_KINGDOM, ETSI1_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_UNITED_STATES, FCC1_FCCA, YES, YES, YES,YES, YES,YES }, - {CTRY_UNITED_STATES_FCC49,FCC4_FCCA,YES, YES, YES,YES, YES,YES }, - {CTRY_URUGUAY, FCC1_WORLD, NO, YES, YES,YES, YES, NO }, - {CTRY_UZBEKISTAN, FCC3_FCCA, YES, YES, YES,YES, YES,YES }, - {CTRY_VENEZUELA, APL2_ETSIC, NO, YES, YES,YES, YES, NO }, - {CTRY_VIET_NAM, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_XR9, XR9_WORLD, NO, NO, NO, NO, NO, NO }, - {CTRY_YEMEN, NULL1_WORLD, NO, YES, YES,YES, NO, NO }, - {CTRY_ZIMBABWE, NULL1_WORLD, NO, YES, YES,YES, NO, NO } + { CTRY_DEBUG, NO_ENUMRD }, + { CTRY_DEFAULT, DEF_REGDMN }, + { CTRY_ALBANIA, NULL1_WORLD }, + { CTRY_ALGERIA, NULL1_WORLD }, + { CTRY_ARGENTINA, APL3_WORLD }, + { CTRY_ARMENIA, ETSI4_WORLD }, + { CTRY_AUSTRALIA, FCC2_WORLD }, + { CTRY_AUSTRIA, ETSI1_WORLD }, + { CTRY_AZERBAIJAN, ETSI4_WORLD }, + { CTRY_BAHRAIN, APL6_WORLD }, + { CTRY_BELARUS, NULL1_WORLD }, + { CTRY_BELGIUM, ETSI1_WORLD }, + { CTRY_BELIZE, APL1_ETSIC }, + { CTRY_BOLIVIA, APL1_ETSIC }, + { CTRY_BRAZIL, FCC3_WORLD }, + { CTRY_BRUNEI_DARUSSALAM,APL1_WORLD }, + { CTRY_BULGARIA, ETSI6_WORLD }, + { CTRY_CANADA, FCC2_FCCA }, + { CTRY_CHILE, APL6_WORLD }, + { CTRY_CHINA, APL1_WORLD }, + { CTRY_COLOMBIA, FCC1_FCCA }, + { CTRY_COSTA_RICA, NULL1_WORLD }, + { CTRY_CROATIA, ETSI3_WORLD }, + { CTRY_CYPRUS, ETSI1_WORLD }, + { CTRY_CZECH, ETSI1_WORLD }, + { CTRY_DENMARK, ETSI1_WORLD }, + { CTRY_DOMINICAN_REPUBLIC,FCC1_FCCA }, + { CTRY_ECUADOR, NULL1_WORLD }, + { CTRY_EGYPT, ETSI3_WORLD }, + { CTRY_EL_SALVADOR, NULL1_WORLD }, + { CTRY_ESTONIA, ETSI1_WORLD }, + { CTRY_FINLAND, ETSI1_WORLD }, + { CTRY_FRANCE, ETSI1_WORLD }, + { CTRY_FRANCE2, ETSI3_WORLD }, + { CTRY_GEORGIA, ETSI4_WORLD }, + { CTRY_GERMANY, ETSI1_WORLD }, + { CTRY_GREECE, ETSI1_WORLD }, + { CTRY_GUATEMALA, FCC1_FCCA }, + { CTRY_HONDURAS, NULL1_WORLD }, + { CTRY_HONG_KONG, FCC2_WORLD }, + { CTRY_HUNGARY, ETSI1_WORLD }, + { CTRY_ICELAND, ETSI1_WORLD }, + { CTRY_INDIA, APL6_WORLD }, + { CTRY_INDONESIA, APL1_WORLD }, + { CTRY_IRAN, APL1_WORLD }, + { CTRY_IRELAND, ETSI1_WORLD }, + { CTRY_ISRAEL, NULL1_WORLD }, + { CTRY_ITALY, ETSI1_WORLD }, + { CTRY_JAPAN, MKK1_MKKA }, + { CTRY_JAPAN1, MKK1_MKKB }, + { CTRY_JAPAN2, MKK1_FCCA }, + { CTRY_JAPAN3, MKK2_MKKA }, + { CTRY_JAPAN4, MKK1_MKKA1 }, + { CTRY_JAPAN5, MKK1_MKKA2 }, + { CTRY_JAPAN6, MKK1_MKKC }, + + { CTRY_JAPAN7, MKK3_MKKB }, + { CTRY_JAPAN8, MKK3_MKKA2 }, + { CTRY_JAPAN9, MKK3_MKKC }, + + { CTRY_JAPAN10, MKK4_MKKB }, + { CTRY_JAPAN11, MKK4_MKKA2 }, + { CTRY_JAPAN12, MKK4_MKKC }, + + { CTRY_JAPAN13, MKK5_MKKB }, + { CTRY_JAPAN14, MKK5_MKKA2 }, + { CTRY_JAPAN15, MKK5_MKKC }, + + { CTRY_JAPAN16, MKK6_MKKB }, + { CTRY_JAPAN17, MKK6_MKKA2 }, + { CTRY_JAPAN18, MKK6_MKKC }, + + { CTRY_JAPAN19, MKK7_MKKB }, + { CTRY_JAPAN20, MKK7_MKKA2 }, + { CTRY_JAPAN21, MKK7_MKKC }, + + { CTRY_JAPAN22, MKK8_MKKB }, + { CTRY_JAPAN23, MKK8_MKKA2 }, + { CTRY_JAPAN24, MKK8_MKKC }, + + { CTRY_JORDAN, APL4_WORLD }, + { CTRY_KAZAKHSTAN, NULL1_WORLD }, + { CTRY_KOREA_NORTH, APL2_WORLD }, + { CTRY_KOREA_ROC, APL2_WORLD }, + { CTRY_KOREA_ROC2, APL2_WORLD }, + { CTRY_KOREA_ROC3, APL9_WORLD }, + { CTRY_KUWAIT, NULL1_WORLD }, + { CTRY_LATVIA, ETSI1_WORLD }, + { CTRY_LEBANON, NULL1_WORLD }, + { CTRY_LIECHTENSTEIN,ETSI1_WORLD }, + { CTRY_LITHUANIA, ETSI1_WORLD }, + { CTRY_LUXEMBOURG, ETSI1_WORLD }, + { CTRY_MACAU, FCC2_WORLD }, + { CTRY_MACEDONIA, NULL1_WORLD }, + { CTRY_MALAYSIA, APL8_WORLD }, + { CTRY_MALTA, ETSI1_WORLD }, + { CTRY_MEXICO, FCC1_FCCA }, + { CTRY_MONACO, ETSI4_WORLD }, + { CTRY_MOROCCO, NULL1_WORLD }, + { CTRY_NETHERLANDS, ETSI1_WORLD }, + { CTRY_NEW_ZEALAND, FCC2_ETSIC }, + { CTRY_NORWAY, ETSI1_WORLD }, + { CTRY_OMAN, APL6_WORLD }, + { CTRY_PAKISTAN, NULL1_WORLD }, + { CTRY_PANAMA, FCC1_FCCA }, + { CTRY_PERU, APL1_WORLD }, + { CTRY_PHILIPPINES, FCC3_WORLD }, + { CTRY_POLAND, ETSI1_WORLD }, + { CTRY_PORTUGAL, ETSI1_WORLD }, + { CTRY_PUERTO_RICO, FCC1_FCCA }, + { CTRY_QATAR, NULL1_WORLD }, + { CTRY_ROMANIA, NULL1_WORLD }, + { CTRY_RUSSIA, NULL1_WORLD }, + { CTRY_SAUDI_ARABIA,FCC2_WORLD }, *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200901210131.n0L1V8qb062589>