iwlwifi: recalculate average tpt if not current
authorReinette Chatre <reinette.chatre@intel.com>
Mon, 3 May 2010 17:55:07 +0000 (10:55 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 4 May 2010 17:24:22 +0000 (13:24 -0400)
We currently have this check as a BUG_ON, which is being hit by people.
Previously it was an error with a recalculation if not current, return that
code.

The BUG_ON was introduced by:
commit 3110bef78cb4282c58245bc8fd6d95d9ccb19749
Author: Guy Cohen <guy.cohen@intel.com>
Date:   Tue Sep 9 10:54:54 2008 +0800

    iwlwifi: Added support for 3 antennas

... the portion adding the BUG_ON is reverted since we are encountering the error
and BUG_ON was created with assumption that error is not encountered.

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

index f01f242659c30d8522b791ab368bd20cdfc7dc74..331c23a6c4e8ae9fc1d2ed495d5e2d2de742ca50 100644 (file)
@@ -2077,10 +2077,12 @@ static void rs_rate_scale_perform(struct iwl_priv *priv,
        }
        /* Else we have enough samples; calculate estimate of
         * actual average throughput */
-
-       /* Sanity-check TPT calculations */
-       BUG_ON(window->average_tpt != ((window->success_ratio *
-                       tbl->expected_tpt[index] + 64) / 128));
+       if (window->average_tpt != ((window->success_ratio *
+                       tbl->expected_tpt[index] + 64) / 128)) {
+               IWL_ERR(priv, "expected_tpt should have been calculated by now\n");
+               window->average_tpt = ((window->success_ratio *
+                                       tbl->expected_tpt[index] + 64) / 128);
+       }
 
        /* If we are searching for better modulation mode, check success. */
        if (lq_sta->search_better_tbl &&