Changeset 10296


Ignore:
Timestamp:
2008-01-28T20:35:38+01:00 (10 years ago)
Author:
nbd
Message:

more queue handling stuff

Location:
trunk/package/madwifi/patches
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/madwifi/patches/300-napi_polling.patch

    r10294 r10296  
    22=================================================================== 
    33--- madwifi-trunk-r3280.orig/ath/if_ath.c       2008-01-28 17:29:22.989895792 +0100 
    4 +++ madwifi-trunk-r3280/ath/if_ath.c    2008-01-28 17:46:59.249785581 +0100 
     4+++ madwifi-trunk-r3280/ath/if_ath.c    2008-01-28 20:00:09.319637124 +0100 
    55@@ -184,7 +184,7 @@ 
    66        struct sk_buff *, int, int, u_int64_t); 
     
    173173 } 
    174174  
    175 @@ -8268,11 +8318,22 @@ 
     175@@ -8267,12 +8317,24 @@ 
     176 { 
    176177        struct net_device *dev = (struct net_device *)data; 
    177178        struct ath_softc *sc = dev->priv; 
     179+       unsigned long flags; 
    178180  
    179181+process_tx_again: 
     
    183185                ath_tx_processq(sc, sc->sc_cabq); 
    184186  
    185 +       ATH_DISABLE_INTR(); 
     187+       local_irq_save(flags); 
    186188+       if (sc->sc_isr & HAL_INT_TX) { 
    187189+               sc->sc_isr &= ~HAL_INT_TX; 
    188 +               ATH_ENABLE_INTR(); 
     190+               local_irq_restore(flags); 
    189191+               goto process_tx_again; 
    190192+       } 
    191193+       sc->sc_imask |= HAL_INT_TX; 
    192194+       ath_hal_intrset(sc->sc_ah, sc->sc_imask); 
    193 +       ATH_ENABLE_INTR(); 
     195+       local_irq_restore(flags); 
    194196+ 
    195197        netif_wake_queue(dev); 
    196198  
    197199        if (sc->sc_softled) 
    198 @@ -8289,6 +8350,7 @@ 
     200@@ -8288,7 +8350,9 @@ 
     201 { 
    199202        struct net_device *dev = (struct net_device *)data; 
    200203        struct ath_softc *sc = dev->priv; 
     204+       unsigned long flags; 
    201205  
    202206+process_tx_again: 
     
    204208         * Process each active queue. 
    205209         */ 
    206 @@ -8309,6 +8371,16 @@ 
     210@@ -8309,6 +8373,16 @@ 
    207211        if (sc->sc_uapsdq && txqactive(sc->sc_ah, sc->sc_uapsdq->axq_qnum)) 
    208212                ath_tx_processq(sc, sc->sc_uapsdq); 
    209213  
    210 +       ATH_DISABLE_INTR(); 
     214+       local_irq_save(flags); 
    211215+       if (sc->sc_isr & HAL_INT_TX) { 
    212216+               sc->sc_isr &= ~HAL_INT_TX; 
    213 +               ATH_ENABLE_INTR(); 
     217+               local_irq_restore(flags); 
    214218+               goto process_tx_again; 
    215219+       } 
    216220+       sc->sc_imask |= HAL_INT_TX; 
    217221+       ath_hal_intrset(sc->sc_ah, sc->sc_imask); 
    218 +       ATH_ENABLE_INTR(); 
     222+       local_irq_restore(flags); 
    219223+ 
    220224        netif_wake_queue(dev); 
    221225  
    222226        if (sc->sc_softled) 
    223 @@ -8327,10 +8399,21 @@ 
     227@@ -8324,13 +8398,25 @@ 
     228        struct net_device *dev = (struct net_device *)data; 
     229        struct ath_softc *sc = dev->priv; 
     230        unsigned int i; 
     231+       unsigned long flags; 
    224232  
    225233        /* Process each active queue. This includes sc_cabq, sc_xrtq and 
     
    230238                        ath_tx_processq(sc, &sc->sc_txq[i]); 
    231239  
    232 +       ATH_DISABLE_INTR(); 
     240+       local_irq_save(flags); 
    233241+       if (sc->sc_isr & HAL_INT_TX) { 
    234242+               sc->sc_isr &= ~HAL_INT_TX; 
    235 +               ATH_ENABLE_INTR(); 
     243+               local_irq_restore(flags); 
    236244+               goto process_tx_again; 
    237245+       } 
    238246+       sc->sc_imask |= HAL_INT_TX; 
    239247+       ath_hal_intrset(sc->sc_ah, sc->sc_imask); 
    240 +       ATH_ENABLE_INTR(); 
     248+       local_irq_restore(flags); 
    241249+ 
    242250        netif_wake_queue(dev); 
    243251  
    244252        if (sc->sc_softled) 
    245 @@ -8405,6 +8488,7 @@ 
     253@@ -8405,6 +8491,7 @@ 
    246254 ath_draintxq(struct ath_softc *sc) 
    247255 { 
     
    251259  
    252260        /* XXX return value */ 
    253 @@ -10261,9 +10345,9 @@ 
     261@@ -10261,9 +10348,9 @@ 
    254262        dev->mtu = mtu; 
    255263        if ((dev->flags & IFF_RUNNING) && !sc->sc_invalid) { 
     
    306314=================================================================== 
    307315--- madwifi-trunk-r3280.orig/net80211/ieee80211_input.c 2008-01-28 17:29:23.005896702 +0100 
    308 +++ madwifi-trunk-r3280/net80211/ieee80211_input.c      2008-01-28 17:46:28.108010900 +0100 
     316+++ madwifi-trunk-r3280/net80211/ieee80211_input.c      2008-01-28 19:52:50.586635164 +0100 
    309317@@ -1197,7 +1197,7 @@ 
    310318                        /* attach vlan tag */ 
Note: See TracChangeset for help on using the changeset viewer.