huge madwifi update (work in progress, disabled by default, compiles but breaks at...
[openwrt.git] / package / madwifi / patches-r3776 / 306-queue.patch
1 Index: madwifi-trunk-r3776/ath/if_ath.c
2 ===================================================================
3 --- madwifi-trunk-r3776.orig/ath/if_ath.c       2008-07-17 02:00:09.000000000 +0200
4 +++ madwifi-trunk-r3776/ath/if_ath.c    2008-07-17 02:09:38.000000000 +0200
5 @@ -8447,8 +8447,6 @@
6         ath_hal_intrset(sc->sc_ah, sc->sc_imask);
7         local_irq_restore(flags);
8  
9 -       netif_wake_queue(dev);
10 -
11         if (sc->sc_softled)
12                 ath_led_event(sc, ATH_LED_TX);
13  }
14 @@ -8504,8 +8502,6 @@
15         ath_hal_intrset(sc->sc_ah, sc->sc_imask);
16         local_irq_restore(flags);
17  
18 -       netif_wake_queue(dev);
19 -
20         if (sc->sc_softled)
21                 ath_led_event(sc, ATH_LED_TX);
22  }
23 @@ -8536,7 +8532,9 @@
24                                 STAILQ_FIRST(&sc->sc_cabq->axq_q) ? "not setup" : "empty");
25                 }
26         }
27 -       netif_wake_queue(dev);
28 +
29 +       if (ath_get_buffers_available(sc) > ATH_TXBUF_MGT_RESERVED)
30 +               netif_wake_queue(dev);
31  
32         if (sc->sc_softled)
33                 ath_led_event(sc, ATH_LED_TX);
34 Index: madwifi-trunk-r3776/net80211/ieee80211_input.c
35 ===================================================================
36 --- madwifi-trunk-r3776.orig/net80211/ieee80211_input.c 2008-07-17 02:04:20.000000000 +0200
37 +++ madwifi-trunk-r3776/net80211/ieee80211_input.c      2008-07-17 02:05:45.000000000 +0200
38 @@ -1116,7 +1116,7 @@
39             (vap->iv_flags & IEEE80211_F_NOBRIDGE) == 0) {
40                 struct sk_buff *skb1 = NULL;
41  
42 -               if (ETHER_IS_MULTICAST(eh->ether_dhost)) {
43 +               if (ETHER_IS_MULTICAST(eh->ether_dhost) && !netif_queue_stopped(dev)) {
44                         /* Create a SKB for the BSS to send out. */
45                         skb1 = skb_copy(skb, GFP_ATOMIC);
46                         if (skb1)