madwifi: add patch to allow ignoring probe requests (useful for ad-hoc mesh)
[openwrt.git] / package / madwifi / patches / 379-invalid_rate_fix.patch
index 305d26d..3ee2ed2 100644 (file)
@@ -29,7 +29,7 @@
  #define ONE_SECOND (1000 * 1000)  /* 1 second, or 1000 milliseconds; eternity, in other words */
  
  #include "release.h"
-@@ -471,11 +457,11 @@
+@@ -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) {
@@ -43,7 +43,7 @@
                        final_ndx = 0;
                }
  
-@@ -485,7 +471,7 @@
+@@ -485,7 +471,7 @@ ath_rate_tx_complete(struct ath_softc *s
                tries = ts->ts_longretry + 1;
  
                if (sn->num_rates <= 0) {
@@ -52,7 +52,7 @@
                                MAC_ADDR(an->an_node.ni_macaddr), __func__);
                        return;
                }
-@@ -551,7 +537,7 @@
+@@ -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)
  {
@@ -61,7 +61,7 @@
                        MAC_ADDR(an->an_node.ni_macaddr), __func__);
                if (isnew)
                        ath_rate_ctl_reset(sc, &an->an_node);
-@@ -601,7 +587,7 @@
+@@ -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]);
@@ -70,7 +70,7 @@
                };
  #endif
  }
-@@ -628,7 +614,7 @@
+@@ -628,7 +614,7 @@ ath_rate_ctl_reset(struct ath_softc *sc,
                sn->is_sampling = 0;
  
                if (rt == NULL) {
@@ -79,7 +79,7 @@
                        return;
                }
                sn->static_rate_ndx = -1;
-@@ -658,7 +644,7 @@
+@@ -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) {
@@ -88,7 +88,7 @@
                                        dev_info, __func__, x);
                                continue;
                        }
-@@ -673,7 +659,7 @@
+@@ -673,7 +659,7 @@ ath_rate_ctl_reset(struct ath_softc *sc,
                ni->ni_txrate = 0;
  
                if (sn->num_rates <= 0) {
@@ -97,7 +97,7 @@
                                dev_info, __func__, MAC_ADDR(ni->ni_macaddr),
                                vap->iv_fixed_rate);
                        /* There are no rates yet; we're done */
-@@ -689,23 +675,23 @@
+@@ -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 */
                                        dev_info, __func__, x);
                                continue;
                        }
-@@ -735,9 +721,9 @@
+@@ -735,9 +721,9 @@ ath_rate_ctl_reset(struct ath_softc *sc,
                }
  
  #if 0
  #endif
  
                /* Set the initial rate */
-@@ -781,10 +767,10 @@
+@@ -781,10 +767,10 @@ ath_timer_function(unsigned long data)
                unsigned int interval = ath_timer_interval;
  
                if (dev == NULL)
  
                ic = &sc->sc_ic;
  
-@@ -808,7 +794,7 @@
+@@ -808,7 +794,7 @@ ath_timer_function(unsigned long data)
  
                timer  = &(ssc->timer);
                if (timer == NULL)
  
                timer->expires = jiffies + ((HZ * interval) / 1000);
                add_timer(timer);
-@@ -904,7 +890,7 @@
+@@ -904,7 +890,7 @@ static struct ath_ratectrl *
  ath_rate_attach(struct ath_softc *sc)
  {
                struct minstrel_softc *osc;
  
                _MOD_INC_USE(THIS_MODULE, return NULL);
                osc = kmalloc(sizeof(struct minstrel_softc), GFP_ATOMIC);
-@@ -963,7 +949,7 @@
+@@ -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;
                                }
  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 @@
+@@ -197,7 +186,7 @@ ath_rate_update(struct ath_softc *sc, st
  
        KASSERT(rt != NULL, ("no rate table, mode %u", sc->sc_curmode));
  
                __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 @@
+@@ -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;
        }
        ath_rate_update(sc, ni, srate);
  #undef RATE
-@@ -377,7 +366,7 @@
+@@ -377,7 +366,7 @@ ath_rate_ctl(void *arg, struct ieee80211
  
        old_rate = ni->ni_txrate;
  
                 amn->amn_tx_try0_cnt,
                 amn->amn_tx_try1_cnt,
                 amn->amn_tx_try2_cnt,
-@@ -390,7 +379,7 @@
+@@ -390,7 +379,7 @@ ath_rate_ctl(void *arg, struct ieee80211
                        amn->amn_recovery = 1;
                        amn->amn_success = 0;
                        ni->ni_txrate++;
                } else
                        amn->amn_recovery = 0;
        } else if (is_failure(amn)) {
-@@ -401,12 +390,12 @@
+@@ -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);
  /*
   * Default parameters for the rate control algorithm.  These are
   * all tunable with sysctls.  The rate controller runs periodically
-@@ -186,7 +172,7 @@
+@@ -186,7 +172,7 @@ ath_rate_update(struct ath_softc *sc, st
  
        KASSERT(rt != NULL, ("no rate table, mode %u", sc->sc_curmode));
  
                __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 @@
+@@ -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;
        }
        ath_rate_update(sc, ni, srate);
  #undef RATE
-@@ -364,7 +350,7 @@
+@@ -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;
  
                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 @@
+@@ -395,7 +381,7 @@ ath_rate_ctl(void *arg, struct ieee80211
        }
  
        if (nrate != ni->ni_txrate) {
  /*
   * This file is an implementation of the SampleRate algorithm
   * in "Bit-rate Selection in Wireless Networks"
-@@ -740,7 +723,7 @@
+@@ -740,7 +723,7 @@ ath_rate_tx_complete(struct ath_softc *s
                ndx[3] = rate_to_ndx(sn, rate[3]);
  
  #if 0
                        dev_info, MAC_ADDR(an->an_node.ni_macaddr),
                        bin_to_size(size_to_bin(frame_size)),
                        finalTSIdx,
-@@ -886,15 +869,16 @@
+@@ -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;
  
This page took 0.037241 seconds and 4 git commands to generate.