aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-agn.c
diff options
context:
space:
mode:
authorWey-Yi Guy <wey-yi.w.guy@intel.com>2010-08-23 10:57:13 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-08-25 14:34:53 -0400
commitda5dbb971573efda54c7c39e7e4ccd3fc7c86e49 (patch)
treef7350f6d2ead2bef4c3b663a18c6ec1ceac1c996 /drivers/net/wireless/iwlwifi/iwl-agn.c
parentf37837c962c309f1d90636626c779497b614be42 (diff)
iwlagn: set traffic load based on multiple factors
Current BT traffic load should based on the following conditions: 1. BT On/Off status 2. Channel announcement enable/disable 3. Curren traffic load report from uCode Need to modify rate scale to down-grade from MIMO to SISO if detected high BT traffic load. Also need to make sure not using chain "B" with high BT traffic or if it is in "full concurrency" mode. Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-agn.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 989e4a702602..4410f820c2f3 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -2823,6 +2823,7 @@ static void __iwl_down(struct iwl_priv *priv)
2823 iwl_clear_driver_stations(priv); 2823 iwl_clear_driver_stations(priv);
2824 2824
2825 /* reset BT coex data */ 2825 /* reset BT coex data */
2826 priv->bt_status = 0;
2826 priv->bt_traffic_load = priv->cfg->bt_init_traffic_load; 2827 priv->bt_traffic_load = priv->cfg->bt_init_traffic_load;
2827 priv->bt_sco_active = false; 2828 priv->bt_sco_active = false;
2828 priv->bt_full_concurrent = false; 2829 priv->bt_full_concurrent = false;
@@ -3133,6 +3134,7 @@ static void iwl_bg_restart(struct work_struct *data)
3133 bool bt_sco, bt_full_concurrent; 3134 bool bt_sco, bt_full_concurrent;
3134 u8 bt_ci_compliance; 3135 u8 bt_ci_compliance;
3135 u8 bt_load; 3136 u8 bt_load;
3137 u8 bt_status;
3136 3138
3137 mutex_lock(&priv->mutex); 3139 mutex_lock(&priv->mutex);
3138 priv->vif = NULL; 3140 priv->vif = NULL;
@@ -3151,6 +3153,7 @@ static void iwl_bg_restart(struct work_struct *data)
3151 bt_full_concurrent = priv->bt_full_concurrent; 3153 bt_full_concurrent = priv->bt_full_concurrent;
3152 bt_ci_compliance = priv->bt_ci_compliance; 3154 bt_ci_compliance = priv->bt_ci_compliance;
3153 bt_load = priv->bt_traffic_load; 3155 bt_load = priv->bt_traffic_load;
3156 bt_status = priv->bt_status;
3154 3157
3155 __iwl_down(priv); 3158 __iwl_down(priv);
3156 3159
@@ -3158,6 +3161,7 @@ static void iwl_bg_restart(struct work_struct *data)
3158 priv->bt_full_concurrent = bt_full_concurrent; 3161 priv->bt_full_concurrent = bt_full_concurrent;
3159 priv->bt_ci_compliance = bt_ci_compliance; 3162 priv->bt_ci_compliance = bt_ci_compliance;
3160 priv->bt_traffic_load = bt_load; 3163 priv->bt_traffic_load = bt_load;
3164 priv->bt_status = bt_status;
3161 3165
3162 mutex_unlock(&priv->mutex); 3166 mutex_unlock(&priv->mutex);
3163 iwl_cancel_deferred_work(priv); 3167 iwl_cancel_deferred_work(priv);