[Madwifi-cvs] revision 1868 committed
Status: Beta
Brought to you by:
otaku
From: Nick K. <svn...@ma...> - 2006-12-28 02:24:26
|
Project : madwifi Revision : 1868 Author : mickflemm (Nick Kossifidis) Date : 2006-12-28 03:24:12 +0100 (Thu, 28 Dec 2006) Log Message : *Removed ieee80211_phytype as sugested in netdev, using IEEE80211_RATE_* instead Affected Files: * branches/dadwifi-openhal/ath/if_ath.c updated * branches/dadwifi-openhal/ath/if_ath_d80211.c updated * branches/dadwifi-openhal/openhal/ar5212.c updated * branches/dadwifi-openhal/openhal/ar5xxx.c updated * branches/dadwifi-openhal/openhal/ar5xxx.h updated Modified: branches/dadwifi-openhal/ath/if_ath.c =================================================================== --- branches/dadwifi-openhal/ath/if_ath.c 2006-12-27 16:59:28 UTC (rev 1867) +++ branches/dadwifi-openhal/ath/if_ath.c 2006-12-28 02:24:12 UTC (rev 1868) @@ -3819,8 +3819,8 @@ cix = rt->info[sc->sc_protrix].control_rate; /* for XR VAP use different RTSCTS rates and calculate duration */ ctsrate = rt->info[cix].rate_code; - if (USE_SHPREAMBLE(ic)) - ctsrate |= rt->info[cix].short_preamble; + if (USE_SHPREAMBLE(ic) && HAS_SHPREAMBLE(cix)) + ctsrate |= AR5K_SET_SHORT_PREAMBLE; flags |= AR5K_TXDESC_CTSENA; rt = sc->sc_xr_rates; ctsduration = ath_hal_computetxtime(ah,rt, pktlen, @@ -5958,8 +5958,8 @@ rt = sc->sc_currates; cix = rt->info[sc->sc_protrix].control_rate; ctsrate = rt->info[cix].rate_code; - if (USE_SHPREAMBLE(ic)) - ctsrate |= rt->info[cix].short_preamble; + if (USE_SHPREAMBLE(ic) && HAS_SHPREAMBLE(cix)) + ctsrate |= AR5K_SET_SHORT_PREAMBLE; rt = sc->sc_xr_rates; /* * queue the group polls for each antenna mode. set the right keycache index for the @@ -6725,8 +6725,8 @@ atype = AR5K_PKT_TYPE_NORMAL; /* XXX */ rix = sc->sc_minrateix; txrate = rt->info[rix].rate_code; - if (short_preamble) - txrate |= rt->info[rix].short_preamble; + if (short_preamble && HAS_SHPREAMBLE(rix)) + txrate |= AR5K_SET_SHORT_PREAMBLE; try0 = ATH_TXMAXTRY; if (ni->ni_flags & IEEE80211_NODE_QOS) { @@ -6739,8 +6739,8 @@ atype = AR5K_PKT_TYPE_PSPOLL; /* stop setting of duration */ rix = sc->sc_minrateix; txrate = rt->info[rix].rate_code; - if (short_preamble) - txrate |= rt->info[rix].short_preamble; + if (short_preamble && HAS_SHPREAMBLE(rix)) + txrate |= AR5K_SET_SHORT_PREAMBLE; try0 = ATH_TXMAXTRY; if (ni->ni_flags & IEEE80211_NODE_QOS) { @@ -6755,8 +6755,8 @@ if (ismcast) { rix = ath_tx_findindex(rt, vap->iv_mcast_rate); txrate = rt->info[rix].rate_code; - if (short_preamble) - txrate |= rt->info[rix].short_preamble; + if (short_preamble && HAS_SHPREAMBLE(rix)) + txrate |= AR5K_SET_SHORT_PREAMBLE; /* * ATH_TXMAXTRY disables Multi-rate retries, which * isn't applicable to mcast packets and overrides @@ -6851,7 +6851,7 @@ * done for OFDM unicast frames. */ if ((ic->ic_flags & IEEE80211_F_USEPROT) && - rt->info[rix].phy == ieee80211_phytype_ofdm_dot11_g && + (rt->info[rix].modulation == IEEE80211_RATE_OFDM) && (flags & AR5K_TXDESC_NOACK) == 0) { /* XXX fragments must use CCK rates w/ protection */ if (ic->ic_protmode == IEEE80211_PROT_RTSCTS) @@ -6937,8 +6937,8 @@ * NB: CTS is assumed the same size as an ACK so we can * use the precalculated ACK durations. */ - if (short_preamble) { - ctsrate |= rt->info[cix].short_preamble; + if (short_preamble && HAS_SHPREAMBLE(cix)) { + ctsrate |= AR5K_SET_SHORT_PREAMBLE; if (flags & AR5K_TXDESC_RTSENA) /* SIFS + CTS */ ctsduration += rt->info[cix].sp_ack_duration; ctsduration += ath_hal_computetxtime(ah, @@ -8864,9 +8864,8 @@ #if 0 sc->sc_hwmap[i].ieeerate = rt->info[ix].dot11_rate & IEEE80211_RATE_VAL; - if (rt->info[ix].short_preamble || - rt->info[ix].phy == ieee80211_phytype_ofdm_dot11_g || - rt->info[ix].phy == ieee80211_phytype_ofdm_dot11_a) + if (HAS_SHPREAMBLE(ix) || + rt->info[ix].modulation == IEEE80211_RATE_OFDM) sc->sc_hwmap[i].flags |= IEEE80211_RADIOTAP_F_SHORTPRE; #endif /* setup blink rate table to avoid per-packet lookup */ Modified: branches/dadwifi-openhal/ath/if_ath_d80211.c =================================================================== --- branches/dadwifi-openhal/ath/if_ath_d80211.c 2006-12-27 16:59:28 UTC (rev 1867) +++ branches/dadwifi-openhal/ath/if_ath_d80211.c 2006-12-28 02:24:12 UTC (rev 1868) @@ -209,27 +209,8 @@ rates[i].rate = rt->info[i].rate_kbps / 100; rates[i].val = rt->info[i].rate_code; - switch (rt->info[i].phy) { - case ieee80211_phytype_ofdm_dot11_a: - case ieee80211_phytype_ofdm_dot11_g: - rates[i].flags |= IEEE80211_RATE_OFDM; - break; - case ieee80211_phytype_dsss_dot11_b: - rates[i].flags |= IEEE80211_RATE_CCK; - break; - case ieee80211_phytype_atheros_turbo: - rates[i].flags |= IEEE80211_RATE_TURBO; - break; - default: - printk("unknown phy type %d\n", - rt->info[i].phy); - } + rates[i].flags = rt->info[i].modulation; - if (rt->info[i].short_preamble) { - rates[i].flags |= IEEE80211_RATE_PREAMBLE2; - rates[i].val2 = rt->info[i].rate_code | - rt->info[i].short_preamble; - } /* FIXME rates[i].min_rssi_ack = ?; */ /* FIXME rates[i].min_rssi_ack_delta = ?; */ mode->num_rates++; Modified: branches/dadwifi-openhal/openhal/ar5212.c =================================================================== --- branches/dadwifi-openhal/openhal/ar5212.c 2006-12-27 16:59:28 UTC (rev 1867) +++ branches/dadwifi-openhal/openhal/ar5212.c 2006-12-28 02:24:12 UTC (rev 1868) @@ -609,9 +609,9 @@ AR5K_REG_WRITE(data, ath_hal_computetxtime(hal, rt, 14, rt->info[i].control_rate, FALSE)); - if (rt->info[i].short_preamble) { + if (HAS_SHPREAMBLE(i)) { AR5K_REG_WRITE(data + - (rt->info[i].short_preamble << 2), + (AR5K_SET_SHORT_PREAMBLE << 2), ath_hal_computetxtime(hal, rt, 14, rt->info[i].control_rate, FALSE)); } Modified: branches/dadwifi-openhal/openhal/ar5xxx.c =================================================================== --- branches/dadwifi-openhal/openhal/ar5xxx.c 2006-12-27 16:59:28 UTC (rev 1867) +++ branches/dadwifi-openhal/openhal/ar5xxx.c 2006-12-28 02:24:12 UTC (rev 1868) @@ -336,26 +336,20 @@ /* * Calculate the transmission time by operation (PHY) mode */ - switch (rate->phy) { - case ieee80211_phytype_dsss_dot11_b: + if(rate->modulation & IEEE80211_RATE_CCK){ /* * CCK / DS mode (802.11b) */ value = AR5K_CCK_TX_TIME(rate->rate_kbps, frame_length, - (short_preamble && rate->short_preamble)); - break; - - case ieee80211_phytype_ofdm_dot11_a: - case ieee80211_phytype_ofdm_dot11_g: + (short_preamble && (rate->modulation & IEEE80211_RATE_PREAMBLE2))); + }else if(rate->modulation & IEEE80211_RATE_OFDM){ /* * Orthogonal Frequency Division Multiplexing */ if (AR5K_OFDM_NUM_BITS_PER_SYM(rate->rate_kbps) == 0) return (0); value = AR5K_OFDM_TX_TIME(rate->rate_kbps, frame_length); - break; - - case ieee80211_phytype_atheros_turbo: + }else if(rate->modulation & IEEE80211_RATE_TURBO){ /* * Orthogonal Frequency Division Multiplexing * Atheros "Turbo Mode" (doubled rates) @@ -363,9 +357,7 @@ if (AR5K_TURBO_NUM_BITS_PER_SYM(rate->rate_kbps) == 0) return (0); value = AR5K_TURBO_TX_TIME(rate->rate_kbps, frame_length); - break; - - case ieee80211_phytype_atheros_xr: + }else if(rate->modulation & IEEE80211_RATE_XR){ /* * Orthogonal Frequency Division Multiplexing * Atheros "eXtended Range" (XR) @@ -373,9 +365,7 @@ if (AR5K_XR_NUM_BITS_PER_SYM(rate->rate_kbps) == 0) return (0); value = AR5K_XR_TX_TIME(rate->rate_kbps, frame_length); - break; - - default: + } else { return (0); } Modified: branches/dadwifi-openhal/openhal/ar5xxx.h =================================================================== --- branches/dadwifi-openhal/openhal/ar5xxx.h 2006-12-27 16:59:28 UTC (rev 1867) +++ branches/dadwifi-openhal/openhal/ar5xxx.h 2006-12-28 02:24:12 UTC (rev 1868) @@ -48,8 +48,8 @@ /*d80211 definitions*/ #include <net/d80211.h> -/*for phytype*/ -#include <net/d80211_common.h> +/*for rates*/ +#include <net/d80211_shared.h> @@ -569,7 +569,7 @@ #define AR5K_SLOT_TIME_MAX 0xffff /* channel_flags */ -#define CHANNEL_CW_INT 0x0002 /* Contention Window interference detected */ +#define CHANNEL_CW_INT 0x0008 /* Contention Window interference detected */ #define CHANNEL_TURBO 0x0010 /* Turbo Channel */ #define CHANNEL_CCK 0x0020 /* CCK channel */ #define CHANNEL_OFDM 0x0040 /* OFDM channel */ @@ -627,18 +627,19 @@ * Rate definitions */ -/*TODO:These should go to d80211_common.h*/ -#define ieee80211_phytype_atheros_turbo 9 /*atheros turbo (ofdm -doubled rates)*/ -#define ieee80211_phytype_atheros_xr 10 /*XR thingie*/ +/*TODO:This should go to d80211_shared.h*/ +#define IEEE80211_RATE_XR 0x00000200 /*XR thingie*/ +#define AR5K_SET_SHORT_PREAMBLE 0x04 /* adding this flag to rate_code + enables short preamble, see ar5212_reg.h */ +#define HAS_SHPREAMBLE(_ix) (rt->info[_ix].modulation & IEEE80211_RATE_PREAMBLE2) #define AR5K_MAX_RATES 32 /*max number of rates on the rate table*/ typedef struct { u_int8_t valid; /* Valid for rate control */ - u_int8_t phy; /* See ieee80211_phytype */ + u_int32_t modulation; /* d80211_shared.h */ u_int16_t rate_kbps; u_int8_t rate_code; /* Rate mapping for h/w descriptors */ - u_int8_t short_preamble; /* Enable/disable short preamble in CCK rates */ u_int8_t dot11_rate; u_int8_t control_rate; u_int16_t lp_ack_duration;/* long preamble ACK duration */ @@ -658,74 +659,74 @@ 255, 255, 255, 255, 255, 255, 255, 255, 6, 4, 2, 0, \ 7, 5, 3, 1, 255, 255, 255, 255, 255, 255, 255, 255, \ 255, 255, 255, 255, 255, 255, 255, 255 }, { \ - { 1, ieee80211_phytype_ofdm_dot11_a, 6000, 11, 0, 140, 0 }, \ - { 1, ieee80211_phytype_ofdm_dot11_a, 9000, 15, 0, 18, 0 }, \ - { 1, ieee80211_phytype_ofdm_dot11_a, 12000, 10, 0, 152, 2 }, \ - { 1, ieee80211_phytype_ofdm_dot11_a, 18000, 14, 0, 36, 2 }, \ - { 1, ieee80211_phytype_ofdm_dot11_a, 24000, 9, 0, 176, 4 }, \ - { 1, ieee80211_phytype_ofdm_dot11_a, 36000, 13, 0, 72, 4 }, \ - { 1, ieee80211_phytype_ofdm_dot11_a, 48000, 8, 0, 96, 4 }, \ - { 1, ieee80211_phytype_ofdm_dot11_a, 54000, 12, 0, 108, 4 } } \ + { 1, IEEE80211_RATE_OFDM, 6000, 11, 140, 0 }, \ + { 1, IEEE80211_RATE_OFDM, 9000, 15, 18, 0 }, \ + { 1, IEEE80211_RATE_OFDM, 12000, 10, 152, 2 }, \ + { 1, IEEE80211_RATE_OFDM, 18000, 14, 36, 2 }, \ + { 1, IEEE80211_RATE_OFDM, 24000, 9, 176, 4 }, \ + { 1, IEEE80211_RATE_OFDM, 36000, 13, 72, 4 }, \ + { 1, IEEE80211_RATE_OFDM, 48000, 8, 96, 4 }, \ + { 1, IEEE80211_RATE_OFDM, 54000, 12, 108, 4 } } \ } #define AR5K_RATES_11B { 4, { \ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, \ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, \ 3, 2, 1, 0, 255, 255, 255, 255 }, { \ - { 1, ieee80211_phytype_dsss_dot11_b, 1000, 27, 0x00, 130, 0 }, \ - { 1, ieee80211_phytype_dsss_dot11_b, 2000, 26, 0x04, 132, 1 }, \ - { 1, ieee80211_phytype_dsss_dot11_b, 5500, 25, 0x04, 139, 1 }, \ - { 1, ieee80211_phytype_dsss_dot11_b, 11000, 24, 0x04, 150, 1 } }\ + { 1, IEEE80211_RATE_CCK, 1000, 27, 130, 0 }, \ + { 1, IEEE80211_RATE_CCK_2, 2000, 26, 132, 1 }, \ + { 1, IEEE80211_RATE_CCK_2, 5500, 25, 139, 1 }, \ + { 1, IEEE80211_RATE_CCK_2, 11000, 24, 150, 1 } }\ } #define AR5K_RATES_11G { 12, { \ 255, 255, 255, 255, 255, 255, 255, 255, 10, 8, 6, 4, \ 11, 9, 7, 5, 255, 255, 255, 255, 255, 255, 255, 255, \ 3, 2, 1, 0, 255, 255, 255, 255 }, { \ - { 1, ieee80211_phytype_dsss_dot11_b, 1000, 27, 0x00, 2, 0 }, \ - { 1, ieee80211_phytype_dsss_dot11_b, 2000, 26, 0x04, 4, 1 }, \ - { 1, ieee80211_phytype_dsss_dot11_b, 5500, 25, 0x04, 11, 1 }, \ - { 1, ieee80211_phytype_dsss_dot11_b, 11000, 24, 0x04, 22, 1 }, \ - { 0, ieee80211_phytype_ofdm_dot11_g, 6000, 11, 0, 12, 4 }, \ - { 0, ieee80211_phytype_ofdm_dot11_g, 9000, 15, 0, 18, 4 }, \ - { 1, ieee80211_phytype_ofdm_dot11_g, 12000, 10, 0, 24, 6 }, \ - { 1, ieee80211_phytype_ofdm_dot11_g, 18000, 14, 0, 36, 6 }, \ - { 1, ieee80211_phytype_ofdm_dot11_g, 24000, 9, 0, 48, 8 }, \ - { 1, ieee80211_phytype_ofdm_dot11_g, 36000, 13, 0, 72, 8 }, \ - { 1, ieee80211_phytype_ofdm_dot11_g, 48000, 8, 0, 96, 8 }, \ - { 1, ieee80211_phytype_ofdm_dot11_g, 54000, 12, 0, 108, 8 } } \ + { 1, IEEE80211_RATE_CCK, 1000, 27, 2, 0 }, \ + { 1, IEEE80211_RATE_CCK, 2000, 26, 4, 1 }, \ + { 1, IEEE80211_RATE_CCK_2, 5500, 25, 11, 1 }, \ + { 1, IEEE80211_RATE_CCK_2, 11000, 24, 22, 1 }, \ + { 0, IEEE80211_RATE_OFDM, 6000, 11, 12, 4 }, \ + { 0, IEEE80211_RATE_OFDM, 9000, 15, 18, 4 }, \ + { 1, IEEE80211_RATE_OFDM, 12000, 10, 24, 6 }, \ + { 1, IEEE80211_RATE_OFDM, 18000, 14, 36, 6 }, \ + { 1, IEEE80211_RATE_OFDM, 24000, 9, 48, 8 }, \ + { 1, IEEE80211_RATE_OFDM, 36000, 13, 72, 8 }, \ + { 1, IEEE80211_RATE_OFDM, 48000, 8, 96, 8 }, \ + { 1, IEEE80211_RATE_OFDM, 54000, 12, 108, 8 } } \ } #define AR5K_RATES_TURBO { 8, { \ 255, 255, 255, 255, 255, 255, 255, 255, 6, 4, 2, 0, \ 7, 5, 3, 1, 255, 255, 255, 255, 255, 255, 255, 255, \ 255, 255, 255, 255, 255, 255, 255, 255 }, { \ - { 1, ieee80211_phytype_atheros_turbo, 6000, 11, 0, 140, 0 }, \ - { 1, ieee80211_phytype_atheros_turbo, 9000, 15, 0, 18, 0 }, \ - { 1, ieee80211_phytype_atheros_turbo, 12000, 10, 0, 152, 2 }, \ - { 1, ieee80211_phytype_atheros_turbo, 18000, 14, 0, 36, 2 }, \ - { 1, ieee80211_phytype_atheros_turbo, 24000, 9, 0, 176, 4 }, \ - { 1, ieee80211_phytype_atheros_turbo, 36000, 13, 0, 72, 4 }, \ - { 1, ieee80211_phytype_atheros_turbo, 48000, 8, 0, 96, 4 }, \ - { 1, ieee80211_phytype_atheros_turbo, 54000, 12, 0, 108, 4 } } \ + { 1, IEEE80211_RATE_TURBO, 6000, 11, 140, 0 }, \ + { 1, IEEE80211_RATE_TURBO, 9000, 15, 18, 0 }, \ + { 1, IEEE80211_RATE_TURBO, 12000, 10, 152, 2 }, \ + { 1, IEEE80211_RATE_TURBO, 18000, 14, 36, 2 }, \ + { 1, IEEE80211_RATE_TURBO, 24000, 9, 176, 4 }, \ + { 1, IEEE80211_RATE_TURBO, 36000, 13, 72, 4 }, \ + { 1, IEEE80211_RATE_TURBO, 48000, 8, 96, 4 }, \ + { 1, IEEE80211_RATE_TURBO, 54000, 12, 108, 4 } }\ } #define AR5K_RATES_XR { 12, { \ 255, 3, 1, 255, 255, 255, 2, 0, 10, 8, 6, 4, \ 11, 9, 7, 5, 255, 255, 255, 255, 255, 255, 255, 255, \ 255, 255, 255, 255, 255, 255, 255, 255 }, { \ - { 1, ieee80211_phytype_atheros_xr, 500, 7, 0, 129, 0 }, \ - { 1, ieee80211_phytype_atheros_xr, 1000, 2, 0, 139, 1 }, \ - { 1, ieee80211_phytype_atheros_xr, 2000, 6, 0, 150, 2 }, \ - { 1, ieee80211_phytype_atheros_xr, 3000, 1, 0, 150, 3 }, \ - { 1, ieee80211_phytype_ofdm_dot11_a, 6000, 11, 0, 140, 4 }, \ - { 1, ieee80211_phytype_ofdm_dot11_a, 9000, 15, 0, 18, 4 }, \ - { 1, ieee80211_phytype_ofdm_dot11_a, 12000, 10, 0, 152, 6 }, \ - { 1, ieee80211_phytype_ofdm_dot11_a, 18000, 14, 0, 36, 6 }, \ - { 1, ieee80211_phytype_ofdm_dot11_a, 24000, 9, 0, 176, 8 }, \ - { 1, ieee80211_phytype_ofdm_dot11_a, 36000, 13, 0, 72, 8 }, \ - { 1, ieee80211_phytype_ofdm_dot11_a, 48000, 8, 0, 96, 8 }, \ - { 1, ieee80211_phytype_ofdm_dot11_a, 54000, 12, 0, 108, 8 } } \ + { 1, IEEE80211_RATE_XR, 500, 7, 129, 0 }, \ + { 1, IEEE80211_RATE_XR, 1000, 2, 139, 1 }, \ + { 1, IEEE80211_RATE_XR, 2000, 6, 150, 2 }, \ + { 1, IEEE80211_RATE_XR, 3000, 1, 150, 3 }, \ + { 1, IEEE80211_RATE_OFDM, 6000, 11, 140, 4 }, \ + { 1, IEEE80211_RATE_OFDM, 9000, 15, 18, 4 }, \ + { 1, IEEE80211_RATE_OFDM, 12000, 10, 152, 6 }, \ + { 1, IEEE80211_RATE_OFDM, 18000, 14, 36, 6 }, \ + { 1, IEEE80211_RATE_OFDM, 24000, 9, 176, 8 }, \ + { 1, IEEE80211_RATE_OFDM, 36000, 13, 72, 8 }, \ + { 1, IEEE80211_RATE_OFDM, 48000, 8, 96, 8 }, \ + { 1, IEEE80211_RATE_OFDM, 54000, 12, 108, 8 } } \ } /* |