PERFORCE change 135302 for review
Sepherosa Ziehau
sephe at FreeBSD.org
Wed Feb 13 03:23:06 PST 2008
http://perforce.freebsd.org/chv.cgi?CH=135302
Change 135302 by sephe at 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 *,
More information about the p4-projects
mailing list