--- a/ath_rate/minstrel/minstrel.c +++ b/ath_rate/minstrel/minstrel.c @@ -111,27 +111,13 @@ #include #include +#include "if_ath_debug.h" #include "if_athvar.h" #include "if_ath_hal.h" #include "ah_desc.h" #include "minstrel.h" -#ifdef AR_DEBUG -#define MINSTREL_DEBUG -#endif -#ifdef MINSTREL_DEBUG -enum { - ATH_DEBUG_RATE = 0x00000010 /* rate control */ -}; -#define DPRINTF(sc, _fmt, ...) do { \ - if (sc->sc_debug & ATH_DEBUG_RATE) \ - printk(_fmt, __VA_ARGS__); \ -} while (0) -#else -#define DPRINTF(sc, _fmt, ...) -#endif - #define ONE_SECOND (1000 * 1000) /* 1 second, or 1000 milliseconds; eternity, in other words */ #include "release.h" @@ -689,17 +675,17 @@ * the node. We know the rate is there because the * rate set is checked when the station associates. */ /* NB: the rate set is assumed sorted */ - for (; (srate >= 0) && (ni->ni_rates.rs_rates[srate] & IEEE80211_RATE_VAL) != vap->iv_fixed_rate; srate--); - - KASSERT(srate >= 0, - ("fixed rate %d not in rate set", vap->iv_fixed_rate)); + for (; (srate > 0) && (ni->ni_rates.rs_rates[srate] & IEEE80211_RATE_VAL) != vap->iv_fixed_rate; srate--); sn->static_rate_ndx = srate; ni->ni_txrate = srate; - DPRINTF(sc, "%s: %s " MAC_FMT " fixed rate %d%sMbps\n", - dev_info, __func__, MAC_ADDR(ni->ni_macaddr), - sn->rates[srate].rate / 2, - (sn->rates[srate].rate % 2) ? ".5 " : " "); + if ((ni->ni_rates.rs_rates[srate] & IEEE80211_RATE_VAL) != vap->iv_fixed_rate) + EPRINTF(sc, "Invalid static rate, falling back to basic rate\n"); + else + DPRINTF(sc, "%s: %s " MAC_FMT " fixed rate %d%sMbps\n", + dev_info, __func__, MAC_ADDR(ni->ni_macaddr), + sn->rates[srate].rate / 2, + (sn->rates[srate].rate % 2) ? ".5 " : " "); return; } --- a/ath_rate/amrr/amrr.c +++ b/ath_rate/amrr/amrr.c @@ -64,24 +64,13 @@ #include #include +#include "if_ath_debug.h" #include "if_athvar.h" #include "if_ath_hal.h" #include "ah_desc.h" #include "amrr.h" -#ifdef AR_DEBUG -#define AMRR_DEBUG -#endif -#ifdef AMRR_DEBUG -#define DPRINTF(sc, _fmt, ...) do { \ - if (sc->sc_debug & 0x10) \ - printk(_fmt, __VA_ARGS__); \ -} while (0) -#else -#define DPRINTF(sc, _fmt, ...) -#endif - static int ath_rateinterval = 1000; /* rate ctl interval (ms) */ static int ath_rate_max_success_threshold = 10; static int ath_rate_min_success_threshold = 1; @@ -297,9 +286,9 @@ * rate set is checked when the station associates. */ srate = ni->ni_rates.rs_nrates - 1; - for (; srate >= 0 && RATE(srate) != vap->iv_fixed_rate; srate--); - KASSERT(srate >= 0, - ("fixed rate %d not in rate set", vap->iv_fixed_rate)); + for (; srate > 0 && RATE(srate) != vap->iv_fixed_rate; srate--); + if (RATE(srate) != vap->iv_fixed_rate) + EPRINTF(sc, "Invalid static rate, falling back to basic rate\n"); } ath_rate_update(sc, ni, srate); #undef RATE --- a/ath_rate/onoe/onoe.c +++ b/ath_rate/onoe/onoe.c @@ -60,27 +60,13 @@ #include #include +#include "if_ath_debug.h" #include "if_athvar.h" #include "if_ath_hal.h" #include "ah_desc.h" #include "onoe.h" -#ifdef AR_DEBUG -#define ONOE_DEBUG -#endif -#ifdef ONOE_DEBUG -enum { - ATH_DEBUG_RATE = 0x00000010, /* rate control */ -}; -#define DPRINTF(sc, _fmt, ...) do { \ - if (sc->sc_debug & ATH_DEBUG_RATE) \ - printk(_fmt, __VA_ARGS__); \ -} while (0) -#else -#define DPRINTF(sc, _fmt, ...) -#endif - /* * Default parameters for the rate control algorithm. These are * all tunable with sysctls. The rate controller runs periodically @@ -283,9 +269,9 @@ */ /* NB: the rate set is assumed sorted */ srate = ni->ni_rates.rs_nrates - 1; - for (; srate >= 0 && RATE(srate) != vap->iv_fixed_rate; srate--); - KASSERT(srate >= 0, - ("fixed rate %d not in rate set", vap->iv_fixed_rate)); + for (; srate > 0 && RATE(srate) != vap->iv_fixed_rate; srate--); + if (RATE(srate) != vap->iv_fixed_rate) + EPRINTF(sc, "Invalid static rate, falling back to basic rate\n"); } ath_rate_update(sc, ni, srate); #undef RATE --- a/ath_rate/sample/sample.c +++ b/ath_rate/sample/sample.c @@ -62,30 +62,13 @@ #include #include +#include "if_ath_debug.h" #include "if_athvar.h" #include "if_ath_hal.h" #include "ah_desc.h" #include "sample.h" -#ifdef AR_DEBUG -#define SAMPLE_DEBUG -#endif -#ifdef SAMPLE_DEBUG -enum { - ATH_DEBUG_RATE = 0x00000010, /* rate control */ - ATH_DEBUG_ANY = 0xffffffff -}; -#define DPRINTF(sc, m, fmt, ...) do { \ - if (sc->sc_debug & (m)) \ - printk(fmt, __VA_ARGS__); \ -} while (0) -#else -#define DPRINTF(sc, m, fmt, ...) do { \ - (void) sc; \ -} while (0) -#endif - /* * This file is an implementation of the SampleRate algorithm * in "Bit-rate Selection in Wireless Networks" @@ -886,15 +869,16 @@ if ((ni->ni_rates.rs_rates[x] & IEEE80211_RATE_VAL) == vap->iv_fixed_rate) srate = x; - KASSERT(((ni->ni_rates.rs_rates[srate] & IEEE80211_RATE_VAL) == vap->iv_fixed_rate), - ("fixed rate %u not in rate set", vap->iv_fixed_rate)); - sn->static_rate_ndx = srate; ni->ni_txrate = srate; - DPRINTF(sc, ATH_DEBUG_RATE, "%s: %s " MAC_FMT " fixed rate %u%sMbps\n", - dev_info, __func__, MAC_ADDR(ni->ni_macaddr), - sn->rates[srate].rate / 2, - (sn->rates[srate].rate % 0x1) ? ".5" : " "); + + if ((ni->ni_rates.rs_rates[srate] & IEEE80211_RATE_VAL) != vap->iv_fixed_rate) + EPRINTF(sc, "Invalid static rate, falling back to basic rate\n"); + else + DPRINTF(sc, ATH_DEBUG_RATE, "%s: %s " MAC_FMT " fixed rate %u%sMbps\n", + dev_info, __func__, MAC_ADDR(ni->ni_macaddr), + sn->rates[srate].rate / 2, + (sn->rates[srate].rate % 0x1) ? ".5" : " "); return; }