Revert r10553 "fix channel change bugs," causes kernel oopses. Closes #3213.
authorAndy Boyett <agb@openwrt.org>
Thu, 20 Mar 2008 01:57:27 +0000 (01:57 +0000)
committerAndy Boyett <agb@openwrt.org>
Thu, 20 Mar 2008 01:57:27 +0000 (01:57 +0000)
SVN-Revision: 10628

package/madwifi/patches/332-reset_beacons.patch

index caf3cc14f6d4696e71a8715dcf52ee124fc9f6a4..e34746ee6a1bcbea6266e7c6b8518d7fcdbe6cb6 100644 (file)
@@ -1,8 +1,8 @@
 Index: madwifi-trunk-r3314/ath/if_ath.c
 ===================================================================
---- madwifi-trunk-r3314.orig/ath/if_ath.c      2008-02-26 20:23:58.477203701 +0100
-+++ madwifi-trunk-r3314/ath/if_ath.c   2008-02-26 20:23:59.241247240 +0100
-@@ -1594,6 +1594,16 @@
+--- madwifi-trunk-r3314.orig/ath/if_ath.c      2008-02-20 22:22:50.203268987 +0100
++++ madwifi-trunk-r3314/ath/if_ath.c   2008-02-20 22:23:25.745294410 +0100
+@@ -1592,6 +1592,16 @@
        ath_init(dev);
  }
  
@@ -19,16 +19,16 @@ Index: madwifi-trunk-r3314/ath/if_ath.c
  /* Channel Availability Check is running, or a channel has already found to be 
   * unavailable. */
  static int
-@@ -2476,7 +2486,7 @@
+@@ -2474,7 +2484,7 @@
         */
        sc->sc_curchan.channel = ic->ic_curchan->ic_freq;
        sc->sc_curchan.channelFlags = ath_chan2flags(ic->ic_curchan);
 -      if (!ath_hal_reset(ah, sc->sc_opmode, &sc->sc_curchan, AH_FALSE, &status)) {
-+      if (!ath_hw_reset(ah, sc->sc_opmode, &sc->sc_curchan, AH_TRUE, &status)) {
++      if (!ath_hw_reset(ah, sc->sc_opmode, &sc->sc_curchan, AH_FALSE, &status)) {
                EPRINTF(sc, "unable to reset hardware: '%s' (HAL status %u) "
                        "(freq %u flags 0x%x)\n", 
                        ath_get_hal_status_desc(status), status,
-@@ -2775,7 +2785,7 @@
+@@ -2773,7 +2783,7 @@
        ath_draintxq(sc);               /* stop xmit side */
        ath_stoprecv(sc);               /* stop recv side */
        /* NB: indicate channel change so we do a full reset */
@@ -37,17 +37,18 @@ Index: madwifi-trunk-r3314/ath/if_ath.c
                EPRINTF(sc, "Unable to reset hardware: '%s' (HAL status %u)\n",
                        ath_get_hal_status_desc(status), status);
  
-@@ -8848,8 +8858,7 @@
+@@ -8848,8 +8858,8 @@
                 * needed to do the reset with chanchange = AH_FALSE in order
                 * to receive traffic when peforming high velocity channel
                 * changes. */
 -              if (!ath_hal_reset(ah, sc->sc_opmode, &hchan, AH_TRUE, &status)   ||
 -                  !ath_hal_reset(ah, sc->sc_opmode, &hchan, AH_FALSE, &status)) {
-+              if (!ath_hw_reset(ah, sc->sc_opmode, &hchan, AH_TRUE, &status)) {
++              if (!ath_hw_reset(ah, sc->sc_opmode, &hchan, AH_TRUE, &status)   ||
++                  !ath_hw_reset(ah, sc->sc_opmode, &hchan, AH_FALSE, &status)) {
                        EPRINTF(sc, "Unable to reset channel %u (%u MHz) "
                                "flags 0x%x '%s' (HAL status %u)\n",
                                ieee80211_chan2ieee(ic, chan), chan->ic_freq,
-@@ -8905,7 +8914,7 @@
+@@ -8905,7 +8915,7 @@
                 * re configure beacons when it is a turbo mode switch.
                 * HW seems to turn off beacons during turbo mode switch.
                 */
@@ -56,7 +57,7 @@ Index: madwifi-trunk-r3314/ath/if_ath.c
                        ath_beacon_config(sc, NULL);
                /*
                 * Re-enable interrupts.
-@@ -11456,7 +11465,7 @@
+@@ -11455,7 +11465,7 @@
                ieee80211_cancel_scan(vap);     /* anything current */
                ieee80211_wme_updateparams(vap);
                /*  reset the WNIC */