Lines Matching full:rate

86  * in "Bit-rate Selection in Wireless Networks"
89 * SampleRate chooses the bit-rate it predicts will provide the most
91 * transmission time for each bit-rate. SampleRate periodically sends
93 * another bit-rate will provide better performance. SampleRate
94 * switches to another bit-rate when its estimated per-packet
95 * transmission time becomes smaller than the current bit-rate's.
98 * currently being used. SampleRate also stops probing at a bit-rate
119 * given rate. For now this ignores SGI/LGI and will assume long-GI.
122 * (But it's also important because right now rate control doesn't set
125 * When selecting a set of rates the rate control code will iterate
129 * rate selection will closely match what the eventual formed aggregate
163 * MCS rate in the transmit schedule.
165 * Returns -1 if it's a legacy rate or no MRR.
206 * per rate is fixed, and (b) reliable packet transmission at those in ath_rate_sample_find_min_pktlength()
207 * higher rates kinda needs a lower MCS rate in there somewhere. in ath_rate_sample_find_min_pktlength()
211 * back to like MCS0/1 in hardware, and rate control will hopefully in ath_rate_sample_find_min_pktlength()
214 * Once the whole rate schedule is passed into ath_rate_findrate(), in ath_rate_sample_find_min_pktlength()
219 * current best rate.. in ath_rate_sample_find_min_pktlength()
326 if ((mask & 1) == 0) /* not a supported rate */ in pick_best_rate()
329 /* Don't pick a non-HT rate for a HT node */ in pick_best_rate()
348 /* don't use a bit-rate that has been failing */ in pick_best_rate()
353 * For HT, Don't use a bit rate that is more in pick_best_rate()
366 "%s: size %d comparing best rate 0x%x pkts/ewma/tt (%ju/%d/%d) " in pick_best_rate()
412 * Pick a good "random" bit-rate to sample other than the current one.
427 /* no successes yet, send at the lowest bit-rate */ in pick_sample_rate()
434 rix = sn->last_sample_rix[size_bin]+1; /* next sample rate */ in pick_sample_rate()
435 mask = sn->ratemask &~ ((uint64_t) 1<<current_rix);/* don't sample current rate */ in pick_sample_rate()
437 if ((mask & ((uint64_t) 1<<rix)) == 0) { /* not a supported rate */ in pick_sample_rate()
453 * selected rate is non-MCS, this won't work. in pick_sample_rate()
460 /* if the node is HT and the rate isn't HT, don't bother sample */ in pick_sample_rate()
468 /* this bit-rate is always worse than the current one */ in pick_sample_rate()
485 * This is limited to testing rate indexes on either side of in pick_sample_rate()
524 #define RATE(_ix) (ni->ni_rates.rs_rates[(_ix)] & IEEE80211_RATE_VAL) in ath_rate_get_static_rix() macro
538 if (RATE(srate) == tp->ucastrate) in ath_rate_get_static_rix()
542 #undef RATE in ath_rate_get_static_rix()
556 * A fixed rate is to be used; ucastrate is the IEEE code in ath_rate_update_static_rix()
557 * for this rate (sans basic bit). Check this against the in ath_rate_update_static_rix()
558 * negotiated rate set for the node. Note the fixed rate in ath_rate_update_static_rix()
560 * setup the static rate index if the lookup is successful. in ath_rate_update_static_rix()
569 * Pick a non-HT rate to begin using.
577 #define RATE(ix) (DOT11RATE(ix) / 2) in ath_rate_pick_seed_rate_legacy() macro
593 * Pick the highest rate <= 36 Mbps in ath_rate_pick_seed_rate_legacy()
602 #undef RATE in ath_rate_pick_seed_rate_legacy()
608 * Pick a HT rate to begin using.
618 #define RATE(ix) (DOT11RATE(ix) / 2) in ath_rate_pick_seed_rate_ht() macro
630 /* Keep a copy of the last seen HT rate index */ in ath_rate_pick_seed_rate_ht()
639 * Pick a medium-speed rate at 1 spatial stream in ath_rate_pick_seed_rate_ht()
654 #undef RATE in ath_rate_pick_seed_rate_ht()
667 #define RATE(ix) (DOT11RATE(ix) / 2) in ath_rate_findrate() macro
754 "sample rate %d %s current rate %d %s", in ath_rate_findrate()
780 /* let the bit-rate switch quickly during the first few packets */ in ath_rate_findrate()
794 /* the current bit-rate is twice as slow as the best one */ in ath_rate_findrate()
805 * If the node is HT, it if the rate isn't the in ath_rate_findrate()
807 * of the current rate. It can fail a little. in ath_rate_findrate()
836 "%s: size %d switch rate %d %s (%d/%d) EWMA %d -> %d %s (%d/%d) EWMA %d after %d packets mrr %d", in ath_rate_findrate()
894 #undef RATE in ath_rate_findrate()
1000 * transmission at this rate did not. in update_stats()
1008 * given rate attempt, and outside of the RTS/CTS management in update_stats()
1009 * rate, it doesn't /really/ help. in update_stats()
1038 /* Calculate percentage based on current rate */ in update_stats()
1067 "%s: size %d %s %s rate %d %s tries (%d/%d) tt %d " in update_stats()
1122 * There are still some places where what rate control set as in ath_rate_tx_complete()
1130 * we may continue to hit corner cases where we make a rate in ath_rate_tx_complete()
1156 "%s: size %d %s rate/try %d/%d no rates yet", in ath_rate_tx_complete()
1177 * Only one rate was used; optimize work. in ath_rate_tx_complete()
1180 &an->an_node, "%s: size %d (%d bytes) %s rate/short/long %d %s/%d/%d nframes/nbad [%d/%d]", in ath_rate_tx_complete()
1202 "%s: size %d (%d bytes) finaltsidx %d short %d long %d %s rate/try [%d %s/%d %d %s/%d %d %s/%d %d %… in ath_rate_tx_complete()
1301 #define RATE(_ix) (ni->ni_rates.rs_rates[(_ix)] & IEEE80211_RATE_VAL) in ath_rate_ctl_reset() macro
1309 KASSERT(rt != NULL, ("no rate table, mode %u", sc->sc_curmode)); in ath_rate_ctl_reset()
1326 * to be ignored for doing rate control. in ath_rate_ctl_reset()
1346 rix = sc->sc_rixmap[RATE(x)]; in ath_rate_ctl_reset()
1353 ("rate %u has rix %d", RATE(x), rix)); in ath_rate_ctl_reset()
1360 ieee80211_note(ni->ni_vap, "[%6D] %s: size 1600 rate/tt", in ath_rate_ctl_reset()
1379 /* XXX start with first valid rate */ in ath_rate_ctl_reset()
1384 * indexed by the rate code index. in ath_rate_ctl_reset()
1387 if ((mask & 1) == 0) /* not a valid rate */ in ath_rate_ctl_reset()
1414 /* set the visible bit-rate */ in ath_rate_ctl_reset()
1419 ieee80211_node_set_txrate_dot11rate(ni, RATE(0)); in ath_rate_ctl_reset()
1420 #undef RATE in ath_rate_ctl_reset()
1430 * The main difference here is that we convert the rate indexes
1474 * Populate the rate table mapping TLV. in ath_rate_fetch_node_stats()
1485 * First TLV - rate code mapping in ath_rate_fetch_node_stats()
1594 int rate, error; in ath_rate_sysctl_smoothing_rate() local
1596 rate = ssc->smoothing_rate; in ath_rate_sysctl_smoothing_rate()
1597 error = sysctl_handle_int(oidp, &rate, 0, req); in ath_rate_sysctl_smoothing_rate()
1600 if (!(0 <= rate && rate < 100)) in ath_rate_sysctl_smoothing_rate()
1602 ssc->smoothing_rate = rate; in ath_rate_sysctl_smoothing_rate()
1603 ssc->smoothing_minpackets = 100 / (100 - rate); in ath_rate_sysctl_smoothing_rate()
1611 int rate, error; in ath_rate_sysctl_sample_rate() local
1613 rate = ssc->sample_rate; in ath_rate_sysctl_sample_rate()
1614 error = sysctl_handle_int(oidp, &rate, 0, req); in ath_rate_sysctl_sample_rate()
1617 if (!(2 <= rate && rate <= 100)) in ath_rate_sysctl_sample_rate()
1619 ssc->sample_rate = rate; in ath_rate_sysctl_sample_rate()
1632 "sample: smoothing rate for avg tx time (%%)"); in ath_rate_sysctlattach()
1655 ssc->max_successive_failures = 3; /* threshold for rate sampling*/ in ath_rate_attach()