Lines Matching refs:rs_sta
135 il3945_rate_scale_flush_wins(struct il3945_rs_sta *rs_sta) in il3945_rate_scale_flush_wins() argument
140 struct il_priv *il __maybe_unused = rs_sta->il; in il3945_rate_scale_flush_wins()
148 if (!rs_sta->win[i].counter) in il3945_rate_scale_flush_wins()
151 spin_lock_irqsave(&rs_sta->lock, flags); in il3945_rate_scale_flush_wins()
152 if (time_after(jiffies, rs_sta->win[i].stamp + RATE_WIN_FLUSH)) { in il3945_rate_scale_flush_wins()
154 rs_sta->win[i].counter, i); in il3945_rate_scale_flush_wins()
155 il3945_clear_win(&rs_sta->win[i]); in il3945_rate_scale_flush_wins()
158 spin_unlock_irqrestore(&rs_sta->lock, flags); in il3945_rate_scale_flush_wins()
171 struct il3945_rs_sta *rs_sta = from_timer(rs_sta, t, rate_scale_flush); in il3945_bg_rate_scale_flush() local
172 struct il_priv *il __maybe_unused = rs_sta->il; in il3945_bg_rate_scale_flush()
179 unflushed = il3945_rate_scale_flush_wins(rs_sta); in il3945_bg_rate_scale_flush()
181 spin_lock_irqsave(&rs_sta->lock, flags); in il3945_bg_rate_scale_flush()
184 packet_count = (rs_sta->tx_packets - rs_sta->last_tx_packets) + 1; in il3945_bg_rate_scale_flush()
186 rs_sta->last_tx_packets = rs_sta->tx_packets + 1; in il3945_bg_rate_scale_flush()
190 jiffies_to_msecs(jiffies - rs_sta->last_partial_flush); in il3945_bg_rate_scale_flush()
209 rs_sta->flush_time = msecs_to_jiffies(duration); in il3945_bg_rate_scale_flush()
214 mod_timer(&rs_sta->rate_scale_flush, in il3945_bg_rate_scale_flush()
215 jiffies + rs_sta->flush_time); in il3945_bg_rate_scale_flush()
217 rs_sta->last_partial_flush = jiffies; in il3945_bg_rate_scale_flush()
219 rs_sta->flush_time = RATE_FLUSH; in il3945_bg_rate_scale_flush()
220 rs_sta->flush_pending = 0; in il3945_bg_rate_scale_flush()
225 rs_sta->last_flush = jiffies; in il3945_bg_rate_scale_flush()
227 spin_unlock_irqrestore(&rs_sta->lock, flags); in il3945_bg_rate_scale_flush()
240 il3945_collect_tx_data(struct il3945_rs_sta *rs_sta, in il3945_collect_tx_data() argument
246 struct il_priv *il __maybe_unused = rs_sta->il; in il3945_collect_tx_data()
253 spin_lock_irqsave(&rs_sta->lock, flags); in il3945_collect_tx_data()
304 ((win->success_ratio * rs_sta->expected_tpt[idx] + in il3945_collect_tx_data()
312 spin_unlock_irqrestore(&rs_sta->lock, flags); in il3945_collect_tx_data()
324 struct il3945_rs_sta *rs_sta; in il3945_rs_rate_init() local
333 rs_sta = &psta->rs_sta; in il3945_rs_rate_init()
336 rs_sta->il = il; in il3945_rs_rate_init()
338 rs_sta->start_rate = RATE_INVALID; in il3945_rs_rate_init()
341 rs_sta->expected_tpt = il3945_expected_tpt_b; in il3945_rs_rate_init()
343 rs_sta->last_partial_flush = jiffies; in il3945_rs_rate_init()
344 rs_sta->last_flush = jiffies; in il3945_rs_rate_init()
345 rs_sta->flush_time = RATE_FLUSH; in il3945_rs_rate_init()
346 rs_sta->last_tx_packets = 0; in il3945_rs_rate_init()
349 il3945_clear_win(&rs_sta->win[i]); in il3945_rs_rate_init()
358 rs_sta->last_txrate_idx = i; in il3945_rs_rate_init()
366 rs_sta->last_txrate_idx += IL_FIRST_OFDM_RATE; in il3945_rs_rate_init()
391 struct il3945_rs_sta *rs_sta; in il3945_rs_alloc_sta() local
397 rs_sta = &psta->rs_sta; in il3945_rs_alloc_sta()
399 spin_lock_init(&rs_sta->lock); in il3945_rs_alloc_sta()
400 timer_setup(&rs_sta->rate_scale_flush, il3945_bg_rate_scale_flush, 0); in il3945_rs_alloc_sta()
403 return rs_sta; in il3945_rs_alloc_sta()
409 struct il3945_rs_sta *rs_sta = il_sta; in il3945_rs_free_sta() local
416 del_timer_sync(&rs_sta->rate_scale_flush); in il3945_rs_free_sta()
434 struct il3945_rs_sta *rs_sta = il_sta; in il3945_rs_tx_status() local
456 if (!rs_sta->il) { in il3945_rs_tx_status()
461 rs_sta->tx_packets++; in il3945_rs_tx_status()
487 il3945_collect_tx_data(rs_sta, &rs_sta->win[scale_rate_idx], 0, in il3945_rs_tx_status()
500 il3945_collect_tx_data(rs_sta, &rs_sta->win[last_idx], in il3945_rs_tx_status()
507 spin_lock_irqsave(&rs_sta->lock, flags); in il3945_rs_tx_status()
509 if (!rs_sta->flush_pending && in il3945_rs_tx_status()
510 time_after(jiffies, rs_sta->last_flush + rs_sta->flush_time)) { in il3945_rs_tx_status()
512 rs_sta->last_partial_flush = jiffies; in il3945_rs_tx_status()
513 rs_sta->flush_pending = 1; in il3945_rs_tx_status()
514 mod_timer(&rs_sta->rate_scale_flush, in il3945_rs_tx_status()
515 jiffies + rs_sta->flush_time); in il3945_rs_tx_status()
518 spin_unlock_irqrestore(&rs_sta->lock, flags); in il3945_rs_tx_status()
524 il3945_get_adjacent_rate(struct il3945_rs_sta *rs_sta, u8 idx, u16 rate_mask, in il3945_get_adjacent_rate() argument
529 struct il_priv *il __maybe_unused = rs_sta->il; in il3945_get_adjacent_rate()
560 if (rs_sta->tgg) in il3945_get_adjacent_rate()
573 if (rs_sta->tgg) in il3945_get_adjacent_rate()
613 struct il3945_rs_sta *rs_sta = il_sta; in il3945_rs_get_rate() local
629 if (rs_sta && !rs_sta->il) { in il3945_rs_get_rate()
643 idx = min(rs_sta->last_txrate_idx & 0xffff, RATE_COUNT_3945 - 1); in il3945_rs_get_rate()
648 spin_lock_irqsave(&rs_sta->lock, flags); in il3945_rs_get_rate()
653 if (rs_sta->start_rate != RATE_INVALID) { in il3945_rs_get_rate()
654 if (rs_sta->start_rate < idx && in il3945_rs_get_rate()
655 (rate_mask & (1 << rs_sta->start_rate))) in il3945_rs_get_rate()
656 idx = rs_sta->start_rate; in il3945_rs_get_rate()
657 rs_sta->start_rate = RATE_INVALID; in il3945_rs_get_rate()
666 win = &(rs_sta->win[idx]); in il3945_rs_get_rate()
672 spin_unlock_irqrestore(&rs_sta->lock, flags); in il3945_rs_get_rate()
678 rs_sta->expected_tpt ? "not " : ""); in il3945_rs_get_rate()
689 il3945_get_adjacent_rate(rs_sta, idx, rate_mask, sband->band); in il3945_rs_get_rate()
699 low_tpt = rs_sta->win[low].average_tpt; in il3945_rs_get_rate()
702 high_tpt = rs_sta->win[high].average_tpt; in il3945_rs_get_rate()
704 spin_unlock_irqrestore(&rs_sta->lock, flags); in il3945_rs_get_rate()
761 current_tpt > 100 * rs_sta->expected_tpt[low])) in il3945_rs_get_rate()
790 rs_sta->last_txrate_idx = idx; in il3945_rs_get_rate()
793 rs_sta->last_txrate_idx = idx; in il3945_rs_get_rate()
794 info->control.rates[0].idx = rs_sta->last_txrate_idx; in il3945_rs_get_rate()
884 struct il3945_rs_sta *rs_sta; in il3945_rate_scale_init() local
900 rs_sta = &psta->rs_sta; in il3945_rate_scale_init()
902 spin_lock_irqsave(&rs_sta->lock, flags); in il3945_rate_scale_init()
904 rs_sta->tgg = 0; in il3945_rate_scale_init()
909 rs_sta->tgg = 1; in il3945_rate_scale_init()
910 rs_sta->expected_tpt = il3945_expected_tpt_g_prot; in il3945_rate_scale_init()
912 rs_sta->expected_tpt = il3945_expected_tpt_g; in il3945_rate_scale_init()
915 rs_sta->expected_tpt = il3945_expected_tpt_a; in il3945_rate_scale_init()
922 spin_unlock_irqrestore(&rs_sta->lock, flags); in il3945_rate_scale_init()
930 rs_sta->start_rate = il3945_get_rate_idx_by_rssi(rssi, il->band); in il3945_rate_scale_init()
933 rs_sta->start_rate, il3945_rates[rs_sta->start_rate].plcp); in il3945_rate_scale_init()