Lines Matching refs:ra
157 rssadapt_updatestats(struct ieee80211_rssadapt_node *ra) in rssadapt_updatestats() argument
161 ra->ra_pktrate = (ra->ra_pktrate + 10*(ra->ra_nfail + ra->ra_nok))/2; in rssadapt_updatestats()
162 ra->ra_nfail = ra->ra_nok = 0; in rssadapt_updatestats()
168 interval = MAX(10*1000, 10*1000 / MAX(1, 10 * ra->ra_pktrate)); in rssadapt_updatestats()
169 ra->ra_raise_interval = msecs_to_ticks(interval); in rssadapt_updatestats()
175 struct ieee80211_rssadapt_node *ra; in rssadapt_node_init() local
187 ni->ni_rctls = ra = in rssadapt_node_init()
190 if (ra == NULL) { in rssadapt_node_init()
196 ra = ni->ni_rctls; in rssadapt_node_init()
197 ra->ra_rs = rsa; in rssadapt_node_init()
198 ra->ra_rates = *rs; in rssadapt_node_init()
199 rssadapt_updatestats(ra); in rssadapt_node_init()
202 for (ra->ra_rix = rs->rs_nrates - 1; in rssadapt_node_init()
203 ra->ra_rix > 0 && (rs->rs_rates[ra->ra_rix] & IEEE80211_RATE_VAL) > 72; in rssadapt_node_init()
204 ra->ra_rix--) in rssadapt_node_init()
206 ni->ni_txrate = rs->rs_rates[ra->ra_rix] & IEEE80211_RATE_VAL; in rssadapt_node_init()
207 ra->ra_ticks = ticks; in rssadapt_node_init()
238 struct ieee80211_rssadapt_node *ra = ni->ni_rctls; in rssadapt_rate() local
245 if (!ra) in rssadapt_rate()
251 rs = &ra->ra_rates; in rssadapt_rate()
252 if ((ticks - ra->ra_ticks) > ra->ra_rs->interval) { in rssadapt_rate()
253 rssadapt_updatestats(ra); in rssadapt_rate()
254 ra->ra_ticks = ticks; in rssadapt_rate()
257 thrs = &ra->ra_rate_thresh[bucket(pktlen)]; in rssadapt_rate()
264 if (rix != ra->ra_rix) { in rssadapt_rate()
267 ra->ra_rix = rix; in rssadapt_rate()
283 rssadapt_lower_rate(struct ieee80211_rssadapt_node *ra, int pktlen, int rssi) in rssadapt_lower_rate() argument
289 thrs = &ra->ra_rate_thresh[bucket(pktlen)]; in rssadapt_lower_rate()
291 rix = ra->ra_rix; in rssadapt_lower_rate()
296 IEEE80211_DPRINTF(ra->ra_rs->vap, IEEE80211_MSG_RATECTL, in rssadapt_lower_rate()
298 ra->ra_rates.rs_rates[rix + 1] & IEEE80211_RATE_VAL, in rssadapt_lower_rate()
303 rssadapt_raise_rate(struct ieee80211_rssadapt_node *ra, int pktlen, int rssi) in rssadapt_raise_rate() argument
309 thrs = &ra->ra_rate_thresh[bucket(pktlen)]; in rssadapt_raise_rate()
311 rix = ra->ra_rix; in rssadapt_raise_rate()
321 IEEE80211_DPRINTF(ra->ra_rs->vap, IEEE80211_MSG_RATECTL, in rssadapt_raise_rate()
323 ra->ra_rates.rs_rates[rix + 1] & IEEE80211_RATE_VAL, in rssadapt_raise_rate()
326 ra->ra_last_raise = ticks; in rssadapt_raise_rate()
334 struct ieee80211_rssadapt_node *ra = ni->ni_rctls; in rssadapt_tx_complete() local
337 if (!ra) in rssadapt_tx_complete()
349 ra->ra_nok++; in rssadapt_tx_complete()
350 if ((ra->ra_rix + 1) < ra->ra_rates.rs_nrates && in rssadapt_tx_complete()
351 (ticks - ra->ra_last_raise) >= ra->ra_raise_interval) in rssadapt_tx_complete()
352 rssadapt_raise_rate(ra, pktlen, rssi); in rssadapt_tx_complete()
354 ra->ra_nfail++; in rssadapt_tx_complete()
355 rssadapt_lower_rate(ra, pktlen, rssi); in rssadapt_tx_complete()