Lines Matching refs:size_bin

169 static inline int best_rate_ndx(struct sample_node *sn, int size_bin,   in best_rate_ndx()  argument
176 int tt = sn->stats[size_bin][x].average_tx_time; in best_rate_ndx()
178 !sn->stats[size_bin][x].packets_acked)) { in best_rate_ndx()
187 if (sn->stats[size_bin][x].successive_failures > 3) in best_rate_ndx()
202 pick_sample_ndx(struct sample_node *sn, int size_bin) in pick_sample_ndx() argument
208 current_ndx = sn->current_rate[size_bin]; in pick_sample_ndx()
214 current_tt = sn->stats[size_bin][current_ndx].average_tx_time; in pick_sample_ndx()
217 int ndx = (sn->last_sample_ndx[size_bin]+1+x) % sn->num_rates; in pick_sample_ndx()
224 if (sn->stats[size_bin][ndx].perfect_tx_time > current_tt) in pick_sample_ndx()
228 … if (ticks - sn->stats[size_bin][ndx].last_tx < ((hz * STALE_FAILURE_TIMEOUT_MS)/1000) && in pick_sample_ndx()
229 sn->stats[size_bin][ndx].successive_failures > 3) in pick_sample_ndx()
247 sn->last_sample_ndx[size_bin] = ndx; in pick_sample_ndx()
261 int ndx, size_bin, mrr, best_ndx, change_rates; in ath_rate_findrate() local
265 size_bin = size_to_bin(frameLen); in ath_rate_findrate()
266 best_ndx = best_rate_ndx(sn, size_bin, !mrr); in ath_rate_findrate()
269 average_tx_time = sn->stats[size_bin][best_ndx].average_tx_time; in ath_rate_findrate()
280 …if (sn->sample_tt[size_bin] < average_tx_time * (sn->packets_since_sample[size_bin]*ssc->ath_sampl… in ath_rate_findrate()
286 ndx = pick_sample_ndx(sn, size_bin); in ath_rate_findrate()
287 if (ndx != sn->current_rate[size_bin]) { in ath_rate_findrate()
288 sn->current_sample_ndx[size_bin] = ndx; in ath_rate_findrate()
290 sn->current_sample_ndx[size_bin] = -1; in ath_rate_findrate()
292 sn->packets_since_sample[size_bin] = 0; in ath_rate_findrate()
296 if (!sn->packets_sent[size_bin] || best_ndx == -1) { in ath_rate_findrate()
304 … sn->stats[size_bin][ndx].successive_failures == 0) { in ath_rate_findrate()
310 } else if (sn->packets_sent[size_bin] < 20) { in ath_rate_findrate()
313 … } else if (ticks - ((hz*MIN_SWITCH_MS)/1000) > sn->ticks_since_switch[size_bin]) { in ath_rate_findrate()
316 …} else if (average_tx_time * 2 < sn->stats[size_bin][sn->current_rate[size_bin]].average_tx_time) { in ath_rate_findrate()
321 sn->packets_since_sample[size_bin]++; in ath_rate_findrate()
324 if (best_ndx != sn->current_rate[size_bin]) { in ath_rate_findrate()
328 packet_size_bins[size_bin], in ath_rate_findrate()
329 … sn->rates[sn->current_rate[size_bin]].rate, in ath_rate_findrate()
330 … sn->stats[size_bin][sn->current_rate[size_bin]].average_tx_time, in ath_rate_findrate()
331 … sn->stats[size_bin][sn->current_rate[size_bin]].perfect_tx_time, in ath_rate_findrate()
333 … sn->stats[size_bin][best_ndx].average_tx_time, in ath_rate_findrate()
334 … sn->stats[size_bin][best_ndx].perfect_tx_time, in ath_rate_findrate()
335 sn->packets_since_switch[size_bin], in ath_rate_findrate()
338 sn->packets_since_switch[size_bin] = 0; in ath_rate_findrate()
339 sn->current_rate[size_bin] = best_ndx; in ath_rate_findrate()
340 sn->ticks_since_switch[size_bin] = ticks; in ath_rate_findrate()
342 ndx = sn->current_rate[size_bin]; in ath_rate_findrate()
343 sn->packets_since_switch[size_bin]++; in ath_rate_findrate()
344 if (size_bin == 0) { in ath_rate_findrate()
362 sn->packets_sent[size_bin]++; in ath_rate_findrate()
372 int size_bin = 0; in ath_rate_setupxtxdesc() local
375 size_bin = size_to_bin(frame_size); // TODO: it's correct that frame_size always 0 ? in ath_rate_setupxtxdesc()
376 ndx = sn->current_rate[size_bin]; /* retry at the current bit-rate */ in ath_rate_setupxtxdesc()
378 if (!sn->stats[size_bin][ndx].packets_acked) { in ath_rate_setupxtxdesc()
407 int size_bin; in update_stats() local
414 size_bin = size_to_bin(frame_size); in update_stats()
415 size = bin_to_size(size_bin); in update_stats()
442 if (sn->stats[size_bin][ndx0].total_packets < (100 / (100 - ssc->ath_smoothing_rate))) { in update_stats()
444 int avg_tx = sn->stats[size_bin][ndx0].average_tx_time; in update_stats()
445 int packets = sn->stats[size_bin][ndx0].total_packets; in update_stats()
446 sn->stats[size_bin][ndx0].average_tx_time = (tt+(avg_tx*packets))/(packets+1); in update_stats()
449 sn->stats[size_bin][ndx0].average_tx_time = in update_stats()
450 … ((sn->stats[size_bin][ndx0].average_tx_time * ssc->ath_smoothing_rate) + in update_stats()
456 sn->stats[size_bin][ndx0].successive_failures++; in update_stats()
457 for (y = size_bin+1; y < NUM_PACKET_SIZE_BINS; y++) { in update_stats()
468 sn->stats[size_bin][ndx0].packets_acked++; in update_stats()
469 sn->stats[size_bin][ndx0].successive_failures = 0; in update_stats()
471 sn->stats[size_bin][ndx0].tries += tries; in update_stats()
472 sn->stats[size_bin][ndx0].last_tx = ticks; in update_stats()
473 sn->stats[size_bin][ndx0].total_packets++; in update_stats()
476 if (ndx0 == sn->current_sample_ndx[size_bin]) { in update_stats()
480 sn->stats[size_bin][ndx0].average_tx_time, in update_stats()
481 sn->stats[size_bin][ndx0].perfect_tx_time, in update_stats()
483 sn->sample_tt[size_bin] = tt; in update_stats()
484 sn->current_sample_ndx[size_bin] = -1; in update_stats()