diff options
author | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2014-06-30 03:26:02 -0400 |
---|---|---|
committer | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2014-07-07 14:41:07 -0400 |
commit | 4c86f938d359f30a52134d3fc9945f95a3e621e2 (patch) | |
tree | 7d333dfa59ea110f7de9760e9b84d89860e61037 /drivers/net/wireless/iwlwifi/mvm/coex.c | |
parent | 160be5719bbcb97b46f008a0f9f23e80139f1e2c (diff) |
iwlwifi: mvm: BT Coex - relax constraints when TTC / RRC is active
When TxTxCo-Running is active, we can relax the constraints
on the rate control.
When RxRxCo-Running is active, we can relax the constrains
on SMPS.
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm/coex.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/coex.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/coex.c b/drivers/net/wireless/iwlwifi/mvm/coex.c index 64325b60c0ff..8110fe00bf55 100644 --- a/drivers/net/wireless/iwlwifi/mvm/coex.c +++ b/drivers/net/wireless/iwlwifi/mvm/coex.c | |||
@@ -787,6 +787,10 @@ static void iwl_mvm_bt_notif_iterator(void *_data, u8 *mac, | |||
787 | if (!vif->bss_conf.assoc) | 787 | if (!vif->bss_conf.assoc) |
788 | smps_mode = IEEE80211_SMPS_AUTOMATIC; | 788 | smps_mode = IEEE80211_SMPS_AUTOMATIC; |
789 | 789 | ||
790 | if (IWL_COEX_IS_RRC_ON(mvm->last_bt_notif.ttc_rrc_status, | ||
791 | mvmvif->phy_ctxt->id)) | ||
792 | smps_mode = IEEE80211_SMPS_AUTOMATIC; | ||
793 | |||
790 | IWL_DEBUG_COEX(data->mvm, | 794 | IWL_DEBUG_COEX(data->mvm, |
791 | "mac %d: bt_activity_grading %d smps_req %d\n", | 795 | "mac %d: bt_activity_grading %d smps_req %d\n", |
792 | mvmvif->id, bt_activity_grading, smps_mode); | 796 | mvmvif->id, bt_activity_grading, smps_mode); |
@@ -1114,19 +1118,19 @@ u16 iwl_mvm_coex_agg_time_limit(struct iwl_mvm *mvm, | |||
1114 | struct ieee80211_sta *sta) | 1118 | struct ieee80211_sta *sta) |
1115 | { | 1119 | { |
1116 | struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta); | 1120 | struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta); |
1121 | struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(mvmsta->vif); | ||
1122 | struct iwl_mvm_phy_ctxt *phy_ctxt = mvmvif->phy_ctxt; | ||
1117 | enum iwl_bt_coex_lut_type lut_type; | 1123 | enum iwl_bt_coex_lut_type lut_type; |
1118 | 1124 | ||
1119 | if (!(mvm->fw->ucode_capa.api[0] & IWL_UCODE_TLV_API_BT_COEX_SPLIT)) | 1125 | if (!(mvm->fw->ucode_capa.api[0] & IWL_UCODE_TLV_API_BT_COEX_SPLIT)) |
1120 | return iwl_mvm_coex_agg_time_limit_old(mvm, sta); | 1126 | return iwl_mvm_coex_agg_time_limit_old(mvm, sta); |
1121 | 1127 | ||
1128 | if (IWL_COEX_IS_TTC_ON(mvm->last_bt_notif.ttc_rrc_status, phy_ctxt->id)) | ||
1129 | return LINK_QUAL_AGG_TIME_LIMIT_DEF; | ||
1130 | |||
1122 | if (le32_to_cpu(mvm->last_bt_notif.bt_activity_grading) < | 1131 | if (le32_to_cpu(mvm->last_bt_notif.bt_activity_grading) < |
1123 | BT_HIGH_TRAFFIC) | 1132 | BT_HIGH_TRAFFIC) |
1124 | return LINK_QUAL_AGG_TIME_LIMIT_DEF; | 1133 | return LINK_QUAL_AGG_TIME_LIMIT_DEF; |
1125 | /* | ||
1126 | TODO | ||
1127 | if (mvm->last_bt_notif.ttc_enabled) | ||
1128 | return LINK_QUAL_AGG_TIME_LIMIT_DEF; | ||
1129 | */ | ||
1130 | 1134 | ||
1131 | lut_type = iwl_get_coex_type(mvm, mvmsta->vif); | 1135 | lut_type = iwl_get_coex_type(mvm, mvmsta->vif); |
1132 | 1136 | ||
@@ -1141,16 +1145,15 @@ bool iwl_mvm_bt_coex_is_mimo_allowed(struct iwl_mvm *mvm, | |||
1141 | struct ieee80211_sta *sta) | 1145 | struct ieee80211_sta *sta) |
1142 | { | 1146 | { |
1143 | struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta); | 1147 | struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta); |
1148 | struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(mvmsta->vif); | ||
1149 | struct iwl_mvm_phy_ctxt *phy_ctxt = mvmvif->phy_ctxt; | ||
1144 | enum iwl_bt_coex_lut_type lut_type; | 1150 | enum iwl_bt_coex_lut_type lut_type; |
1145 | 1151 | ||
1146 | if (!(mvm->fw->ucode_capa.api[0] & IWL_UCODE_TLV_API_BT_COEX_SPLIT)) | 1152 | if (!(mvm->fw->ucode_capa.api[0] & IWL_UCODE_TLV_API_BT_COEX_SPLIT)) |
1147 | return iwl_mvm_coex_agg_time_limit_old(mvm, sta); | 1153 | return iwl_mvm_coex_agg_time_limit_old(mvm, sta); |
1148 | 1154 | ||
1149 | /* | 1155 | if (IWL_COEX_IS_TTC_ON(mvm->last_bt_notif.ttc_rrc_status, phy_ctxt->id)) |
1150 | TODO | ||
1151 | if (mvm->last_bt_notif.ttc_enabled) | ||
1152 | return true; | 1156 | return true; |
1153 | */ | ||
1154 | 1157 | ||
1155 | if (le32_to_cpu(mvm->last_bt_notif.bt_activity_grading) < | 1158 | if (le32_to_cpu(mvm->last_bt_notif.bt_activity_grading) < |
1156 | BT_HIGH_TRAFFIC) | 1159 | BT_HIGH_TRAFFIC) |