Changeset 11313


Ignore:
Timestamp:
2008-06-01T02:11:32+02:00 (9 years ago)
Author:
nbd
Message:

clean up performance patch, add some head/tailroom calculation fixes (thx, benoit)
fix some unused variables

Location:
trunk/package/madwifi/patches
Files:
2 edited

Legend:

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

    r10550 r11313  
    364364  
    365365        if (sc->sc_softled) 
    366 @@ -8423,6 +8580,7 @@ 
    367  ath_draintxq(struct ath_softc *sc) 
    368  { 
    369         struct ath_hal *ah = sc->sc_ah; 
    370 +       int npend = 0; 
    371         unsigned int i; 
    372   
    373         /* XXX return value */ 
    374366@@ -10281,9 +10439,9 @@ 
    375367        dev->mtu = mtu; 
  • trunk/package/madwifi/patches/342-performance.patch

    r10898 r11313  
    11Index: madwifi-trunk-r3314/ath/if_ath.c 
    22=================================================================== 
    3 --- madwifi-trunk-r3314.orig/ath/if_ath.c       2008-04-17 18:17:28.000000000 +0200 
    4 +++ madwifi-trunk-r3314/ath/if_ath.c    2008-04-17 18:17:28.000000000 +0200 
     3--- madwifi-trunk-r3314.orig/ath/if_ath.c       2008-06-01 02:04:25.000000000 +0200 
     4+++ madwifi-trunk-r3314/ath/if_ath.c    2008-06-01 02:04:25.000000000 +0200 
    55@@ -3237,7 +3237,6 @@ 
    66        struct ath_softc *sc = dev->priv; 
     
    4949Index: madwifi-trunk-r3314/net80211/ieee80211_output.c 
    5050=================================================================== 
    51 --- madwifi-trunk-r3314.orig/net80211/ieee80211_output.c        2008-04-17 18:17:27.000000000 +0200 
    52 +++ madwifi-trunk-r3314/net80211/ieee80211_output.c     2008-04-17 18:18:04.000000000 +0200 
     51--- madwifi-trunk-r3314.orig/net80211/ieee80211_output.c        2008-06-01 02:04:24.000000000 +0200 
     52+++ madwifi-trunk-r3314/net80211/ieee80211_output.c     2008-06-01 02:04:25.000000000 +0200 
    5353@@ -283,7 +283,7 @@ 
    5454         * normal vap. */ 
     
    6060                        memset(SKB_CB(skb1), 0, sizeof(struct ieee80211_cb)); 
    6161 #ifdef IEEE80211_DEBUG_REFCNT 
    62 @@ -615,100 +615,45 @@ 
    63                 skb = skb_unshare(skb, GFP_ATOMIC); 
    64         } 
    65   
    66 -#ifdef ATH_SUPERG_FF 
    67 -       if (isff) { 
     62@@ -566,7 +566,7 @@ 
     63        struct ieee80211_key *key, struct sk_buff *skb, int ismulticast) 
     64 { 
     65        /* XXX pre-calculate per node? */ 
     66-       int need_headroom = LLC_SNAPFRAMELEN + hdrsize + IEEE80211_ADDR_LEN; 
     67+       int need_headroom = LLC_SNAPFRAMELEN + hdrsize; 
     68        int need_tailroom = 0; 
     69 #ifdef ATH_SUPERG_FF 
     70        int isff = ATH_FF_MAGIC_PRESENT(skb); 
     71@@ -608,109 +608,56 @@ 
     72                                need_tailroom += cip->ic_miclen; 
     73        } 
     74  
     75-       if (skb_shared(skb)) { 
     76-               /* Take our own reference to the node in the clone */ 
     77-               ieee80211_ref_node(SKB_CB(skb)->ni); 
     78-               /* Unshare the node, decrementing users in the old skb */ 
     79-               skb = skb_unshare(skb, GFP_ATOMIC); 
     80+       need_headroom -= skb_headroom(skb); 
     81+       if (isff) 
     82+               need_tailroom -= skb_tailroom(skb2); 
     83+       else 
     84+               need_tailroom -= skb_tailroom(skb); 
     85+ 
     86+       if (need_headroom < 0) 
     87+               need_headroom = 0; 
     88+       if (need_tailroom < 0) 
     89+               need_tailroom = 0; 
     90+ 
     91+       if (skb_cloned(skb) || (need_headroom > 0) || 
     92+               (!isff && (need_tailroom > 0))) { 
     93+ 
     94+               if (pskb_expand_head(skb, need_headroom, need_tailroom, GFP_ATOMIC)) { 
     95+                       IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, 
     96+                               "%s: cannot expand storage (tail)\n", __func__); 
     97+                       goto error; 
     98+               } 
     99        } 
     100  
     101 #ifdef ATH_SUPERG_FF 
     102        if (isff) { 
    68103-               if (skb == NULL) { 
    69 +       if (skb_cloned(skb) || 
    70 +               (need_headroom > skb_headroom(skb)) || 
    71 +               (!isff && (need_tailroom > skb_tailroom(skb)))) { 
    72 + 
    73 +               if (pskb_expand_head(skb, need_headroom, need_tailroom, GFP_ATOMIC)) { 
    74                         IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, 
     104-                       IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, 
    75105-                               "%s: cannot unshare for encapsulation\n", 
    76106-                               __func__); 
    77 +                               "%s: cannot expand storage (tail)\n", __func__); 
    78                         vap->iv_stats.is_tx_nobuf++; 
     107-                       vap->iv_stats.is_tx_nobuf++; 
    79108-                       ieee80211_dev_kfree_skb(&skb2); 
    80109- 
    81 +                       ieee80211_dev_kfree_skb(&skb); 
    82                         return NULL; 
    83                 } 
    84 +       } 
     110-                       return NULL; 
     111-               } 
     112+               inter_headroom -= skb_headroom(skb2); 
     113+               if (inter_headroom < 0) 
     114+                       inter_headroom = 0; 
     115+               if ((skb_cloned(skb2) || 
     116+                       (inter_headroom > 0) || (need_tailroom > 0))) { 
    85117  
    86118-               /* first skb header */ 
     
    89121-                       skb = skb_realloc_headroom(skb, need_headroom); 
    90122-                       if (skb == NULL) { 
    91 -                               IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, 
     123+                       if (pskb_expand_head(skb2, inter_headroom, 
     124+                               need_tailroom, GFP_ATOMIC)) { 
     125                                IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, 
    92126-                                       "%s: cannot expand storage (head1)\n", 
    93127-                                       __func__); 
     
    100134-                       /* NB: cb[] area was copied, but not next ptr. must do that 
    101135-                        *     prior to return on success. */ 
    102 +#ifdef ATH_SUPERG_FF 
    103 +       if (isff) { 
    104 +               if (skb_shared(skb2)) { 
    105 +                       /* Take our own reference to the node in the clone */ 
    106 +                       ieee80211_ref_node(SKB_CB(skb2)->ni); 
    107 +                       /* Unshare the node, decrementing users in the old skb */ 
    108 +                       skb2 = skb_unshare(skb2, GFP_ATOMIC); 
    109                 } 
    110   
     136-               } 
     137- 
    111138-               /* second skb with header and tail adjustments possible */ 
    112139-               if (skb_tailroom(skb2) < need_tailroom) { 
     
    123150-                               /* this shouldn't happen, but don't send first ff either */ 
    124151-                               ieee80211_dev_kfree_skb(&skb); 
    125 -                       } 
     152+                                       "%s: cannot expand storage (tail)\n", __func__); 
     153+                               goto error; 
     154                        } 
    126155-               } else if (skb_headroom(skb2) < inter_headroom) { 
    127156-                       struct sk_buff *tmp = skb2; 
    128 +               if ((skb_cloned(skb2) || 
    129 +                       (inter_headroom > skb_headroom(skb2)) || 
    130 +                       (need_tailroom > skb_tailroom(skb2)))) { 
    131   
     157- 
    132158-                       skb2 = skb_realloc_headroom(skb2, inter_headroom); 
    133159-                       if (skb2 == NULL) { 
    134 +                       if (pskb_expand_head(skb2, inter_headroom, 
    135 +                               need_tailroom, GFP_ATOMIC)) { 
    136                                 IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, 
     160-                               IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, 
    137161-                                       "%s: cannot expand storage (head2)\n", 
    138162-                                       __func__); 
    139 +                                       "%s: cannot expand storage (tail)\n", __func__); 
    140                                 vap->iv_stats.is_tx_nobuf++; 
     163-                               vap->iv_stats.is_tx_nobuf++; 
    141164-                               /* this shouldn't happen, but don't send first ff either */ 
    142                                 ieee80211_dev_kfree_skb(&skb); 
     165-                               ieee80211_dev_kfree_skb(&skb); 
    143166-                               skb = NULL; 
    144167-                       } else 
    145168-                               ieee80211_skb_copy_noderef(tmp, skb); 
    146169-                       ieee80211_dev_kfree_skb(&tmp); 
    147 -               } 
     170                } 
    148171-               if (skb) { 
    149172-                       skb->next = skb2; 
    150 +                               ieee80211_dev_kfree_skb(&skb2); 
    151 +                               return NULL; 
    152 +                       } 
    153                 } 
     173-               } 
    154174-               return skb; 
    155175+               skb->next = skb2; 
     
    185205  
    186206        return skb; 
     207+ 
     208+error: 
     209+       vap->iv_stats.is_tx_nobuf++; 
     210+       ieee80211_dev_kfree_skb(&skb); 
     211+#ifdef ATH_SUPERG_FF 
     212+       if (skb2) 
     213+               ieee80211_dev_kfree_skb(&skb2); 
     214+#endif 
     215+       return NULL; 
    187216 } 
     217  
     218 #define        KEY_UNDEFINED(k)        ((k).wk_cipher == &ieee80211_cipher_none) 
    188219Index: madwifi-trunk-r3314/net80211/ieee80211_input.c 
    189220=================================================================== 
    190 --- madwifi-trunk-r3314.orig/net80211/ieee80211_input.c 2008-04-17 18:17:28.000000000 +0200 
    191 +++ madwifi-trunk-r3314/net80211/ieee80211_input.c      2008-04-17 18:25:48.000000000 +0200 
    192 @@ -244,20 +244,6 @@ 
     221--- madwifi-trunk-r3314.orig/net80211/ieee80211_input.c 2008-06-01 02:04:25.000000000 +0200 
     222+++ madwifi-trunk-r3314/net80211/ieee80211_input.c      2008-06-01 02:04:33.000000000 +0200 
     223@@ -204,7 +204,6 @@ 
     224        struct ieee80211_frame *wh; 
     225        struct ieee80211_key *key; 
     226        struct ether_header *eh; 
     227-       struct sk_buff *skb2; 
     228 #ifdef ATH_SUPERG_FF 
     229        struct llc *llc; 
     230 #endif 
     231@@ -244,20 +243,6 @@ 
    193232                vap->iv_stats.is_rx_tooshort++; 
    194233                goto out; 
     
    211250        /* 
    212251         * Bit of a cheat here, we use a pointer for a 3-address 
    213 @@ -738,7 +724,7 @@ 
     252@@ -738,7 +723,7 @@ 
    214253                        /* ether_type must be length as FF frames are always LLC/SNAP encap'd */  
    215254                        frame_len = ntohs(eh_tmp->ether_type);  
     
    220259                                goto err; 
    221260                        ieee80211_skb_copy_noderef(skb, skb1); 
    222 @@ -1137,7 +1123,7 @@ 
     261@@ -1137,7 +1122,7 @@ 
    223262  
    224263                if (ETHER_IS_MULTICAST(eh->ether_dhost) && !netif_queue_stopped(dev)) { 
Note: See TracChangeset for help on using the changeset viewer.