iwlwifi: Relax uCode timeout/error checking for 6000g2b
authorWey-Yi Guy <wey-yi.w.guy@intel.com>
Mon, 23 Aug 2010 14:57:02 +0000 (07:57 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 25 Aug 2010 18:33:22 +0000 (14:33 -0400)
Disable plcp error checking for 6000g2b devices, with wifi/bt coex;
this got trigger too often, disable for now until finding better
trigger point.

Also extend the firmware reload timer much longer for BT coex to make sure
there are will be no mistake to reload firmware too fast and too often.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/iwlwifi/iwl-6000.c
drivers/net/wireless/iwlwifi/iwl-core.c

index 22676d960d6e1093a0c4d6c3fac0eff11721d0d0..9d430987cc621cfb1eb972aa40dd94c2606028be 100644 (file)
@@ -796,7 +796,7 @@ struct iwl_cfg iwl6000g2b_2agn_cfg = {
        .supports_idle = true,
        .adv_thermal_throttle = true,
        .support_ct_kill_exit = true,
-       .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
+       .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DISABLE,
        .chain_noise_scale = 1000,
        .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
        .max_event_log_size = 512,
@@ -835,7 +835,7 @@ struct iwl_cfg iwl6000g2b_2abg_cfg = {
        .supports_idle = true,
        .adv_thermal_throttle = true,
        .support_ct_kill_exit = true,
-       .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
+       .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DISABLE,
        .chain_noise_scale = 1000,
        .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
        .max_event_log_size = 512,
@@ -876,7 +876,7 @@ struct iwl_cfg iwl6000g2b_2bgn_cfg = {
        .supports_idle = true,
        .adv_thermal_throttle = true,
        .support_ct_kill_exit = true,
-       .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
+       .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DISABLE,
        .chain_noise_scale = 1000,
        .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
        .max_event_log_size = 512,
@@ -915,7 +915,7 @@ struct iwl_cfg iwl6000g2b_2bg_cfg = {
        .supports_idle = true,
        .adv_thermal_throttle = true,
        .support_ct_kill_exit = true,
-       .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
+       .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DISABLE,
        .chain_noise_scale = 1000,
        .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
        .max_event_log_size = 512,
@@ -956,7 +956,7 @@ struct iwl_cfg iwl6000g2b_bgn_cfg = {
        .supports_idle = true,
        .adv_thermal_throttle = true,
        .support_ct_kill_exit = true,
-       .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
+       .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DISABLE,
        .chain_noise_scale = 1000,
        .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
        .max_event_log_size = 512,
@@ -995,7 +995,7 @@ struct iwl_cfg iwl6000g2b_bg_cfg = {
        .supports_idle = true,
        .adv_thermal_throttle = true,
        .support_ct_kill_exit = true,
-       .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
+       .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DISABLE,
        .chain_noise_scale = 1000,
        .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
        .max_event_log_size = 512,
index 1921307a23b885589abd9f354d444b06efc11725..72eda7e8a00d5db77bc3875c680bf991bb115083 100644 (file)
@@ -2646,10 +2646,14 @@ static int iwl_check_stuck_queue(struct iwl_priv *priv, int cnt)
                                                "queue %d, not read %d time\n",
                                                q->id,
                                                q->repeat_same_read_ptr);
-                               mod_timer(&priv->monitor_recover, jiffies +
-                                       msecs_to_jiffies(IWL_ONE_HUNDRED_MSECS));
+                               if (!priv->cfg->advanced_bt_coexist) {
+                                       mod_timer(&priv->monitor_recover,
+                                               jiffies + msecs_to_jiffies(
+                                               IWL_ONE_HUNDRED_MSECS));
+                                       return 1;
+                               }
                        }
-                       return 1;
+                       return 0;
                } else {
                        q->last_read_ptr = q->read_ptr;
                        q->repeat_same_read_ptr = 0;