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
Sam Leffler
sam at FreeBSD.org
Tue Jan 20 17:31:09 PST 2009
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 ***
More information about the svn-src-user
mailing list