iwlwifi: mvm: BT Coex - don't change AP SMPS mode
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Mon, 7 Jul 2014 11:38:39 +0000 (14:38 +0300)
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Tue, 22 Jul 2014 16:21:07 +0000 (19:21 +0300)
Leave it to default instead - regardless of the BT activity.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
drivers/net/wireless/iwlwifi/mvm/coex.c
drivers/net/wireless/iwlwifi/mvm/coex_legacy.c

index a65b1bb12b3dc4f68acbe44b27e4f1eb541a36d1..2291bbcaaeab8bfe57c3aa20f9409bab41ba4cef 100644 (file)
@@ -768,13 +768,8 @@ static void iwl_mvm_bt_notif_iterator(void *_data, u8 *mac,
                smps_mode = IEEE80211_SMPS_AUTOMATIC;
                break;
        case NL80211_IFTYPE_AP:
-               /* default smps_mode for AP / GO is OFF */
-               smps_mode = IEEE80211_SMPS_OFF;
-               if (!mvmvif->ap_ibss_active) {
-                       iwl_mvm_update_smps(mvm, vif, IWL_MVM_SMPS_REQ_BT_COEX,
-                                           smps_mode);
+               if (!mvmvif->ap_ibss_active)
                        return;
-               }
                break;
        default:
                return;
@@ -785,10 +780,10 @@ static void iwl_mvm_bt_notif_iterator(void *_data, u8 *mac,
        /* If channel context is invalid or not on 2.4GHz .. */
        if ((!chanctx_conf ||
             chanctx_conf->def.chan->band != IEEE80211_BAND_2GHZ)) {
-               /* ... relax constraints and disable rssi events */
-               iwl_mvm_update_smps(mvm, vif, IWL_MVM_SMPS_REQ_BT_COEX,
-                                   smps_mode);
                if (vif->type == NL80211_IFTYPE_STATION) {
+                       /* ... relax constraints and disable rssi events */
+                       iwl_mvm_update_smps(mvm, vif, IWL_MVM_SMPS_REQ_BT_COEX,
+                                           smps_mode);
                        iwl_mvm_bt_coex_reduced_txp(mvm, mvmvif->ap_sta_id,
                                                    false);
                        iwl_mvm_bt_coex_enable_rssi_event(mvm, vif, false, 0);
@@ -800,9 +795,7 @@ static void iwl_mvm_bt_notif_iterator(void *_data, u8 *mac,
        if (bt_activity_grading >= BT_HIGH_TRAFFIC)
                smps_mode = IEEE80211_SMPS_STATIC;
        else if (bt_activity_grading >= BT_LOW_TRAFFIC)
-               smps_mode = vif->type == NL80211_IFTYPE_AP ?
-                               IEEE80211_SMPS_OFF :
-                               IEEE80211_SMPS_DYNAMIC;
+               smps_mode = IEEE80211_SMPS_DYNAMIC;
 
        /* relax SMPS contraints for next association */
        if (!vif->bss_conf.assoc)
@@ -816,7 +809,9 @@ static void iwl_mvm_bt_notif_iterator(void *_data, u8 *mac,
                       "mac %d: bt_activity_grading %d smps_req %d\n",
                       mvmvif->id, bt_activity_grading, smps_mode);
 
-       iwl_mvm_update_smps(mvm, vif, IWL_MVM_SMPS_REQ_BT_COEX, smps_mode);
+       if (vif->type == NL80211_IFTYPE_STATION)
+               iwl_mvm_update_smps(mvm, vif, IWL_MVM_SMPS_REQ_BT_COEX,
+                                   smps_mode);
 
        /* low latency is always primary */
        if (iwl_mvm_vif_low_latency(mvmvif)) {
index 9e3ba5a4103dc4920e881f529dad0713e847312a..a3be3335992766348a670028d3bfa7f2a390ea60 100644 (file)
@@ -793,13 +793,8 @@ static void iwl_mvm_bt_notif_iterator(void *_data, u8 *mac,
                smps_mode = IEEE80211_SMPS_AUTOMATIC;
                break;
        case NL80211_IFTYPE_AP:
-               /* default smps_mode for AP / GO is OFF */
-               smps_mode = IEEE80211_SMPS_OFF;
-               if (!mvmvif->ap_ibss_active) {
-                       iwl_mvm_update_smps(mvm, vif, IWL_MVM_SMPS_REQ_BT_COEX,
-                                           smps_mode);
+               if (!mvmvif->ap_ibss_active)
                        return;
-               }
                break;
        default:
                return;
@@ -810,10 +805,10 @@ static void iwl_mvm_bt_notif_iterator(void *_data, u8 *mac,
        /* If channel context is invalid or not on 2.4GHz .. */
        if ((!chanctx_conf ||
             chanctx_conf->def.chan->band != IEEE80211_BAND_2GHZ)) {
-               /* ... relax constraints and disable rssi events */
-               iwl_mvm_update_smps(mvm, vif, IWL_MVM_SMPS_REQ_BT_COEX,
-                                   smps_mode);
                if (vif->type == NL80211_IFTYPE_STATION) {
+                       /* ... relax constraints and disable rssi events */
+                       iwl_mvm_update_smps(mvm, vif, IWL_MVM_SMPS_REQ_BT_COEX,
+                                           smps_mode);
                        iwl_mvm_bt_coex_reduced_txp(mvm, mvmvif->ap_sta_id,
                                                    false);
                        iwl_mvm_bt_coex_enable_rssi_event(mvm, vif, false, 0);
@@ -838,7 +833,9 @@ static void iwl_mvm_bt_notif_iterator(void *_data, u8 *mac,
                       mvmvif->id, data->notif->bt_status, bt_activity_grading,
                       smps_mode);
 
-       iwl_mvm_update_smps(mvm, vif, IWL_MVM_SMPS_REQ_BT_COEX, smps_mode);
+       if (vif->type == NL80211_IFTYPE_STATION)
+               iwl_mvm_update_smps(mvm, vif, IWL_MVM_SMPS_REQ_BT_COEX,
+                                   smps_mode);
 
        /* low latency is always primary */
        if (iwl_mvm_vif_low_latency(mvmvif)) {