Date: Wed, 13 Feb 2008 11:23:05 GMT From: Sepherosa Ziehau <sephe@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 135302 for review Message-ID: <200802131123.m1DBN5AF059216@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=135302 Change 135302 by sephe@sephe_zealot:sam_wifi on 2008/02/13 11:22:18 Re-import these two files Affected files ... .. //depot/projects/wifi/sys/net80211/ieee80211_amrr.c#7 edit .. //depot/projects/wifi/sys/net80211/ieee80211_amrr.h#4 edit Differences ... ==== //depot/projects/wifi/sys/net80211/ieee80211_amrr.c#7 (text+ko) ==== @@ -51,22 +51,17 @@ ((amn)->amn_retrycnt > (amn)->amn_txcnt / 3) #define is_enough(amn) \ ((amn)->amn_txcnt > 10) +#define is_min_rate(ni) \ + ((ni)->ni_txrate == 0) +#define is_max_rate(ni) \ + ((ni)->ni_txrate == (ni)->ni_rates.rs_nrates - 1) +#define increase_rate(ni) \ + ((ni)->ni_txrate++) +#define decrease_rate(ni) \ + ((ni)->ni_txrate--) #define reset_cnt(amn) \ do { (amn)->amn_txcnt = (amn)->amn_retrycnt = 0; } while (0) -static __inline void -increase_rate(struct ieee80211_amrr *amrr, struct ieee80211_node *ni) -{ - int rix = amrr->amrr_rixmap[ni->ni_txrate]; - ni->ni_txrate = ni->ni_rates.rs_rates[rix+1] & IEEE80211_RATE_VAL; -} -static __inline void -decrease_rate(struct ieee80211_amrr *amrr, struct ieee80211_node *ni) -{ - int rix = amrr->amrr_rixmap[ni->ni_txrate]; - ni->ni_txrate = ni->ni_rates.rs_rates[rix-1] & IEEE80211_RATE_VAL; -} - void ieee80211_amrr_init(struct ieee80211_amrr *amrr, struct ieee80211com *ic, int amin, int amax) @@ -78,19 +73,6 @@ } void -ieee80211_amrr_setrates(struct ieee80211_amrr *amrr, - const struct ieee80211_rateset *rs) -{ - int i; - - memset(amrr->amrr_rixmap, 0xff, sizeof(amrr->amrr_rixmap)); - for (i = 0; i < rs->rs_nrates; i++) - amrr->amrr_rixmap[rs->rs_rates[i] & IEEE80211_RATE_VAL] = i; - amrr->amrr_minrate = rs->rs_rates[0] & IEEE80211_RATE_VAL; - amrr->amrr_maxrate = rs->rs_rates[rs->rs_nrates-1] & IEEE80211_RATE_VAL; -} - -void ieee80211_amrr_node_init(struct ieee80211_amrr *amrr, struct ieee80211_amrr_node *amn) { @@ -112,20 +94,23 @@ if (is_success(amn) && is_enough(amn)) { amn->amn_success++; if (amn->amn_success >= amn->amn_success_threshold && - ni->ni_txrate != amrr->amrr_maxrate) { + !is_max_rate(ni)) { amn->amn_recovery = 1; amn->amn_success = 0; - increase_rate(amrr, ni); + increase_rate(ni); IEEE80211_DPRINTF(amrr->amrr_ic, IEEE80211_MSG_RATECTL, - "AMRR increasing rate %d (txcnt=%d retrycnt=%d)\n", - ni->ni_txrate, amn->amn_txcnt, amn->amn_retrycnt); + "AMRR increasing rate %d (txcnt=%d " + "retrycnt=%d)\n", + ni->ni_rates.rs_rates[ni->ni_txrate] & + IEEE80211_RATE_VAL, + amn->amn_txcnt, amn->amn_retrycnt); need_change = 1; } else { amn->amn_recovery = 0; } } else if (is_failure(amn)) { amn->amn_success = 0; - if (ni->ni_txrate != amrr->amrr_minrate) { + if (!is_min_rate(ni)) { if (amn->amn_recovery) { amn->amn_success_threshold *= 2; if (amn->amn_success_threshold > @@ -136,10 +121,13 @@ amn->amn_success_threshold = amrr->amrr_min_success_threshold; } - decrease_rate(amrr, ni); + decrease_rate(ni); IEEE80211_DPRINTF(amrr->amrr_ic, IEEE80211_MSG_RATECTL, - "AMRR decreasing rate %d (txcnt=%d retrycnt=%d)\n", - ni->ni_txrate, amn->amn_txcnt, amn->amn_retrycnt); + "AMRR decreasing rate %d (txcnt=%d " + "retrycnt=%d)\n", + ni->ni_rates.rs_rates[ni->ni_txrate] & + IEEE80211_RATE_VAL, + amn->amn_txcnt, amn->amn_retrycnt); need_change = 1; } amn->amn_recovery = 0; ==== //depot/projects/wifi/sys/net80211/ieee80211_amrr.h#4 (text+ko) ==== @@ -37,8 +37,6 @@ struct ieee80211_amrr { u_int amrr_min_success_threshold; u_int amrr_max_success_threshold; - uint8_t amrr_rixmap[256]; /* IEEE to h/w rate table ix */ - uint8_t amrr_minrate, amrr_maxrate; struct ieee80211com *amrr_ic; }; @@ -58,8 +56,6 @@ void ieee80211_amrr_init(struct ieee80211_amrr *, struct ieee80211com *ic, int, int); -void ieee80211_amrr_setrates(struct ieee80211_amrr *, - const struct ieee80211_rateset *); void ieee80211_amrr_node_init(struct ieee80211_amrr *, struct ieee80211_amrr_node *); void ieee80211_amrr_choose(struct ieee80211_amrr *, struct ieee80211_node *,
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200802131123.m1DBN5AF059216>