Lines Matching full: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()
420 struct sample_node *sn = ATH_NODE_SAMPLE(an); in pick_sample_rate() local
425 current_rix = sn->current_rix[size_bin]; in pick_sample_rate()
432 current_tt = sn->stats[size_bin][current_rix].average_tx_time; 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()
469 if (sn->stats[size_bin][rix].perfect_tx_time > current_tt) { in pick_sample_rate()
475 if (sn->stats[size_bin][rix].successive_failures > ssc->max_successive_failures && in pick_sample_rate()
476 ticks - sn->stats[size_bin][rix].last_tx < ssc->stale_failure_timeout) { in pick_sample_rate()
513 sn->last_sample_rix[size_bin] = rix; in pick_sample_rate()
552 struct sample_node *sn = ATH_NODE_SAMPLE(an); in ath_rate_update_static_rix() local
562 sn->static_rix = ath_rate_get_static_rix(sc, ni); in ath_rate_update_static_rix()
564 sn->static_rix = -1; in ath_rate_update_static_rix()
580 struct sample_node *sn = ATH_NODE_SAMPLE(an); in ath_rate_pick_seed_rate_legacy() local
585 if ((sn->ratemask & ((uint64_t) 1<<rix)) == 0) in ath_rate_pick_seed_rate_legacy()
597 sn->stats[size_bin][rix].successive_failures == 0) { in ath_rate_pick_seed_rate_legacy()
621 struct sample_node *sn = ATH_NODE_SAMPLE(an); in ath_rate_pick_seed_rate_ht() local
627 if ((sn->ratemask & ((uint64_t) 1<<rix)) == 0) in ath_rate_pick_seed_rate_ht()
644 sn->stats[size_bin][rix].successive_failures == 0) { in ath_rate_pick_seed_rate_ht()
668 struct sample_node *sn = ATH_NODE_SAMPLE(an); in ath_rate_findrate() local
688 if (sn->currates != sc->sc_currates) { in ath_rate_findrate()
696 if (sn->static_rix != -1) { in ath_rate_findrate()
697 rix = sn->static_rix; in ath_rate_findrate()
704 sn->static_rix, in ath_rate_findrate()
739 average_tx_time = sn->stats[size_bin][best_rix].average_tx_time; in ath_rate_findrate()
748 if (sn->sample_tt[size_bin] < in ath_rate_findrate()
750 (sn->packets_since_sample[size_bin]*ssc->sample_rate/100)) { in ath_rate_findrate()
756 sn->sample_tt[size_bin], in ath_rate_findrate()
760 dot11rate(rt, sn->current_rix[size_bin]), in ath_rate_findrate()
761 dot11rate_label(rt, sn->current_rix[size_bin])); in ath_rate_findrate()
762 if (rix != sn->current_rix[size_bin]) { in ath_rate_findrate()
763 sn->current_sample_rix[size_bin] = rix; in ath_rate_findrate()
765 sn->current_sample_rix[size_bin] = -1; in ath_rate_findrate()
767 sn->packets_since_sample[size_bin] = 0; in ath_rate_findrate()
770 if (!sn->packets_sent[size_bin] || best_rix == -1) { in ath_rate_findrate()
779 } else if (sn->packets_sent[size_bin] < 20) { in ath_rate_findrate()
785 } else if (ticks - ssc->min_switch > sn->ticks_since_switch[size_bin]) { in ath_rate_findrate()
790 __func__, ticks - ssc->min_switch, sn->ticks_since_switch[size_bin]); in ath_rate_findrate()
793 (2*average_tx_time < sn->stats[size_bin][sn->current_rix[size_bin]].average_tx_time)) { in ath_rate_findrate()
799 2 * average_tx_time, sn->stats[size_bin][sn->current_rix[size_bin]].average_tx_time); in ath_rate_findrate()
802 int cur_rix = sn->current_rix[size_bin]; in ath_rate_findrate()
803 int cur_att = sn->stats[size_bin][cur_rix].average_tx_time; in ath_rate_findrate()
829 sn->packets_since_sample[size_bin]++; in ath_rate_findrate()
832 if (best_rix != sn->current_rix[size_bin]) { in ath_rate_findrate()
839 dot11rate(rt, sn->current_rix[size_bin]), in ath_rate_findrate()
840 dot11rate_label(rt, sn->current_rix[size_bin]), in ath_rate_findrate()
841 sn->stats[size_bin][sn->current_rix[size_bin]].average_tx_time, in ath_rate_findrate()
842 sn->stats[size_bin][sn->current_rix[size_bin]].perfect_tx_time, in ath_rate_findrate()
843 sn->stats[size_bin][sn->current_rix[size_bin]].ewma_pct, in ath_rate_findrate()
846 sn->stats[size_bin][best_rix].average_tx_time, in ath_rate_findrate()
847 sn->stats[size_bin][best_rix].perfect_tx_time, in ath_rate_findrate()
848 sn->stats[size_bin][best_rix].ewma_pct, in ath_rate_findrate()
849 sn->packets_since_switch[size_bin], in ath_rate_findrate()
852 sn->packets_since_switch[size_bin] = 0; in ath_rate_findrate()
853 sn->current_rix[size_bin] = best_rix; in ath_rate_findrate()
854 sn->ticks_since_switch[size_bin] = ticks; in ath_rate_findrate()
862 rix = sn->current_rix[size_bin]; in ath_rate_findrate()
863 sn->packets_since_switch[size_bin]++; in ath_rate_findrate()
865 *try0 = mrr ? sn->sched[rix].t0 : ATH_TXMAXTRY; in ath_rate_findrate()
886 sn->packets_sent[size_bin]++; in ath_rate_findrate()
901 struct sample_node *sn = ATH_NODE_SAMPLE(an); in ath_rate_getxtxrates() local
902 const struct txschedule *sched = &sn->sched[rix0]; in ath_rate_getxtxrates()
929 struct sample_node *sn = ATH_NODE_SAMPLE(an); in ath_rate_setupxtxdesc() local
930 const struct txschedule *sched = &sn->sched[rix]; in ath_rate_setupxtxdesc()
969 struct sample_node *sn = ATH_NODE_SAMPLE(an); in update_stats() local
980 if (!IS_RATE_DEFINED(sn, rix0)) in update_stats()
1010 if (sn->stats[size_bin][rix0].total_packets < ssc->smoothing_minpackets) { in update_stats()
1012 int avg_tx = sn->stats[size_bin][rix0].average_tx_time; in update_stats()
1013 int packets = sn->stats[size_bin][rix0].total_packets; in update_stats()
1014 sn->stats[size_bin][rix0].average_tx_time = (tt+(avg_tx*packets))/(packets+nframes); in update_stats()
1017 sn->stats[size_bin][rix0].average_tx_time = in update_stats()
1018 ((sn->stats[size_bin][rix0].average_tx_time * ssc->smoothing_rate) + in update_stats()
1023 sn->stats[size_bin][rix0].successive_failures += nbad; in update_stats()
1025 sn->stats[size_bin][rix0].packets_acked += (nframes - nbad); in update_stats()
1026 sn->stats[size_bin][rix0].successive_failures = 0; in update_stats()
1028 sn->stats[size_bin][rix0].tries += tries; in update_stats()
1029 sn->stats[size_bin][rix0].last_tx = ticks; in update_stats()
1030 sn->stats[size_bin][rix0].total_packets += nframes; in update_stats()
1039 if (sn->stats[size_bin][rix0].total_packets < in update_stats()
1042 int a_pct = (sn->stats[size_bin][rix0].packets_acked * 1000) / in update_stats()
1043 (sn->stats[size_bin][rix0].total_packets); in update_stats()
1044 sn->stats[size_bin][rix0].ewma_pct = a_pct; in update_stats()
1047 sn->stats[size_bin][rix0].ewma_pct = in update_stats()
1048 ((sn->stats[size_bin][rix0].ewma_pct * ssc->smoothing_rate) + in update_stats()
1068 rix0 == sn->current_sample_rix[size_bin] ? "sample" : "mrr", in update_stats()
1072 sn->stats[size_bin][rix0].average_tx_time, in update_stats()
1073 sn->stats[size_bin][rix0].perfect_tx_time, in update_stats()
1076 if (rix0 == sn->current_sample_rix[size_bin]) { in update_stats()
1077 sn->sample_tt[size_bin] = tt; in update_stats()
1078 sn->current_sample_rix[size_bin] = -1; in update_stats()
1097 struct sample_node *sn = ATH_NODE_SAMPLE(an); in ath_rate_tx_complete() local
1149 if (sn->ratemask == 0) { in ath_rate_tx_complete()
1165 if (!IS_RATE_DEFINED(sn, final_rix)) { in ath_rate_tx_complete()
1217 if (rc[i].tries && !IS_RATE_DEFINED(sn, rc[i].rix)) in ath_rate_tx_complete()
1301 struct sample_node *sn = ATH_NODE_SAMPLE(an); in ath_rate_ctl_reset() local
1310 sn->sched = mrr_schedules[sc->sc_curmode]; in ath_rate_ctl_reset()
1311 KASSERT(sn->sched != NULL, in ath_rate_ctl_reset()
1314 sn->static_rix = -1; in ath_rate_ctl_reset()
1317 sn->currates = sc->sc_currates; in ath_rate_ctl_reset()
1324 sn->ratemask = 0; in ath_rate_ctl_reset()
1336 sn->ratemask |= (uint64_t) 1<<rix; in ath_rate_ctl_reset()
1350 sn->ratemask |= (uint64_t) 1<<rix; in ath_rate_ctl_reset()
1358 for (mask = sn->ratemask, rix = 0; mask != 0; mask >>= 1, rix++) { in ath_rate_ctl_reset()
1372 sn->packets_sent[y] = 0; in ath_rate_ctl_reset()
1373 sn->current_sample_rix[y] = -1; in ath_rate_ctl_reset()
1374 sn->last_sample_rix[y] = 0; in ath_rate_ctl_reset()
1376 sn->current_rix[y] = ffs(sn->ratemask)-1; in ath_rate_ctl_reset()
1382 for (rix = 0, mask = sn->ratemask; mask != 0; rix++, mask >>= 1) { in ath_rate_ctl_reset()
1385 sn->stats[y][rix].successive_failures = 0; in ath_rate_ctl_reset()
1386 sn->stats[y][rix].tries = 0; in ath_rate_ctl_reset()
1387 sn->stats[y][rix].total_packets = 0; in ath_rate_ctl_reset()
1388 sn->stats[y][rix].packets_acked = 0; in ath_rate_ctl_reset()
1389 sn->stats[y][rix].last_tx = 0; in ath_rate_ctl_reset()
1390 sn->stats[y][rix].ewma_pct = 0; in ath_rate_ctl_reset()
1392 sn->stats[y][rix].perfect_tx_time = in ath_rate_ctl_reset()
1395 sn->stats[y][rix].average_tx_time = in ath_rate_ctl_reset()
1396 sn->stats[y][rix].perfect_tx_time; in ath_rate_ctl_reset()
1403 sn->num_rates, in ath_rate_ctl_reset()
1405 sn->stats[1][0].perfect_tx_time, in ath_rate_ctl_reset()
1406 DOT11RATE(sn->num_rates-1)/2, DOT11RATE(sn->num_rates-1) % 1 ? ".5" : "", in ath_rate_ctl_reset()
1407 sn->stats[1][sn->num_rates-1].perfect_tx_time in ath_rate_ctl_reset()
1411 if (sn->static_rix != -1) in ath_rate_ctl_reset()
1412 ni->ni_txrate = DOT11RATE(sn->static_rix); in ath_rate_ctl_reset()
1433 struct sample_node *sn = ATH_NODE_SAMPLE(an); in ath_rate_fetch_node_stats() local
1506 error = copyout(sn, rs->buf + o, sizeof(struct sample_node)); in ath_rate_fetch_node_stats()
1521 struct sample_node *sn = ATH_NODE_SAMPLE(ATH_NODE(ni)); in sample_stats() local
1527 dot11rate(rt, sn->static_rix), in sample_stats()
1528 dot11rate_label(rt, sn->static_rix), in sample_stats()
1529 (uintmax_t)sn->ratemask); in sample_stats()
1532 bin_to_size(y), sn->current_rix[y], in sample_stats()
1533 dot11rate(rt, sn->current_rix[y]), in sample_stats()
1534 dot11rate_label(rt, sn->current_rix[y]), in sample_stats()
1535 sn->packets_since_switch[y], sn->ticks_since_switch[y]); in sample_stats()
1538 dot11rate(rt, sn->last_sample_rix[y]), in sample_stats()
1539 dot11rate_label(rt, sn->last_sample_rix[y]), in sample_stats()
1540 dot11rate(rt, sn->current_sample_rix[y]), in sample_stats()
1541 dot11rate_label(rt, sn->current_sample_rix[y]), in sample_stats()
1542 sn->packets_sent[y]); in sample_stats()
1544 bin_to_size(y), sn->packets_since_sample[y], in sample_stats()
1545 sn->sample_tt[y]); in sample_stats()
1547 for (mask = sn->ratemask, rix = 0; mask != 0; mask >>= 1, rix++) { in sample_stats()
1551 if (sn->stats[y][rix].total_packets == 0) in sample_stats()
1556 (uintmax_t) sn->stats[y][rix].total_packets, in sample_stats()
1557 (uintmax_t) sn->stats[y][rix].packets_acked, in sample_stats()
1558 (int) ((sn->stats[y][rix].packets_acked * 100ULL) / in sample_stats()
1559 sn->stats[y][rix].total_packets), in sample_stats()
1560 sn->stats[y][rix].ewma_pct / 10, in sample_stats()
1561 sn->stats[y][rix].ewma_pct % 10, in sample_stats()
1562 (uintmax_t) sn->stats[y][rix].tries, in sample_stats()
1563 sn->stats[y][rix].successive_failures, in sample_stats()
1564 sn->stats[y][rix].average_tx_time, in sample_stats()
1565 ticks - sn->stats[y][rix].last_tx); in sample_stats()