Lines Matching defs:RATE
86 ATH_DEBUG_RATE = 0x00000010 /* rate control */
98 * in "Bit-rate Selection in Wireless Networks"
101 * SampleRate chooses the bit-rate it predicts will provide the most
103 * transmission time for each bit-rate. SampleRate periodically sends
105 * another bit-rate will provide better performance. SampleRate
106 * switches to another bit-rate when its estimated per-packet
107 * transmission time becomes smaller than the current bit-rate's.
110 * currently being used. SampleRate also stops probing at a bit-rate
141 rate_to_ndx(struct sample_node *sn, int rate) {
144 if (sn->rates[x].rate == rate) {
183 if (sn->rates[x].rate == 18)
186 /* don't use a bit-rate that has been failing */
199 * pick a good "random" bit-rate to sample other than the current one
210 /* no successes yet, send at the lowest bit-rate */
219 /* don't sample the current bit-rate */
223 /* this bit-rate is always worse than the current one */
235 if (sn->rates[ndx].rate > 22 && ndx > current_ndx + 2)
239 if (sn->rates[ndx].rate == 18)
244 if (sn->rates[current_ndx].rate == 22 && ndx > current_ndx + 1)
300 * pick the highest rate <= 36 Mbps
303 if (sn->rates[ndx].rate <= 72 &&
311 /* let the bit-rate switch quickly during the first few packets */
317 /* the current bit-rate is twice as slow as the best one */
325 DPRINTF(sc, "%s: %s size %d switch rate %d (%d/%d) -> %d (%d/%d) after %d packets mrr %d\n",
329 sn->rates[sn->current_rate[size_bin]].rate,
332 sn->rates[best_ndx].rate,
347 * to the rate of small packets
376 ndx = sn->current_rate[size_bin]; /* retry at the current bit-rate */
379 ndx = 0; /* use the lowest bit-rate */
409 int rate;
416 rate = sn->rates[ndx0].rate;
460 * bit-rate then a larger one will also.
477 DPRINTF(sc, "%s: %s size %d sample rate %d tries (%d/%d) tt %d avg_tt (%d/%d) status %d\n",
479 size, rate, short_tries, tries, tt,
507 DPRINTF(sc, "%s: %s size %d status %d rate/try %d/%d "
520 DPRINTF(sc, "%s: %s size %d rate/try %d/%d %d/%d %d/%d %d/%d status %s retries (%d/%d)\n",
538 /* only one rate was used */
540 DPRINTF(sc, "%s: %s size %d status %d rate/try %d/%d/%d\n",
581 DPRINTF(sc, "%s: %s size %d finaltsidx %d tries %d status %d rate/try %d/%d %d/%d %d/%d %d/%d\n",
650 #define RATE(_ix) (ni->ni_rates.rs_rates[(_ix)] & IEEE80211_RATE_VAL)
657 KASSERTMSG(rt != NULL, "no rate table, mode %u", sc->sc_curmode);
661 * A fixed rate is to be used; ic_fixed_rate is an
662 * index into the supported rate set. Convert this
663 * to the index into the negotiated rate set for
664 * the node. We know the rate is there because the
665 * rate set is checked when the station associates.
670 /* NB: the rate set is assumed sorted */
672 for (; srate >= 0 && RATE(srate) != r; srate--)
675 "fixed rate %d not in rate set", ic->ic_fixed_rate);
679 DPRINTF(sc, "%s: %s size 1600 rate/tt", __func__, ether_sprintf(ni->ni_macaddr));
683 sn->rates[x].rate = ni->ni_rates.rs_rates[x] & IEEE80211_RATE_VAL;
684 sn->rates[x].rix = sc->sc_rixmap[sn->rates[x].rate];
690 DPRINTF(sc, " %d/%d", sn->rates[x].rate,
696 /* set the visible bit-rate to the lowest one available */
721 /* set the initial rate */
723 if (sn->rates[ndx].rate <= 72) {
733 sn->rates[0].rate/2, sn->rates[0].rate % 0x1 ? ".5" : "",
735 sn->rates[sn->num_rates-1].rate/2,
736 sn->rates[sn->num_rates-1].rate % 0x1 ? ".5" : "",
741 #undef RATE
753 * Reset the rate control state for each 802.11 state transition.
783 "rate control: retry threshold to credit rate raise (%%)")) != 0)
788 "rate control: # good periods before raising rate")) != 0)
805 osc->ath_sample_rate = 10; /* send a different bit-rate 1/X packets */