commit e3102a95e057f0092cc9408cdbe587787d20cdb0 Author: Jiri Slaby Date: Sun Jun 17 10:02:53 2007 +0200 backport g support diff --git a/ath/if_ath.c b/ath/if_ath.c index 7533e01..eefbbed 100644 --- a/ath/if_ath.c +++ b/ath/if_ath.c @@ -1026,7 +1026,7 @@ ath_chan2flags(struct ieee80211com *ic, struct ieee80211_channel *chan) 0, /* IEEE80211_MODE_AUTO */ CHANNEL_A, /* IEEE80211_MODE_11A */ CHANNEL_B, /* IEEE80211_MODE_11B */ - CHANNEL_PUREG, /* IEEE80211_MODE_11G */ + CHANNEL_G, /* IEEE80211_MODE_11G */ 0, /* IEEE80211_MODE_FH */ CHANNEL_T, /* IEEE80211_MODE_TURBO_A */ CHANNEL_108G /* IEEE80211_MODE_TURBO_G */ diff --git a/openhal/ath5k.h b/openhal/ath5k.h index 8fc2ad3..153a1fe 100644 --- a/openhal/ath5k.h +++ b/openhal/ath5k.h @@ -593,17 +593,12 @@ typedef struct { #define CHANNEL_2GHZ 0x0080 /* 2GHz channel. */ #define CHANNEL_5GHZ 0x0100 /* 5GHz channel */ #define CHANNEL_PASSIVE 0x0200 /* Only passive scan allowed */ -#define CHANNEL_DYN 0x0400 /* Dynamic CCK-OFDM channel (for g operation)*/ +#define CHANNEL_DYN 0x0400 /* Dynamic CCK-OFDM channel (for g operation) */ #define CHANNEL_XR 0x0800 /* XR channel */ #define CHANNEL_A (CHANNEL_5GHZ|CHANNEL_OFDM) #define CHANNEL_B (CHANNEL_2GHZ|CHANNEL_CCK) -#define CHANNEL_PUREG (CHANNEL_2GHZ|CHANNEL_OFDM) -//#ifdef notdef -#define CHANNEL_G (CHANNEL_2GHZ|CHANNEL_DYN) -//#else -//#define CHANNEL_G (CHANNEL_2GHZ|CHANNEL_OFDM) -//#endif +#define CHANNEL_G (CHANNEL_2GHZ|CHANNEL_OFDM) #define CHANNEL_T (CHANNEL_5GHZ|CHANNEL_OFDM|CHANNEL_TURBO) #define CHANNEL_TG (CHANNEL_2GHZ|CHANNEL_OFDM|CHANNEL_TURBO) #define CHANNEL_108A CHANNEL_T diff --git a/openhal/ath5k_hw.c b/openhal/ath5k_hw.c index d8caeb5..5ceb363 100644 --- a/openhal/ath5k_hw.c +++ b/openhal/ath5k_hw.c @@ -227,14 +227,14 @@ ath_hal_computetxtime(struct ath_hal *hal, const AR5K_RATE_TABLE *rates, * Return the supported 802.11 operation modes * TODO:Left here for combatibility, change it in at5k */ -u_int/*TODO:Fix this & fix g support*/ +u_int/*TODO:Fix this */ ath_hal_getwirelessmodes(struct ath_hal *hal, AR5K_CTRY_CODE country) { switch(hal->ah_version){ case AR5K_AR5212: - return (AR5K_MODE_11A|AR5K_MODE_11B); + return (AR5K_MODE_11A|AR5K_MODE_11B|AR5K_MODE_11G); case AR5K_AR5211: - return (AR5K_MODE_11A|AR5K_MODE_11B); + return (AR5K_MODE_11A|AR5K_MODE_11B|AR5K_MODE_11G); default : return(AR5K_MODE_11A); } @@ -594,15 +594,15 @@ ath5k_hw_nic_wakeup(struct ath_hal *hal, u_int16_t flags, AR5K_BOOL initial) if (flags & CHANNEL_CCK) { mode |= AR5K_PHY_MODE_MOD_CCK; - } else if (flags & CHANNEL_OFDM) { - mode |= AR5K_PHY_MODE_MOD_OFDM; - } else if (flags & CHANNEL_DYN) { + } else if (flags & CHANNEL_G) { /* Dynamic OFDM/CCK is not supported by the AR5211 */ if (hal->ah_version == AR5K_AR5211) { - mode |= AR5K_PHY_MODE_MOD_CCK; + mode |= AR5K_PHY_MODE_MOD_OFDM; } else { mode |= AR5K_PHY_MODE_MOD_DYN; } + } else if (flags & CHANNEL_OFDM) { + mode |= AR5K_PHY_MODE_MOD_OFDM; } else { AR5K_PRINT("invalid radio frequency mode\n"); return (FALSE); @@ -1062,7 +1062,7 @@ ath5k_hw_reset(struct ath_hal *hal, AR5K_OPMODE op_mode, AR5K_CHANNEL *channel, hal->ah_radio_5ghz_revision < AR5K_SREV_RAD_5112A) { AR5K_REG_WRITE(AR5K_PHY_CCKTXCTL, AR5K_PHY_CCKTXCTL_WORLD); - if (channel->channel_flags & CHANNEL_OFDM) + if (channel->channel_flags & CHANNEL_A) data = 0xffb81020; else data = 0xffb80d20; @@ -1286,7 +1286,7 @@ ath5k_hw_reset(struct ath_hal *hal, AR5K_OPMODE op_mode, AR5K_CHANNEL *channel, return (FALSE); } - /* Wait until the noise floor is calibrated */ + /* Wait until the noise floor is calibrated and read the value */ for (i = 20; i > 0; i--) { udelay(1000); noise_floor = AR5K_REG_READ(AR5K_PHY_NF); @@ -2627,10 +2627,9 @@ ath5k_hw_get_capabilities(struct ath_hal *hal) if (AR5K_EEPROM_HDR_11B(ee_header)) hal->ah_capabilities.cap_mode |= AR5K_MODE_11B; -#if 0 + if (AR5K_EEPROM_HDR_11G(ee_header)) hal->ah_capabilities.cap_mode |= AR5K_MODE_11G; -#endif } } @@ -4816,11 +4815,8 @@ ath_hal_init_channels(struct ath_hal *hal, AR5K_CHANNEL *channels, min = 1; /* 2GHz channel 1 -2412Mhz */ max = 26;/* 2GHz channel 26 (non-ieee) -2732Mhz */ - flags = CHANNEL_B /*| CHANNEL_TG | - (hal->ah_version == AR5K_AR5211 ? - CHANNEL_PUREG : CHANNEL_G)*/; - - debugchan: + flags = CHANNEL_B | CHANNEL_G; +debugchan: for (i = min; (i <= max) && (c < max_channels); i++) { freq = ath_hal_ieee2mhz(i, flags); if (ath5k_check_channel(hal, freq, flags) == FALSE) @@ -4908,12 +4904,10 @@ for loop starts from 1 and all channels are marked as 5GHz M.F.*/ if ((hal->ah_capabilities.cap_mode & AR5K_MODE_11G) && (ath5k_2ghz_channels[i].rc_mode & CHANNEL_OFDM)) { - all_channels[c].channel_flags |= - hal->ah_version == AR5K_AR5211 ? - CHANNEL_PUREG : CHANNEL_G; - if (ath5k_2ghz_channels[i].rc_mode & + all_channels[c].channel_flags |= CHANNEL_G; +/* if (ath5k_2ghz_channels[i].rc_mode & CHANNEL_TURBO) - all_channels[c].channel_flags |= CHANNEL_TG; + all_channels[c].channel_flags |= CHANNEL_TG;*/ } /* Write channel and increment counter */