IWL_DEBUG_MAC80211(mvm, "arp filter changed\n");
                iwl_mvm_configure_bcast_filter(mvm);
        }
+
+       if (changes & BSS_CHANGED_BANDWIDTH)
+               iwl_mvm_apply_fw_smps_request(vif);
 }
 
 static int iwl_mvm_start_ap_ibss(struct ieee80211_hw *hw,
 
 {
        struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
        struct iwl_mvm *mvm = mvmvif->mvm;
+       enum ieee80211_smps_mode mode = IEEE80211_SMPS_AUTOMATIC;
 
-       iwl_mvm_update_smps(mvm, vif, IWL_MVM_SMPS_REQ_FW,
-                           mvm->fw_static_smps_request ?
-                               IEEE80211_SMPS_STATIC :
-                               IEEE80211_SMPS_AUTOMATIC);
+       if (mvm->fw_static_smps_request &&
+           vif->bss_conf.chandef.width == NL80211_CHAN_WIDTH_160 &&
+           vif->bss_conf.he_support)
+               mode = IEEE80211_SMPS_STATIC;
+
+       iwl_mvm_update_smps(mvm, vif, IWL_MVM_SMPS_REQ_FW, mode);
 }
 
 static void iwl_mvm_intf_dual_chain_req(void *data, u8 *mac,