Lines Matching refs:an

83  * This file is an implementation of the SampleRate algorithm
130 ath_rate_node_init(struct ath_softc *sc, struct ath_node *an)
136 ath_rate_node_cleanup(struct ath_softc *sc, struct ath_node *an)
162 pick_best_rate(struct ath_node *an, const HAL_RATE_TABLE *rt,
165 struct sample_node *sn = ATH_NODE_SAMPLE(an);
178 if ((an->an_node.ni_flags & IEEE80211_NODE_HT) &&
209 if (an->an_node.ni_flags & IEEE80211_NODE_HT) {
218 if (! (an->an_node.ni_flags & IEEE80211_NODE_HT)) {
231 if (an->an_node.ni_flags & IEEE80211_NODE_HT) {
246 pick_sample_rate(struct sample_softc *ssc , struct ath_node *an,
251 struct sample_node *sn = ATH_NODE_SAMPLE(an);
277 * non-MCS rates when speaking to an MCS node.
292 if ((an->an_node.ni_flags & IEEE80211_NODE_HT) &&
316 if (an->an_node.ni_flags & IEEE80211_NODE_HT) {
325 if (! (an->an_node.ni_flags & IEEE80211_NODE_HT)) {
369 struct ath_node *an = ATH_NODE(ni);
371 struct sample_node *sn = ATH_NODE_SAMPLE(an);
391 ath_rate_pick_seed_rate_legacy(struct ath_softc *sc, struct ath_node *an,
399 struct sample_node *sn = ATH_NODE_SAMPLE(an);
432 ath_rate_pick_seed_rate_ht(struct ath_softc *sc, struct ath_node *an,
440 struct sample_node *sn = ATH_NODE_SAMPLE(an);
480 ath_rate_findrate(struct ath_softc *sc, struct ath_node *an,
487 struct sample_node *sn = ATH_NODE_SAMPLE(an);
496 ath_rate_update_static_rix(sc, &an->an_node);
517 best_rix = pick_best_rate(an, rt, size_bin, !mrr);
528 rix = pick_sample_rate(ssc, an, rt, size_bin);
529 IEEE80211_NOTE(an->an_node.ni_vap, IEEE80211_MSG_RATECTL,
530 &an->an_node, "att %d sample_tt %d size %u sample rate %d %s current rate %d %s",
549 if (an->an_node.ni_flags & IEEE80211_NODE_HT)
551 ath_rate_pick_seed_rate_ht(sc, an, frameLen);
554 ath_rate_pick_seed_rate_legacy(sc, an, frameLen);
557 IEEE80211_NOTE(an->an_node.ni_vap,
558 IEEE80211_MSG_RATECTL, &an->an_node,
563 IEEE80211_NOTE(an->an_node.ni_vap,
564 IEEE80211_MSG_RATECTL, &an->an_node,
568 } else if ((! (an->an_node.ni_flags & IEEE80211_NODE_HT)) &&
571 IEEE80211_NOTE(an->an_node.ni_vap,
572 IEEE80211_MSG_RATECTL, &an->an_node,
577 } else if ((an->an_node.ni_flags & IEEE80211_NODE_HT)) {
593 IEEE80211_NOTE(an->an_node.ni_vap,
594 IEEE80211_MSG_RATECTL, &an->an_node,
606 IEEE80211_NOTE(an->an_node.ni_vap,
608 &an->an_node,
627 an->an_node.ni_txrate = (rt->info[best_rix].phy == IEEE80211_T_HT) ? MCS(best_rix) : DOT11RATE(best_rix);
664 ath_rate_getxtxrates(struct ath_softc *sc, struct ath_node *an,
667 struct sample_node *sn = ATH_NODE_SAMPLE(an);
687 ath_rate_setupxtxdesc(struct ath_softc *sc, struct ath_node *an,
690 struct sample_node *sn = ATH_NODE_SAMPLE(an);
712 update_stats(struct ath_softc *sc, struct ath_node *an,
721 struct sample_node *sn = ATH_NODE_SAMPLE(an);
729 int is_ht40 = (an->an_node.ni_chw == 40);
826 IEEE80211_NOTE(an->an_node.ni_vap, IEEE80211_MSG_RATECTL,
827 &an->an_node,
851 ath_rate_tx_complete(struct ath_softc *sc, struct ath_node *an,
857 struct sample_node *sn = ATH_NODE_SAMPLE(an);
876 IEEE80211_NOTE(an->an_node.ni_vap, IEEE80211_MSG_RATECTL,
877 &an->an_node,
900 IEEE80211_NOTE(an->an_node.ni_vap, IEEE80211_MSG_RATECTL,
901 &an->an_node, "%s: size %d (%d bytes) %s rate/short/long %d %s/%d/%d nframes/nbad [%d/%d]",
908 update_stats(sc, an, frame_size,
924 IEEE80211_NOTE(an->an_node.ni_vap, IEEE80211_MSG_RATECTL,
925 &an->an_node,
958 update_stats(sc, an, frame_size,
970 update_stats(sc, an, frame_size,
982 update_stats(sc, an, frame_size,
994 update_stats(sc, an, frame_size,
1007 ath_rate_newassoc(struct ath_softc *sc, struct ath_node *an, int isnew)
1010 ath_rate_ctl_reset(sc, &an->an_node);
1037 struct ath_node *an = ATH_NODE(ni);
1038 struct sample_node *sn = ATH_NODE_SAMPLE(an);
1167 ath_rate_fetch_node_stats(struct ath_softc *sc, struct ath_node *an,
1170 struct sample_node *sn = ATH_NODE_SAMPLE(an);
1177 ATH_NODE_LOCK_ASSERT(an);