Lines Matching refs:sn
178 struct sample_node *sn = ATH_NODE_SAMPLE(an); in ath_rate_sample_find_min_pktlength() local
179 const struct txschedule *sched = &sn->sched[rix0]; in ath_rate_sample_find_min_pktlength()
317 struct sample_node *sn = ATH_NODE_SAMPLE(an); in pick_best_rate() local
325 for (mask = sn->ratemask, rix = 0; mask != 0; mask >>= 1, rix++) { in pick_best_rate()
335 tt = sn->stats[size_bin][rix].average_tx_time; in pick_best_rate()
338 !sn->stats[size_bin][rix].packets_acked)) in pick_best_rate()
342 if (sn->stats[size_bin][rix].total_packets > 0) { in pick_best_rate()
343 pct = sn->stats[size_bin][rix].ewma_pct; in pick_best_rate()
349 if (sn->stats[size_bin][rix].successive_failures > 3) in pick_best_rate()
371 sn->stats[size_bin][best_rate_rix].total_packets, in pick_best_rate()
375 sn->stats[size_bin][rix].total_packets, in pick_best_rate()
419 struct sample_node *sn = ATH_NODE_SAMPLE(an); in pick_sample_rate() local
424 current_rix = sn->current_rix[size_bin]; in pick_sample_rate()
431 current_tt = sn->stats[size_bin][current_rix].average_tx_time; in pick_sample_rate()
433 rix = sn->last_sample_rix[size_bin]+1; /* next sample rate */ in pick_sample_rate()
434 mask = sn->ratemask &~ ((uint64_t) 1<<current_rix);/* don't sample current rate */ in pick_sample_rate()
468 if (sn->stats[size_bin][rix].perfect_tx_time > current_tt) { in pick_sample_rate()
474 if (sn->stats[size_bin][rix].successive_failures > ssc->max_successive_failures && in pick_sample_rate()
475 ticks - sn->stats[size_bin][rix].last_tx < ssc->stale_failure_timeout) { in pick_sample_rate()
512 sn->last_sample_rix[size_bin] = rix; in pick_sample_rate()
551 struct sample_node *sn = ATH_NODE_SAMPLE(an); in ath_rate_update_static_rix() local
561 sn->static_rix = ath_rate_get_static_rix(sc, ni); in ath_rate_update_static_rix()
563 sn->static_rix = -1; in ath_rate_update_static_rix()
579 struct sample_node *sn = ATH_NODE_SAMPLE(an); in ath_rate_pick_seed_rate_legacy() local
584 if ((sn->ratemask & ((uint64_t) 1<<rix)) == 0) in ath_rate_pick_seed_rate_legacy()
596 sn->stats[size_bin][rix].successive_failures == 0) { in ath_rate_pick_seed_rate_legacy()
620 struct sample_node *sn = ATH_NODE_SAMPLE(an); in ath_rate_pick_seed_rate_ht() local
626 if ((sn->ratemask & ((uint64_t) 1<<rix)) == 0) in ath_rate_pick_seed_rate_ht()
643 sn->stats[size_bin][rix].successive_failures == 0) { in ath_rate_pick_seed_rate_ht()
667 struct sample_node *sn = ATH_NODE_SAMPLE(an); in ath_rate_findrate() local
687 if (sn->currates != sc->sc_currates) { in ath_rate_findrate()
695 if (sn->static_rix != -1) { in ath_rate_findrate()
696 rix = sn->static_rix; in ath_rate_findrate()
703 sn->static_rix, in ath_rate_findrate()
738 average_tx_time = sn->stats[size_bin][best_rix].average_tx_time; in ath_rate_findrate()
747 if (sn->sample_tt[size_bin] < in ath_rate_findrate()
749 (sn->packets_since_sample[size_bin]*ssc->sample_rate/100)) { in ath_rate_findrate()
755 sn->sample_tt[size_bin], in ath_rate_findrate()
759 dot11rate(rt, sn->current_rix[size_bin]), in ath_rate_findrate()
760 dot11rate_label(rt, sn->current_rix[size_bin])); in ath_rate_findrate()
761 if (rix != sn->current_rix[size_bin]) { in ath_rate_findrate()
762 sn->current_sample_rix[size_bin] = rix; in ath_rate_findrate()
764 sn->current_sample_rix[size_bin] = -1; in ath_rate_findrate()
766 sn->packets_since_sample[size_bin] = 0; in ath_rate_findrate()
769 if (!sn->packets_sent[size_bin] || best_rix == -1) { in ath_rate_findrate()
778 } else if (sn->packets_sent[size_bin] < 20) { in ath_rate_findrate()
784 } else if (ticks - ssc->min_switch > sn->ticks_since_switch[size_bin]) { in ath_rate_findrate()
789 __func__, ticks - ssc->min_switch, sn->ticks_since_switch[size_bin]); in ath_rate_findrate()
792 (2*average_tx_time < sn->stats[size_bin][sn->current_rix[size_bin]].average_tx_time)) { in ath_rate_findrate()
798 2 * average_tx_time, sn->stats[size_bin][sn->current_rix[size_bin]].average_tx_time); in ath_rate_findrate()
801 int cur_rix = sn->current_rix[size_bin]; in ath_rate_findrate()
802 int cur_att = sn->stats[size_bin][cur_rix].average_tx_time; in ath_rate_findrate()
828 sn->packets_since_sample[size_bin]++; in ath_rate_findrate()
831 if (best_rix != sn->current_rix[size_bin]) { in ath_rate_findrate()
838 dot11rate(rt, sn->current_rix[size_bin]), in ath_rate_findrate()
839 dot11rate_label(rt, sn->current_rix[size_bin]), in ath_rate_findrate()
840 sn->stats[size_bin][sn->current_rix[size_bin]].average_tx_time, in ath_rate_findrate()
841 sn->stats[size_bin][sn->current_rix[size_bin]].perfect_tx_time, in ath_rate_findrate()
842 sn->stats[size_bin][sn->current_rix[size_bin]].ewma_pct, in ath_rate_findrate()
845 sn->stats[size_bin][best_rix].average_tx_time, in ath_rate_findrate()
846 sn->stats[size_bin][best_rix].perfect_tx_time, in ath_rate_findrate()
847 sn->stats[size_bin][best_rix].ewma_pct, in ath_rate_findrate()
848 sn->packets_since_switch[size_bin], in ath_rate_findrate()
851 sn->packets_since_switch[size_bin] = 0; in ath_rate_findrate()
852 sn->current_rix[size_bin] = best_rix; in ath_rate_findrate()
853 sn->ticks_since_switch[size_bin] = ticks; in ath_rate_findrate()
861 rix = sn->current_rix[size_bin]; in ath_rate_findrate()
862 sn->packets_since_switch[size_bin]++; in ath_rate_findrate()
864 *try0 = mrr ? sn->sched[rix].t0 : ATH_TXMAXTRY; in ath_rate_findrate()
885 sn->packets_sent[size_bin]++; in ath_rate_findrate()
900 struct sample_node *sn = ATH_NODE_SAMPLE(an); in ath_rate_getxtxrates() local
901 const struct txschedule *sched = &sn->sched[rix0]; in ath_rate_getxtxrates()
928 struct sample_node *sn = ATH_NODE_SAMPLE(an); in ath_rate_setupxtxdesc() local
929 const struct txschedule *sched = &sn->sched[rix]; in ath_rate_setupxtxdesc()
968 struct sample_node *sn = ATH_NODE_SAMPLE(an); in update_stats() local
979 if (!IS_RATE_DEFINED(sn, rix0)) in update_stats()
1009 if (sn->stats[size_bin][rix0].total_packets < ssc->smoothing_minpackets) { in update_stats()
1011 int avg_tx = sn->stats[size_bin][rix0].average_tx_time; in update_stats()
1012 int packets = sn->stats[size_bin][rix0].total_packets; in update_stats()
1013 sn->stats[size_bin][rix0].average_tx_time = (tt+(avg_tx*packets))/(packets+nframes); in update_stats()
1016 sn->stats[size_bin][rix0].average_tx_time = in update_stats()
1017 ((sn->stats[size_bin][rix0].average_tx_time * ssc->smoothing_rate) + in update_stats()
1022 sn->stats[size_bin][rix0].successive_failures += nbad; in update_stats()
1024 sn->stats[size_bin][rix0].packets_acked += (nframes - nbad); in update_stats()
1025 sn->stats[size_bin][rix0].successive_failures = 0; in update_stats()
1027 sn->stats[size_bin][rix0].tries += tries; in update_stats()
1028 sn->stats[size_bin][rix0].last_tx = ticks; in update_stats()
1029 sn->stats[size_bin][rix0].total_packets += nframes; in update_stats()
1038 if (sn->stats[size_bin][rix0].total_packets < in update_stats()
1041 int a_pct = (sn->stats[size_bin][rix0].packets_acked * 1000) / in update_stats()
1042 (sn->stats[size_bin][rix0].total_packets); in update_stats()
1043 sn->stats[size_bin][rix0].ewma_pct = a_pct; in update_stats()
1046 sn->stats[size_bin][rix0].ewma_pct = in update_stats()
1047 ((sn->stats[size_bin][rix0].ewma_pct * ssc->smoothing_rate) + in update_stats()
1067 rix0 == sn->current_sample_rix[size_bin] ? "sample" : "mrr", in update_stats()
1071 sn->stats[size_bin][rix0].average_tx_time, in update_stats()
1072 sn->stats[size_bin][rix0].perfect_tx_time, in update_stats()
1075 if (rix0 == sn->current_sample_rix[size_bin]) { in update_stats()
1076 sn->sample_tt[size_bin] = tt; in update_stats()
1077 sn->current_sample_rix[size_bin] = -1; in update_stats()
1096 struct sample_node *sn = ATH_NODE_SAMPLE(an); in ath_rate_tx_complete() local
1148 if (sn->ratemask == 0) { in ath_rate_tx_complete()
1164 if (!IS_RATE_DEFINED(sn, final_rix)) { in ath_rate_tx_complete()
1216 if (rc[i].tries && !IS_RATE_DEFINED(sn, rc[i].rix)) in ath_rate_tx_complete()
1300 struct sample_node *sn = ATH_NODE_SAMPLE(an); in ath_rate_ctl_reset() local
1309 sn->sched = mrr_schedules[sc->sc_curmode]; in ath_rate_ctl_reset()
1310 KASSERT(sn->sched != NULL, in ath_rate_ctl_reset()
1313 sn->static_rix = -1; in ath_rate_ctl_reset()
1316 sn->currates = sc->sc_currates; in ath_rate_ctl_reset()
1323 sn->ratemask = 0; in ath_rate_ctl_reset()
1335 sn->ratemask |= (uint64_t) 1<<rix; in ath_rate_ctl_reset()
1349 sn->ratemask |= (uint64_t) 1<<rix; in ath_rate_ctl_reset()
1357 for (mask = sn->ratemask, rix = 0; mask != 0; mask >>= 1, rix++) { in ath_rate_ctl_reset()
1371 sn->packets_sent[y] = 0; in ath_rate_ctl_reset()
1372 sn->current_sample_rix[y] = -1; in ath_rate_ctl_reset()
1373 sn->last_sample_rix[y] = 0; in ath_rate_ctl_reset()
1375 sn->current_rix[y] = ffs(sn->ratemask)-1; in ath_rate_ctl_reset()
1381 for (rix = 0, mask = sn->ratemask; mask != 0; rix++, mask >>= 1) { in ath_rate_ctl_reset()
1384 sn->stats[y][rix].successive_failures = 0; in ath_rate_ctl_reset()
1385 sn->stats[y][rix].tries = 0; in ath_rate_ctl_reset()
1386 sn->stats[y][rix].total_packets = 0; in ath_rate_ctl_reset()
1387 sn->stats[y][rix].packets_acked = 0; in ath_rate_ctl_reset()
1388 sn->stats[y][rix].last_tx = 0; in ath_rate_ctl_reset()
1389 sn->stats[y][rix].ewma_pct = 0; in ath_rate_ctl_reset()
1391 sn->stats[y][rix].perfect_tx_time = in ath_rate_ctl_reset()
1394 sn->stats[y][rix].average_tx_time = in ath_rate_ctl_reset()
1395 sn->stats[y][rix].perfect_tx_time; in ath_rate_ctl_reset()
1402 sn->num_rates, in ath_rate_ctl_reset()
1404 sn->stats[1][0].perfect_tx_time, in ath_rate_ctl_reset()
1405 DOT11RATE(sn->num_rates-1)/2, DOT11RATE(sn->num_rates-1) % 1 ? ".5" : "", in ath_rate_ctl_reset()
1406 sn->stats[1][sn->num_rates-1].perfect_tx_time in ath_rate_ctl_reset()
1410 if (sn->static_rix != -1) in ath_rate_ctl_reset()
1411 ni->ni_txrate = DOT11RATE(sn->static_rix); in ath_rate_ctl_reset()
1432 struct sample_node *sn = ATH_NODE_SAMPLE(an); in ath_rate_fetch_node_stats() local
1505 error = copyout(sn, rs->buf + o, sizeof(struct sample_node)); in ath_rate_fetch_node_stats()
1520 struct sample_node *sn = ATH_NODE_SAMPLE(ATH_NODE(ni)); in sample_stats() local
1526 dot11rate(rt, sn->static_rix), in sample_stats()
1527 dot11rate_label(rt, sn->static_rix), in sample_stats()
1528 (uintmax_t)sn->ratemask); in sample_stats()
1531 bin_to_size(y), sn->current_rix[y], in sample_stats()
1532 dot11rate(rt, sn->current_rix[y]), in sample_stats()
1533 dot11rate_label(rt, sn->current_rix[y]), in sample_stats()
1534 sn->packets_since_switch[y], sn->ticks_since_switch[y]); in sample_stats()
1537 dot11rate(rt, sn->last_sample_rix[y]), in sample_stats()
1538 dot11rate_label(rt, sn->last_sample_rix[y]), in sample_stats()
1539 dot11rate(rt, sn->current_sample_rix[y]), in sample_stats()
1540 dot11rate_label(rt, sn->current_sample_rix[y]), in sample_stats()
1541 sn->packets_sent[y]); in sample_stats()
1543 bin_to_size(y), sn->packets_since_sample[y], in sample_stats()
1544 sn->sample_tt[y]); in sample_stats()
1546 for (mask = sn->ratemask, rix = 0; mask != 0; mask >>= 1, rix++) { in sample_stats()
1550 if (sn->stats[y][rix].total_packets == 0) in sample_stats()
1555 (uintmax_t) sn->stats[y][rix].total_packets, in sample_stats()
1556 (uintmax_t) sn->stats[y][rix].packets_acked, in sample_stats()
1557 (int) ((sn->stats[y][rix].packets_acked * 100ULL) / in sample_stats()
1558 sn->stats[y][rix].total_packets), in sample_stats()
1559 sn->stats[y][rix].ewma_pct / 10, in sample_stats()
1560 sn->stats[y][rix].ewma_pct % 10, in sample_stats()
1561 (uintmax_t) sn->stats[y][rix].tries, in sample_stats()
1562 sn->stats[y][rix].successive_failures, in sample_stats()
1563 sn->stats[y][rix].average_tx_time, in sample_stats()
1564 ticks - sn->stats[y][rix].last_tx); in sample_stats()