[Madwifi-cvs] revision 1751 committed
Status: Beta
Brought to you by:
otaku
From: Bell K. <svn...@ma...> - 2006-10-13 16:43:00
|
Project : madwifi Revision : 1751 Author : bell_kin (Bell Kin) Date : 2006-10-13 18:42:41 +0200 (Fri, 13 Oct 2006) Log Message : -stop irq in vap creation to prevent crash at startup #575 -fix wds beacon setup #575 -fix wds vap channel wrong Affected Files: * trunk/ath/if_ath.c updated * trunk/net80211/ieee80211_wireless.c updated Modified: trunk/ath/if_ath.c =================================================================== --- trunk/ath/if_ath.c 2006-10-11 06:04:22 UTC (rev 1750) +++ trunk/ath/if_ath.c 2006-10-13 16:42:41 UTC (rev 1751) @@ -981,11 +981,18 @@ int opmode, int flags, struct net_device *mdev) { struct ath_softc *sc = ic->ic_dev->priv; + struct ath_hal *ah = sc->sc_ah; struct net_device *dev; struct ath_vap *avp; struct ieee80211vap *vap; int ic_opmode; + if (ic->ic_dev->flags & IFF_RUNNING) { + /* needs to disable hardware too */ + ath_hal_intrset(ah, 0); /* disable interrupts */ + ath_draintxq(sc); /* stop xmit side */ + ath_stoprecv(sc); /* stop recv side */ + } /* XXX ic unlocked and race against add */ switch (opmode) { case IEEE80211_M_STA: /* ap+sta for repeater application */ @@ -1178,6 +1185,15 @@ } } #endif + if (ic->ic_dev->flags & IFF_RUNNING) { + /* restart hardware */ + if (ath_startrecv(sc) != 0) /* restart recv */ + printk("%s: %s: unable to start recv logic\n", + dev->name, __func__); + if (sc->sc_beacons) + ath_beacon_config(sc, NULL); /* restart beacons */ + ath_hal_intrset(ah, sc->sc_imask); + } return vap; } @@ -8021,7 +8037,7 @@ /* * Configure the beacon and sleep timers. */ - if (!sc->sc_beacons) { + if (!sc->sc_beacons && vap->iv_opmode!=IEEE80211_M_WDS) { ath_beacon_config(sc, vap); sc->sc_beacons = 1; } Modified: trunk/net80211/ieee80211_wireless.c =================================================================== --- trunk/net80211/ieee80211_wireless.c 2006-10-11 06:04:22 UTC (rev 1750) +++ trunk/net80211/ieee80211_wireless.c 2006-10-13 16:42:41 UTC (rev 1751) @@ -784,8 +784,8 @@ /* * Monitor and wds modes can switch directly. */ + ic->ic_curchan = vap->iv_des_chan; if (vap->iv_state == IEEE80211_S_RUN) { - ic->ic_curchan = vap->iv_des_chan; ic->ic_set_channel(ic); } } else { |