Lines Matching refs:rix

147 dot11rate(const HAL_RATE_TABLE *rt, int rix)
149 return rt->info[rix].phy == IEEE80211_T_HT ?
150 rt->info[rix].dot11Rate : (rt->info[rix].dot11Rate & IEEE80211_RATE_VAL) / 2;
154 dot11rate_label(const HAL_RATE_TABLE *rt, int rix)
156 return rt->info[rix].phy == IEEE80211_T_HT ? "MCS" : "Mb ";
160 * Return the rix with the lowest average_tx_time,
170 int rix, tt;
174 for (mask = sn->ratemask, rix = 0; mask != 0; mask >>= 1, rix++) {
180 (rt->info[rix].phy != IEEE80211_T_HT)) {
184 tt = sn->stats[size_bin][rix].average_tx_time;
187 !sn->stats[size_bin][rix].packets_acked))
191 if (sn->stats[size_bin][rix].successive_failures > 3)
196 best_rate_rix = rix;
212 int current_rix, rix;
225 rix = sn->last_sample_rix[size_bin]+1; /* next sample rate */
228 if ((mask & (1<<rix)) == 0) { /* not a supported rate */
230 if (++rix >= rt->rateCount)
231 rix = 0;
237 (rt->info[rix].phy != IEEE80211_T_HT)) {
238 mask &= ~(1<<rix);
243 if (sn->stats[size_bin][rix].perfect_tx_time > current_tt) {
244 mask &= ~(1<<rix);
249 if (sn->stats[size_bin][rix].successive_failures > ssc->max_successive_failures &&
250 ticks - sn->stats[size_bin][rix].last_tx < ssc->stale_failure_timeout) {
251 mask &= ~(1<<rix);
257 if (DOT11RATE(rix) > 2*11 && rix > current_rix + 2) {
258 mask &= ~(1<<rix);
263 sn->last_sample_rix[size_bin] = rix;
264 return rix;
334 int rix, mrr, best_rix, change_rates;
340 rix = sn->static_rix;
359 rix = pick_sample_rate(ssc, an, rt, size_bin);
362 bin_to_size(size_bin), RATE(rix),
364 if (rix != sn->current_rix[size_bin]) {
365 sn->current_sample_rix[size_bin] = rix;
374 for (rix = rt->rateCount-1; rix > 0; rix--) {
375 if ((sn->ratemask & (1<<rix)) == 0)
381 if (DOT11RATE(rix) <= 72 &&
382 sn->stats[size_bin][rix].successive_failures == 0) {
387 best_rix = rix;
426 rix = sn->current_rix[size_bin];
429 *try0 = mrr ? sn->sched[rix].t0 : ATH_TXMAXTRY;
431 KASSERT(rix >= 0 && rix < rt->rateCount, ("rix is %d", rix));
433 *rix0 = rix;
434 *txrate = rt->info[rix].rateCode
435 | (shortPreamble ? rt->info[rix].shortPreamble : 0);
448 uint8_t rix0, uint8_t *rix, uint8_t *try)
455 /* rix[0] = sched->r0; */
456 rix[1] = sched->r1;
457 rix[2] = sched->r2;
458 rix[3] = sched->r3;
468 struct ath_desc *ds, int shortPreamble, u_int8_t rix)
471 const struct txschedule *sched = &sn->sched[rix];
645 int hwrates[4], tries[4], rix[4];
655 rix[i] = rt->rateCodeToIndex[hwrates[i]];
667 dot11rate(rt, rix[0]), dot11rate_label(rt, rix[0]), tries[0],
668 dot11rate(rt, rix[1]), dot11rate_label(rt, rix[1]), tries[1],
669 dot11rate(rt, rix[2]), dot11rate_label(rt, rix[2]), tries[2],
670 dot11rate(rt, rix[3]), dot11rate_label(rt, rix[3]), tries[3]);
673 if (tries[i] && !IS_RATE_DEFINED(sn, rix[i]))
686 rix[0], tries[0],
687 rix[1], tries[1],
688 rix[2], tries[2],
689 rix[3], tries[3],
697 rix[1], tries[1],
698 rix[2], tries[2],
699 rix[3], tries[3],
708 rix[2], tries[2],
709 rix[3], tries[3],
719 rix[3], tries[3],
763 int x, y, rix;
785 rix = sc->sc_rixmap[MCS(x)];
786 if (rix == 0xff)
789 if (!rt->info[rix].valid)
791 KASSERT(rix < SAMPLE_MAXRATES,
792 ("mcs %u has rix %d", MCS(x), rix));
793 sn->ratemask |= 1<<rix;
799 rix = sc->sc_rixmap[RATE(x)];
800 if (rix == 0xff)
803 if (!rt->info[rix].valid)
805 KASSERT(rix < SAMPLE_MAXRATES,
806 ("rate %u has rix %d", RATE(x), rix));
807 sn->ratemask |= 1<<rix;
815 for (mask = sn->ratemask, rix = 0; mask != 0; mask >>= 1, rix++) {
818 printf(" %d %s/%d", dot11rate(rt, rix), dot11rate_label(rt, rix),
819 calc_usecs_unicast_packet(sc, 1600, rix, 0,0,
839 for (rix = 0, mask = sn->ratemask; mask != 0; rix++, mask >>= 1) {
842 sn->stats[y][rix].successive_failures = 0;
843 sn->stats[y][rix].tries = 0;
844 sn->stats[y][rix].total_packets = 0;
845 sn->stats[y][rix].packets_acked = 0;
846 sn->stats[y][rix].last_tx = 0;
848 sn->stats[y][rix].perfect_tx_time =
849 calc_usecs_unicast_packet(sc, size, rix, 0, 0,
851 sn->stats[y][rix].average_tx_time =
852 sn->stats[y][rix].perfect_tx_time;
882 int rix, y;
888 printf("[%4u] cur rix %d (%d %s) since switch: packets %d ticks %u\n",
900 for (mask = sn->ratemask, rix = 0; mask != 0; mask >>= 1, rix++) {
904 if (sn->stats[y][rix].total_packets == 0)
907 dot11rate(rt, rix), dot11rate_label(rt, rix),
909 sn->stats[y][rix].total_packets,
910 sn->stats[y][rix].packets_acked,
911 (100*sn->stats[y][rix].packets_acked)/sn->stats[y][rix].total_packets,
912 sn->stats[y][rix].tries,
913 sn->stats[y][rix].successive_failures,
914 sn->stats[y][rix].average_tx_time,
915 ticks - sn->stats[y][rix].last_tx);