PERFORCE change 68799 for review
Sam Leffler
sam at FreeBSD.org
Tue Jan 11 19:53:30 PST 2005
http://perforce.freebsd.org/chv.cgi?CH=68799
Change 68799 by sam at sam_ebb on 2005/01/12 03:53:12
cleanup ibss merge handling: we don't need to do anything
specifically to reprogram the beacon timers, it all happens
automatically when the state machine is clocked; just move
the call to stop tx dma on the beacon queue to the right
place
Affected files ...
.. //depot/projects/wifi/sys/dev/ath/if_ath.c#66 edit
Differences ...
==== //depot/projects/wifi/sys/dev/ath/if_ath.c#66 (text+ko) ====
@@ -2795,21 +2795,13 @@
* frame before attempting the merge. The 802.11 spec
* says the station should change it's bssid to match
* the oldest station with the same ssid, where oldest
- * is determined by the tsf.
+ * is determined by the tsf. Note that hardware
+ * reconfiguration happens through callback to
+ * ath_newstate as the state machine will be go
+ * from RUN -> RUN when this happens.
*/
- if (le64toh(ni->ni_tstamp.tsf) >= tsf &&
- ieee80211_ibss_merge(ic, ni)) {
- /*
- * XXX rather than handle this here it's
- * probably better to do it at the 802.11
- * layer through the state machine so,
- * we can switch channel, etc.
- */
- /* XXX adopt beacon interval and ATIM window */
- ath_hal_setassocid(ah, ic->ic_bss->ni_bssid, 0);
- ath_hal_stoptxdma(ah, sc->sc_bhalq);
- ath_beacon_config(sc);
- }
+ if (le64toh(ni->ni_tstamp.tsf) >= tsf)
+ (void) ieee80211_ibss_merge(ic, ni);
}
break;
}
@@ -4338,6 +4330,14 @@
*/
if (ic->ic_opmode == IEEE80211_M_HOSTAP ||
ic->ic_opmode == IEEE80211_M_IBSS) {
+ /*
+ * Stop any previous beacon DMA. This may be
+ * necessary, for example, when an ibss merge
+ * causes reconfiguration; there will be a state
+ * transition from RUN->RUN that means we may
+ * be called with beacon transmission active.
+ */
+ ath_hal_stoptxdma(ah, sc->sc_bhalq);
error = ath_beacon_alloc(sc, ni);
if (error != 0)
goto bad;
More information about the p4-projects
mailing list