PERFORCE change 65354 for review

Sam Leffler sam at FreeBSD.org
Wed Nov 17 11:26:05 PST 2004


http://perforce.freebsd.org/chv.cgi?CH=65354

Change 65354 by sam at sam_ebb on 2004/11/17 19:25:23

	o fixup for node table rewrite
	o use ieee80211_iterate_nodes instead of hand-rolled code to
	  scan the station table

Affected files ...

.. //depot/projects/wifi/sys/dev/ath/ath_rate/amrr/amrr.c#2 edit
.. //depot/projects/wifi/sys/dev/ath/ath_rate/onoe/onoe.c#2 edit

Differences ...

==== //depot/projects/wifi/sys/dev/ath/ath_rate/amrr/amrr.c#2 (text+ko) ====

@@ -330,6 +330,12 @@
 #undef RATE
 }
 
+static void
+ath_rate_cb(void *arg, struct ieee80211_node *ni)
+{
+	ath_rate_update(ni->ni_ic->ic_ifp->if_softc, ni, (int) arg);
+}
+
 /*
  * Reset the rate control state for each 802.11 state transition.
  */
@@ -362,8 +368,8 @@
 		 * For any other operating mode we want to reset the
 		 * tx rate state of each node.
 		 */
-		TAILQ_FOREACH(ni, &ic->ic_node, ni_list)
-			ath_rate_update(sc, ni, 0);	/* use lowest rate */
+		if (ic->ic_sta != NULL)
+			ieee80211_iterate_nodes(ic->ic_sta, ath_rate_cb, 0);
 		ath_rate_update(sc, ic->ic_bss, 0);
 	}
 	if (ic->ic_fixed_rate == -1 && state == IEEE80211_S_RUN) {
@@ -468,7 +474,7 @@
 
 		if (ic->ic_opmode == IEEE80211_M_STA)
 			ath_rate_ctl(sc, ic->ic_bss);	/* NB: no reference */
-		else
+		else if (ic->ic_sta != NULL)
 			ieee80211_iterate_nodes(ic, ath_rate_ctl, sc);
 	}
 	interval = ath_rateinterval;

==== //depot/projects/wifi/sys/dev/ath/ath_rate/onoe/onoe.c#2 (text+ko) ====

@@ -319,6 +319,12 @@
 #undef RATE
 }
 
+static void
+ath_rate_cb(void *arg, struct ieee80211_node *ni)
+{
+	ath_rate_update(ni->ni_ic->ic_ifp->if_softc, ni, (int) arg);
+}
+
 /*
  * Reset the rate control state for each 802.11 state transition.
  */
@@ -351,8 +357,8 @@
 		 * For any other operating mode we want to reset the
 		 * tx rate state of each node.
 		 */
-		TAILQ_FOREACH(ni, &ic->ic_node, ni_list)
-			ath_rate_update(sc, ni, 0);	/* use lowest rate */
+		if (ic->ic_sta != NULL)
+			ieee80211_iterate_nodes(ic->ic_sta, ath_rate_cb, 0);
 		ath_rate_update(sc, ic->ic_bss, 0);
 	}
 	if (ic->ic_fixed_rate == -1 && state == IEEE80211_S_RUN) {
@@ -454,8 +460,8 @@
 
 		if (ic->ic_opmode == IEEE80211_M_STA)
 			ath_rate_ctl(sc, ic->ic_bss);	/* NB: no reference */
-		else
-			ieee80211_iterate_nodes(ic, ath_rate_ctl, sc);
+		else if (ic->ic_sta != NULL)
+			ieee80211_iterate_nodes(ic->ic_sta, ath_rate_ctl, sc);
 	}
 	interval = ath_rateinterval;
 	if (ic->ic_opmode == IEEE80211_M_STA)


More information about the p4-projects mailing list