iwlwifi: mvm: don't start BA agreement when BT is active
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Tue, 28 May 2013 18:36:16 +0000 (21:36 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 4 Jun 2013 11:13:20 +0000 (13:13 +0200)
Otherwise WiFi would kill BT.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/iwlwifi/mvm/rs.c

index 7dfc212c4f0eafbc7c089394b53255c5f77b574a..20269994d8db8518879d6f0721449095dedd8d94 100644 (file)
@@ -401,6 +401,17 @@ static int rs_tl_turn_on_agg_for_tid(struct iwl_mvm *mvm,
 
        load = rs_tl_get_load(lq_data, tid);
 
+       /*
+        * Don't create TX aggregation sessions when in high
+        * BT traffic, as they would just be disrupted by BT.
+        */
+       if (BT_MBOX_MSG(&mvm->last_bt_notif, 3, TRAFFIC_LOAD) >= 2) {
+               IWL_DEBUG_COEX(mvm, "BT traffic (%d), no aggregation allowed\n",
+                              BT_MBOX_MSG(&mvm->last_bt_notif,
+                                          3, TRAFFIC_LOAD));
+               return ret;
+       }
+
        if ((iwlwifi_mod_params.auto_agg) || (load > IWL_AGG_LOAD_THRESHOLD)) {
                IWL_DEBUG_HT(mvm, "Starting Tx agg: STA: %pM tid: %d\n",
                             sta->addr, tid);