]> git.openfabrics.org - ~shefty/rdma-dev.git/commitdiff
iwlwifi: HT performance improvement changes
authorWey-Yi Guy <wey-yi.w.guy@intel.com>
Tue, 10 Mar 2009 21:35:10 +0000 (14:35 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 16 Mar 2009 22:09:44 +0000 (18:09 -0400)
During rate scaling, checking for 0 retry count before decrement
the count by 1, this can avoid the retry count to become 255 (0xff),
which will cause the rate to drop faster than what we expect during good
condition (receive 0 retry packet). also change the algorithm to make
the rate not drop faster than what we like.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/iwlwifi/iwl-agn-rs.c
drivers/net/wireless/iwlwifi/iwl-agn-rs.h

index a6f4c74ff2b49bf060cbfa1423f40ef4c3c179e2..0929f310b2d410c66853a34eecc134bd34081464 100644 (file)
@@ -801,7 +801,10 @@ static void rs_tx_status(void *priv_r, struct ieee80211_supported_band *sband,
            !(info->flags & IEEE80211_TX_STAT_AMPDU))
                return;
 
-       retries = info->status.rates[0].count - 1;
+       if (info->flags & IEEE80211_TX_STAT_AMPDU)
+               retries = 0;
+       else
+               retries = info->status.rates[0].count - 1;
 
        if (retries > 15)
                retries = 15;
@@ -1897,7 +1900,7 @@ static void rs_rate_scale_perform(struct iwl_priv *priv,
                if (high != IWL_RATE_INVALID && sr >= IWL_RATE_INCREASE_TH)
                        scale_action = 1;
                else if (low != IWL_RATE_INVALID)
-                       scale_action = -1;
+                       scale_action = 0;
        }
 
        /* Both adjacent throughputs are measured, but neither one has better
@@ -1918,9 +1921,7 @@ static void rs_rate_scale_perform(struct iwl_priv *priv,
                                        sr >= IWL_RATE_INCREASE_TH) {
                                scale_action = 1;
                        } else {
-                               IWL_DEBUG_RATE(priv,
-                                   "decrease rate because of high tpt\n");
-                               scale_action = -1;
+                               scale_action = 0;
                        }
 
                /* Lower adjacent rate's throughput is measured */
index 345806dd8870b74d1ff792b72be3f797d4af4c07..ab59acc405d9426774f3e3cffad380be8affa542 100644 (file)
@@ -231,7 +231,7 @@ enum {
 #define IWL_RS_GOOD_RATIO              12800   /* 100% */
 #define IWL_RATE_SCALE_SWITCH          10880   /*  85% */
 #define IWL_RATE_HIGH_TH               10880   /*  85% */
-#define IWL_RATE_INCREASE_TH            8960   /*  70% */
+#define IWL_RATE_INCREASE_TH           6400    /*  50% */
 #define IWL_RATE_DECREASE_TH           1920    /*  15% */
 
 /* possible actions when in legacy mode */