madwifi: fix rx for pure wds interfaces
[openwrt/svn-archive/archive.git] / package / madwifi / patches / 352-ani_fix.patch
index aff0d4a42810e8745a1c4f93b823ea4fb07fc81c..af00f5e850b2e32e57f22aae4b0ed53f06bc7ab0 100644 (file)
@@ -1,6 +1,6 @@
 --- a/ath/if_ath.c
 +++ b/ath/if_ath.c
-@@ -1014,9 +1014,7 @@
+@@ -1014,9 +1014,7 @@ ath_attach(u_int16_t devid, struct net_d
         */
        sc->sc_hasveol = ath_hal_hasveol(ah);
  
@@ -11,7 +11,7 @@
        sc->sc_hasintmit = ath_hal_hasintmit(ah);
  
        /* get mac address from hardware */
-@@ -1144,6 +1142,11 @@
+@@ -1144,6 +1142,11 @@ ath_attach(u_int16_t devid, struct net_d
        sc->sc_rp_lasttsf       = 0;
        sc->sc_last_tsf         = 0;
  
        return 0;
  bad3:
        ieee80211_ifdetach(ic);
-@@ -2351,16 +2354,6 @@
-               }
-               if (status & HAL_INT_MIB) {
-                       sc->sc_stats.ast_mib++;
--                      /* When the card receives lots of PHY errors, the MIB
--                       * interrupt will fire at a very rapid rate. We will use
--                       * a timer to enforce at least 1 jiffy delay between
--                       * MIB interrupts. This should be unproblematic, since
--                       * the hardware will continue to update the counters in 
--                       * the mean time. */
--                      sc->sc_imask &= ~HAL_INT_MIB;
--                      ath_hal_intrset(ah, sc->sc_imask);
--                      mod_timer(&sc->sc_mib_enable, jiffies + 1);
--
-                       /* Let the HAL handle the event. */
-                       ath_hal_mibevent(ah, &sc->sc_halstats);
-               }
-@@ -2430,6 +2423,43 @@
+@@ -2428,6 +2431,43 @@ ath_chan2flags(struct ieee80211_channel 
        return flags;
  }
  
@@ -84,7 +67,7 @@
  /*
   * Context: process context
   */
-@@ -2495,8 +2525,7 @@
+@@ -2493,8 +2533,7 @@ ath_init(struct net_device *dev)
        if (sc->sc_softled)
                ath_hal_gpioCfgOutput(ah, sc->sc_ledpin);
  
@@ -94,7 +77,7 @@
  
        /*
         * This is needed only to setup initial state
-@@ -2532,7 +2561,7 @@
+@@ -2530,7 +2569,7 @@ ath_init(struct net_device *dev)
         * Enable MIB interrupts when there are hardware phy counters.
         * Note we only do this (at the moment) for station mode.
         */
                sc->sc_imask |= HAL_INT_MIB;
        ath_hal_intrset(ah, sc->sc_imask);
  
-@@ -2789,9 +2818,7 @@
+@@ -2787,9 +2826,7 @@ ath_reset(struct net_device *dev)
                EPRINTF(sc, "Unable to reset hardware: '%s' (HAL status %u)\n",
                        ath_get_hal_status_desc(status), status);
  
        ath_update_txpow(sc);           /* update tx power state */
        ath_radar_update(sc);
        ath_setdefantenna(sc, sc->sc_defant);
-@@ -4173,6 +4200,8 @@
+@@ -4174,6 +4211,8 @@ ath_calcrxfilter(struct ath_softc *sc)
        if (sc->sc_nmonvaps > 0)
                rfilt |= (HAL_RX_FILTER_CONTROL | HAL_RX_FILTER_BEACON |
                          HAL_RX_FILTER_PROBEREQ | HAL_RX_FILTER_PROM);
        if (sc->sc_curchan.privFlags & CHANNEL_DFS)
                rfilt |= (HAL_RX_FILTER_PHYERR | HAL_RX_FILTER_PHYRADAR);
        return rfilt;
-@@ -6523,9 +6552,6 @@
+@@ -6524,9 +6563,6 @@ process_rx_again:
                        rs->rs_rssi = 0;
  
                len = rs->rs_datalen;
  
                if (rs->rs_more) {
                        /*
-@@ -8877,9 +8903,7 @@
+@@ -8874,9 +8910,7 @@ ath_chan_set(struct ath_softc *sc, struc
                if (sc->sc_softled)
                        ath_hal_gpioCfgOutput(ah, sc->sc_ledpin);
  
                sc->sc_curchan = hchan;
                ath_update_txpow(sc);           /* update tx power state */
                ath_radar_update(sc);
-@@ -10656,9 +10680,54 @@
+@@ -10653,9 +10687,54 @@ enum {
        ATH_RP_IGNORED          = 24,
        ATH_RADAR_IGNORED       = 25,
        ATH_MAXVAPS             = 26,
  ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl, write, filp, buffer, lenp, ppos)
  {
        struct ath_softc *sc = ctl->extra1;
-@@ -10844,6 +10913,11 @@
+@@ -10841,6 +10920,11 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl
                        case ATH_RADAR_IGNORED:
                                sc->sc_radar_ignored = val;
                                break;
                        default:
                                ret = -EINVAL;
                                break;
-@@ -10910,6 +10984,11 @@
+@@ -10907,6 +10991,11 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl
                case ATH_RADAR_IGNORED:
                        val = sc->sc_radar_ignored;
                        break;
                default:
                        ret = -EINVAL;
                        break;
-@@ -11087,6 +11166,24 @@
+@@ -11084,6 +11173,24 @@ static const ctl_table ath_sysctl_templa
          .proc_handler = ath_sysctl_halparam,
          .extra2       = (void *)ATH_RADAR_IGNORED,
        },
  
 --- a/ath/if_athvar.h
 +++ b/ath/if_athvar.h
-@@ -693,6 +693,10 @@
+@@ -693,6 +693,10 @@ struct ath_softc {
        unsigned int sc_txcont_power; /* Continuous transmit power in 0.5dBm units */
        unsigned int sc_txcont_rate;  /* Continuous transmit rate in Mbps */
  
        const HAL_RATE_TABLE *sc_currates;      /* current rate table */
 --- a/ath/if_ath_hal.h
 +++ b/ath/if_ath_hal.h
-@@ -67,14 +67,14 @@
+@@ -67,14 +67,14 @@ static inline HAL_POWER_MODE ath_hal_get
  
  static inline HAL_BOOL ath_hal_getdiagstate(struct ath_hal *ah, int request,
                                            const void *args, u_int32_t argsize,