diff options
Diffstat (limited to 'package/madwifi/patches/379-invalid_rate_fix.patch')
-rw-r--r-- | package/madwifi/patches/379-invalid_rate_fix.patch | 405 |
1 files changed, 0 insertions, 405 deletions
diff --git a/package/madwifi/patches/379-invalid_rate_fix.patch b/package/madwifi/patches/379-invalid_rate_fix.patch deleted file mode 100644 index c96c04daff..0000000000 --- a/package/madwifi/patches/379-invalid_rate_fix.patch +++ /dev/null @@ -1,405 +0,0 @@ ---- a/ath_rate/minstrel/minstrel.c -+++ b/ath_rate/minstrel/minstrel.c -@@ -111,27 +111,13 @@ - #include <net80211/ieee80211_var.h> - #include <net80211/ieee80211_rate.h> - -+#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" -@@ -471,11 +457,11 @@ ath_rate_tx_complete(struct ath_softc *s - final_rate = sc->sc_hwmap[ts->ts_rate & ~HAL_TXSTAT_ALTRATE].ieeerate; - final_ndx = rate_to_ndx(sn, final_rate); - if (final_ndx >= sn->num_rates) { -- DPRINTF(sc, "%s: final ndx too high\n", __func__); -+ DPRINTF(sc, ATH_DEBUG_RATE, "%s: final ndx too high\n", __func__); - final_ndx = 0; - } - if (final_ndx < 0) { -- DPRINTF(sc, "%s: final ndx too low\n", __func__); -+ DPRINTF(sc, ATH_DEBUG_RATE, "%s: final ndx too low\n", __func__); - final_ndx = 0; - } - -@@ -485,7 +471,7 @@ ath_rate_tx_complete(struct ath_softc *s - tries = ts->ts_longretry + 1; - - if (sn->num_rates <= 0) { -- DPRINTF(sc, "%s: " MAC_FMT " %s no rates yet\n", dev_info, -+ DPRINTF(sc, ATH_DEBUG_RATE, "%s: " MAC_FMT " %s no rates yet\n", dev_info, - MAC_ADDR(an->an_node.ni_macaddr), __func__); - return; - } -@@ -551,7 +537,7 @@ ath_rate_tx_complete(struct ath_softc *s - static void - ath_rate_newassoc(struct ath_softc *sc, struct ath_node *an, int isnew) - { -- DPRINTF(sc, "%s: " MAC_FMT " %s\n", dev_info, -+ DPRINTF(sc, ATH_DEBUG_RATE, "%s: " MAC_FMT " %s\n", dev_info, - MAC_ADDR(an->an_node.ni_macaddr), __func__); - if (isnew) - ath_rate_ctl_reset(sc, &an->an_node); -@@ -601,7 +587,7 @@ ath_fill_sample_table(struct minstrel_no - p = rates + sprintf(rates, "rates :: %d ", column_index); - for (i = 0; i < num_sample_rates; i++) - p += sprintf(p, "%2u ", sn->rs_sampleTable[i][column_index]); -- DPRINTF(sc, "%s\n", rates); -+ DPRINTF(sc, ATH_DEBUG_RATE, "%s\n", rates); - }; - #endif - } -@@ -628,7 +614,7 @@ ath_rate_ctl_reset(struct ath_softc *sc, - sn->is_sampling = 0; - - if (rt == NULL) { -- DPRINTF(sc, "no rates yet! mode %u\n", sc->sc_curmode); -+ DPRINTF(sc, ATH_DEBUG_RATE, "no rates yet! mode %u\n", sc->sc_curmode); - return; - } - sn->static_rate_ndx = -1; -@@ -658,7 +644,7 @@ ath_rate_ctl_reset(struct ath_softc *sc, - sn->rates[x].rix = sc->sc_rixmap[sn->rates[x].rate]; - } - if (sn->rates[x].rix == 0xff) { -- DPRINTF(sc, "%s: %s ignore bogus rix at %d\n", -+ DPRINTF(sc, ATH_DEBUG_RATE, "%s: %s ignore bogus rix at %d\n", - dev_info, __func__, x); - continue; - } -@@ -673,7 +659,7 @@ ath_rate_ctl_reset(struct ath_softc *sc, - ni->ni_txrate = 0; - - if (sn->num_rates <= 0) { -- DPRINTF(sc, "%s: %s " MAC_FMT " no rates (fixed %d) \n", -+ DPRINTF(sc, ATH_DEBUG_RATE, "%s: %s " MAC_FMT " no rates (fixed %d) \n", - dev_info, __func__, MAC_ADDR(ni->ni_macaddr), - vap->iv_fixed_rate); - /* There are no rates yet; we're done */ -@@ -689,23 +675,23 @@ ath_rate_ctl_reset(struct ath_softc *sc, - * 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, ATH_DEBUG_RATE, "%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; - } - - for (x = 0; x < ni->ni_rates.rs_nrates; x++) { - if (sn->rates[x].rix == 0xff) { -- DPRINTF(sc, "%s: %s ignore bogus rix at %d\n", -+ DPRINTF(sc, ATH_DEBUG_RATE, "%s: %s ignore bogus rix at %d\n", - dev_info, __func__, x); - continue; - } -@@ -735,9 +721,9 @@ ath_rate_ctl_reset(struct ath_softc *sc, - } - - #if 0 -- DPRINTF(sc, "%s: Retry table for this node\n", __func__); -+ DPRINTF(sc, ATH_DEBUG_RATE, "%s: Retry table for this node\n", __func__); - for (x = 0; x < ni->ni_rates.rs_nrates; x++) -- DPRINTF(sc, "%2d %2d %6d \n", x, sn->retry_count[x], sn->perfect_tx_time[x]); -+ DPRINTF(sc, ATH_DEBUG_RATE, "%2d %2d %6d \n", x, sn->retry_count[x], sn->perfect_tx_time[x]); - #endif - - /* Set the initial rate */ -@@ -781,10 +767,10 @@ ath_timer_function(unsigned long data) - unsigned int interval = ath_timer_interval; - - if (dev == NULL) -- DPRINTF(sc, "%s: 'dev' is null in this timer \n", __func__); -+ DPRINTF(sc, ATH_DEBUG_RATE, "%s: 'dev' is null in this timer \n", __func__); - - if (sc == NULL) -- DPRINTF(sc, "%s: 'sc' is null in this timer\n", __func__); -+ DPRINTF(sc, ATH_DEBUG_RATE, "%s: 'sc' is null in this timer\n", __func__); - - ic = &sc->sc_ic; - -@@ -808,7 +794,7 @@ ath_timer_function(unsigned long data) - - timer = &(ssc->timer); - if (timer == NULL) -- DPRINTF(sc, "%s: timer is null - leave it\n", __func__); -+ DPRINTF(sc, ATH_DEBUG_RATE, "%s: timer is null - leave it\n", __func__); - - timer->expires = jiffies + ((HZ * interval) / 1000); - add_timer(timer); -@@ -904,7 +890,7 @@ static struct ath_ratectrl * - ath_rate_attach(struct ath_softc *sc) - { - struct minstrel_softc *osc; -- DPRINTF(sc, "%s: %s\n", dev_info, __func__); -+ DPRINTF(sc, ATH_DEBUG_RATE, "%s: %s\n", dev_info, __func__); - - _MOD_INC_USE(THIS_MODULE, return NULL); - osc = kmalloc(sizeof(struct minstrel_softc), GFP_ATOMIC); -@@ -963,7 +949,7 @@ ath_proc_read_nodes(struct ieee80211vap - p += sprintf(p, "out of room for node " MAC_FMT "\n\n", MAC_ADDR(ni->ni_macaddr)); - break; - } -- DPRINTF(sc, "%s: out of memeory to write tall of the nodes\n", __func__); -+ DPRINTF(sc, ATH_DEBUG_RATE, "%s: out of memeory to write tall of the nodes\n", __func__); - break; - } - an = ATH_NODE(ni); ---- a/ath_rate/amrr/amrr.c -+++ b/ath_rate/amrr/amrr.c -@@ -64,24 +64,13 @@ - #include <net80211/ieee80211_var.h> - #include <net80211/ieee80211_rate.h> - -+#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; -@@ -197,7 +186,7 @@ ath_rate_update(struct ath_softc *sc, st - - KASSERT(rt != NULL, ("no rate table, mode %u", sc->sc_curmode)); - -- DPRINTF(sc, "%s: set xmit rate for " MAC_FMT " to %dM\n", -+ DPRINTF(sc, ATH_DEBUG_RATE, "%s: set xmit rate for " MAC_FMT " to %dM\n", - __func__, MAC_ADDR(ni->ni_macaddr), - ni->ni_rates.rs_nrates > 0 ? - (ni->ni_rates.rs_rates[rate] & IEEE80211_RATE_VAL) / 2 : 0); -@@ -297,9 +286,9 @@ ath_rate_ctl_start(struct ath_softc *sc, - * 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 -@@ -377,7 +366,7 @@ ath_rate_ctl(void *arg, struct ieee80211 - - old_rate = ni->ni_txrate; - -- DPRINTF (sc, "cnt0: %d cnt1: %d cnt2: %d cnt3: %d -- threshold: %d\n", -+ DPRINTF(sc, ATH_DEBUG_RATE, "cnt0: %d cnt1: %d cnt2: %d cnt3: %d -- threshold: %d\n", - amn->amn_tx_try0_cnt, - amn->amn_tx_try1_cnt, - amn->amn_tx_try2_cnt, -@@ -390,7 +379,7 @@ ath_rate_ctl(void *arg, struct ieee80211 - amn->amn_recovery = 1; - amn->amn_success = 0; - ni->ni_txrate++; -- DPRINTF(sc, "increase rate to %d\n", ni->ni_txrate); -+ DPRINTF(sc, ATH_DEBUG_RATE, "increase rate to %d\n", ni->ni_txrate); - } else - amn->amn_recovery = 0; - } else if (is_failure(amn)) { -@@ -401,12 +390,12 @@ ath_rate_ctl(void *arg, struct ieee80211 - amn->amn_success_threshold *= 2; - amn->amn_success_threshold = min(amn->amn_success_threshold, - (u_int)ath_rate_max_success_threshold); -- DPRINTF(sc, "decrease rate recovery thr: %d\n", -+ DPRINTF(sc, ATH_DEBUG_RATE, "decrease rate recovery thr: %d\n", - amn->amn_success_threshold); - } else { - /* simple failure. */ - amn->amn_success_threshold = ath_rate_min_success_threshold; -- DPRINTF(sc, "decrease rate normal thr: %d\n", -+ DPRINTF(sc, ATH_DEBUG_RATE, "decrease rate normal thr: %d\n", - amn->amn_success_threshold); - } - amn->amn_recovery = 0; ---- a/ath_rate/onoe/onoe.c -+++ b/ath_rate/onoe/onoe.c -@@ -60,27 +60,13 @@ - #include <net80211/ieee80211_var.h> - #include <net80211/ieee80211_rate.h> - -+#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 -@@ -186,7 +172,7 @@ ath_rate_update(struct ath_softc *sc, st - - KASSERT(rt != NULL, ("no rate table, mode %u", sc->sc_curmode)); - -- DPRINTF(sc, "%s: set xmit rate for " MAC_FMT " to %dM\n", -+ DPRINTF(sc, ATH_DEBUG_RATE, "%s: set xmit rate for " MAC_FMT " to %dM\n", - __func__, MAC_ADDR(ni->ni_macaddr), - ni->ni_rates.rs_nrates > 0 ? - (ni->ni_rates.rs_rates[rate] & IEEE80211_RATE_VAL) / 2 : 0); -@@ -283,9 +269,9 @@ ath_rate_ctl_start(struct ath_softc *sc, - */ - /* 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 -@@ -364,7 +350,7 @@ ath_rate_ctl(void *arg, struct ieee80211 - on->on_tx_retr < (on->on_tx_ok * ath_rate_raise) / 100) - dir = 1; - -- DPRINTF(sc, MAC_FMT ": ok %d err %d retr %d upper %d dir %d\n", -+ DPRINTF(sc, ATH_DEBUG_RATE, MAC_FMT ": ok %d err %d retr %d upper %d dir %d\n", - MAC_ADDR(ni->ni_macaddr), - on->on_tx_ok, on->on_tx_err, on->on_tx_retr, - on->on_tx_upper, dir); -@@ -395,7 +381,7 @@ ath_rate_ctl(void *arg, struct ieee80211 - } - - if (nrate != ni->ni_txrate) { -- DPRINTF(sc, "%s: %dM -> %dM (%d ok, %d err, %d retr)\n", -+ DPRINTF(sc, ATH_DEBUG_RATE, "%s: %dM -> %dM (%d ok, %d err, %d retr)\n", - __func__, - (rs->rs_rates[ni->ni_txrate] & IEEE80211_RATE_VAL) / 2, - (rs->rs_rates[nrate] & IEEE80211_RATE_VAL) / 2, ---- a/ath_rate/sample/sample.c -+++ b/ath_rate/sample/sample.c -@@ -62,30 +62,13 @@ - #include <net80211/ieee80211_var.h> - #include <net80211/ieee80211_rate.h> - -+#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" -@@ -740,7 +723,7 @@ ath_rate_tx_complete(struct ath_softc *s - ndx[3] = rate_to_ndx(sn, rate[3]); - - #if 0 -- DPRINTF(sc, "%s: " MAC_FMT " size %u finaltsidx %u tries %u status %u rate/try %u/%u %u/%u %u/%u %u/%u\n", -+ DPRINTF(sc, ATH_DEBUG_RATE, "%s: " MAC_FMT " size %u finaltsidx %u tries %u status %u rate/try %u/%u %u/%u %u/%u %u/%u\n", - dev_info, MAC_ADDR(an->an_node.ni_macaddr), - bin_to_size(size_to_bin(frame_size)), - finalTSIdx, -@@ -886,15 +869,16 @@ ath_rate_ctl_reset(struct ath_softc *sc, - 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; - } - |