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