svn commit: r187560 - user/sam/wifi/sys/dev/ath/ath_hal
Sam Leffler
sam at FreeBSD.org
Wed Jan 21 10:53:47 PST 2009
Author: sam
Date: Wed Jan 21 18:53:46 2009
New Revision: 187560
URL: http://svn.freebsd.org/changeset/base/187560
Log:
handle failure properly in ath_hal_init_channels; remove error return
on 0 channels to be consistent with ath_hal_set_channels
Modified:
user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c
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 18:52:33 2009 (r187559)
+++ user/sam/wifi/sys/dev/ath/ath_hal/ah_regdomain.c Wed Jan 21 18:53:46 2009 (r187560)
@@ -436,12 +436,8 @@ static REG_DMN_PAIR_MAPPING regDomainPai
*/
#define DEF_REGDMN FCC1_FCCA
-#define DEF_DMN_5 FCC1
-#define DEF_DMN_2 FCCA
#define COUNTRY_ERD_FLAG 0x8000
#define WORLDWIDE_ROAMING_FLAG 0x4000
-#define SUPER_DOMAIN_MASK 0x0fff
-#define COUNTRY_CODE_MASK 0x3fff
typedef struct {
HAL_CTRY_CODE countryCode;
@@ -2203,55 +2199,55 @@ ath_hal_init_channels(struct ath_hal *ah
COUNTRY_CODE_TO_ENUM_RD *country;
REG_DOMAIN *rd5GHz, *rd2GHz;
HAL_STATUS status;
+ struct ieee80211_channel *c;
+ HAL_CHANNEL_INTERNAL *ic;
+ int i;
if (maxchans > N(AH_PRIVATE(ah)->ah_channels))
maxchans = N(AH_PRIVATE(ah)->ah_channels);
status = getchannels(ah, chans, maxchans, nchans, modeSelect,
cc, regDmn, enableExtendedChannels, &country, &rd2GHz, &rd5GHz);
- if (status == HAL_OK) {
- struct ieee80211_channel *c;
- HAL_CHANNEL_INTERNAL *ic;
- int i;
-
- for (i = 0; i < *nchans; i++) {
- c = &chans[i];
- ic = &AH_PRIVATE(ah)->ah_channels[i];
+ if (status != HAL_OK)
+ return status;
+ for (i = 0; i < *nchans; i++) {
+ c = &chans[i];
+ ic = &AH_PRIVATE(ah)->ah_channels[i];
- OS_MEMZERO(ic, sizeof(*ic));
- ic->channel = c->ic_freq;
- ic->channelFlags = c->ic_flags;
- ic->devdata = i; /* XXX */
- ic->maxRegTxPower = c->ic_maxregpower;
- ic->maxTxPower = c->ic_maxpower;
- ic->minTxPower = c->ic_minpower;
- ic->antennaMax = c->ic_maxantgain;
+ OS_MEMZERO(ic, sizeof(*ic));
+ ic->channel = c->ic_freq;
+ ic->channelFlags = c->ic_flags;
+ ic->devdata = i; /* XXX */
+ ic->maxRegTxPower = c->ic_maxregpower;
+ ic->maxTxPower = c->ic_maxpower;
+ ic->minTxPower = c->ic_minpower;
+ ic->antennaMax = c->ic_maxantgain;
- c->ic_devdata = i;
+ c->ic_devdata = i;
- if (IEEE80211_IS_CHAN_PUREG(c)) {
- /*
- * Except for AR5211, PUREG means mixed
- * DSSS and OFDM; convert to "just G".
- */
- c->ic_flags &= ~IEEE80211_CHAN_PUREG;
- c->ic_flags |= IEEE80211_CHAN_G;
- }
- HALDEBUG(ah, HAL_DEBUG_REGDOMAIN,
- "[%3u] freq %u/0x%x txpow reg/max/min %u/%u/%u"
- " antmax %u ctl 0x%x\n",
- i, c->ic_freq, c->ic_flags,
- c->ic_maxregpower, c->ic_maxpower, c->ic_minpower,
- c->ic_maxantgain, ic->ctl);
+ if (IEEE80211_IS_CHAN_PUREG(c)) {
+ /*
+ * Except for AR5211, PUREG means mixed
+ * DSSS and OFDM; convert to "just G".
+ */
+ c->ic_flags &= ~IEEE80211_CHAN_PUREG;
+ c->ic_flags |= IEEE80211_CHAN_G;
}
- AH_PRIVATE(ah)->ah_nchan = *nchans;
- AH_PRIVATE(ah)->ah_rd2GHz = rd2GHz;
- AH_PRIVATE(ah)->ah_rd5GHz = rd5GHz;
-
- ah->ah_countryCode = country->countryCode;
- HALDEBUG(ah, HAL_DEBUG_REGDOMAIN, "%s: cc %u\n",
- __func__, ah->ah_countryCode);
+ HALDEBUG(ah, HAL_DEBUG_REGDOMAIN,
+ "[%3u] freq %u/0x%x txpow reg/max/min %u/%u/%u"
+ " antmax %u ctl 0x%x\n",
+ i, c->ic_freq, c->ic_flags,
+ c->ic_maxregpower, c->ic_maxpower, c->ic_minpower,
+ c->ic_maxantgain, ic->ctl);
}
- return (*nchans != 0) ? HAL_OK : HAL_ENOMEM; /* XXX ENOMEM */
+ AH_PRIVATE(ah)->ah_nchan = *nchans;
+ AH_PRIVATE(ah)->ah_rd2GHz = rd2GHz;
+ AH_PRIVATE(ah)->ah_rd5GHz = rd5GHz;
+
+ ah->ah_countryCode = country->countryCode;
+ HALDEBUG(ah, HAL_DEBUG_REGDOMAIN, "%s: cc %u\n",
+ __func__, ah->ah_countryCode);
+
+ return HAL_OK;
}
/*
More information about the svn-src-user
mailing list