IEEE80211_HW_MFP_CAPABLE |
                        IEEE80211_HW_REPORTS_TX_ACK_STATUS |
                        IEEE80211_HW_HAS_RATE_CONTROL |
-                       IEEE80211_HW_SUPPORTS_STATIC_SMPS |
                        IEEE80211_HW_AP_LINK_PS |
                        IEEE80211_HW_SPECTRUM_MGMT;
 
         * bytes is used for padding/alignment if necessary. */
        ar->hw->extra_tx_headroom += sizeof(struct htt_data_tx_desc_frag)*2 + 4;
 
+       ar->hw->wiphy->features |= NL80211_FEATURE_STATIC_SMPS;
+
        if (ar->ht_cap_info & WMI_HT_CAP_DYNAMIC_SMPS)
-               ar->hw->flags |= IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS;
+               ar->hw->wiphy->features |= NL80211_FEATURE_DYNAMIC_SMPS;
 
        if (ar->ht_cap_info & WMI_HT_CAP_ENABLED) {
                ar->hw->flags |= IEEE80211_HW_AMPDU_AGGREGATION;
 
            IEEE80211_HW_REPORTS_TX_ACK_STATUS | IEEE80211_HW_SUPPORTS_PS |
            IEEE80211_HW_SUPPORTS_DYNAMIC_PS;
        if (il->cfg->sku & IL_SKU_N)
-               hw->flags |=
-                   IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS |
-                   IEEE80211_HW_SUPPORTS_STATIC_SMPS;
+               hw->wiphy->features |= NL80211_FEATURE_DYNAMIC_SMPS |
+                                      NL80211_FEATURE_STATIC_SMPS;
 
        hw->sta_data_size = sizeof(struct il_station_priv);
        hw->vif_data_size = sizeof(struct il_vif_priv);
 
         */
 
        if (priv->nvm_data->sku_cap_11n_enable)
-               hw->flags |= IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS |
-                            IEEE80211_HW_SUPPORTS_STATIC_SMPS;
+               hw->wiphy->features |= NL80211_FEATURE_DYNAMIC_SMPS |
+                                      NL80211_FEATURE_STATIC_SMPS;
 
        /*
         * Enable 11w if advertised by firmware and software crypto
 
                    IEEE80211_HW_AMPDU_AGGREGATION |
                    IEEE80211_HW_TIMING_BEACON_ONLY |
                    IEEE80211_HW_CONNECTION_MONITOR |
-                   IEEE80211_HW_CHANCTX_STA_CSA |
-                   IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS |
-                   IEEE80211_HW_SUPPORTS_STATIC_SMPS;
+                   IEEE80211_HW_CHANCTX_STA_CSA;
 
        hw->queues = mvm->first_agg_queue;
        hw->offchannel_tx_hw_queue = IWL_MVM_OFFCHANNEL_QUEUE;
 
        hw->wiphy->features |= NL80211_FEATURE_P2P_GO_CTWIN |
                               NL80211_FEATURE_LOW_PRIORITY_SCAN |
-                              NL80211_FEATURE_P2P_GO_OPPPS;
+                              NL80211_FEATURE_P2P_GO_OPPPS |
+                              NL80211_FEATURE_DYNAMIC_SMPS |
+                              NL80211_FEATURE_STATIC_SMPS;
 
        mvm->rts_threshold = IEEE80211_MAX_RTS_THRESHOLD;
 
 
 
        hw->flags = IEEE80211_HW_MFP_CAPABLE |
                    IEEE80211_HW_SIGNAL_DBM |
-                   IEEE80211_HW_SUPPORTS_STATIC_SMPS |
-                   IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS |
                    IEEE80211_HW_AMPDU_AGGREGATION |
                    IEEE80211_HW_WANT_MONITOR_VIF |
                    IEEE80211_HW_QUEUE_CONTROL |
                            WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL |
                            WIPHY_FLAG_AP_UAPSD |
                            WIPHY_FLAG_HAS_CHANNEL_SWITCH;
-       hw->wiphy->features |= NL80211_FEATURE_ACTIVE_MONITOR;
-       hw->wiphy->features |= NL80211_FEATURE_AP_MODE_CHAN_WIDTH_CHANGE;
+       hw->wiphy->features |= NL80211_FEATURE_ACTIVE_MONITOR |
+                              NL80211_FEATURE_AP_MODE_CHAN_WIDTH_CHANGE |
+                              NL80211_FEATURE_STATIC_SMPS |
+                              NL80211_FEATURE_DYNAMIC_SMPS;
 
        /* ask mac80211 to reserve space for magic */
        hw->vif_data_size = sizeof(struct hwsim_vif_priv);
 
  * @IEEE80211_HW_MFP_CAPABLE:
  *     Hardware supports management frame protection (MFP, IEEE 802.11w).
  *
- * @IEEE80211_HW_SUPPORTS_STATIC_SMPS:
- *     Hardware supports static spatial multiplexing powersave,
- *     ie. can turn off all but one chain even on HT connections
- *     that should be using more chains.
- *
- * @IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS:
- *     Hardware supports dynamic spatial multiplexing powersave,
- *     ie. can turn off all but one chain and then wake the rest
- *     up as required after, for example, rts/cts handshake.
- *
  * @IEEE80211_HW_SUPPORTS_UAPSD:
  *     Hardware supports Unscheduled Automatic Power Save Delivery
  *     (U-APSD) in managed mode. The mode is configured with
        IEEE80211_HW_SUPPORTS_DYNAMIC_PS                = 1<<12,
        IEEE80211_HW_MFP_CAPABLE                        = 1<<13,
        IEEE80211_HW_WANT_MONITOR_VIF                   = 1<<14,
-       IEEE80211_HW_SUPPORTS_STATIC_SMPS               = 1<<15,
-       IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS              = 1<<16,
+       /* free slots */
        IEEE80211_HW_SUPPORTS_UAPSD                     = 1<<17,
        IEEE80211_HW_REPORTS_TX_ACK_STATUS              = 1<<18,
        IEEE80211_HW_CONNECTION_MONITOR                 = 1<<19,
 
                sf += scnprintf(buf + sf, mxln - sf, "SUPPORTS_DYNAMIC_PS\n");
        if (local->hw.flags & IEEE80211_HW_MFP_CAPABLE)
                sf += scnprintf(buf + sf, mxln - sf, "MFP_CAPABLE\n");
-       if (local->hw.flags & IEEE80211_HW_SUPPORTS_STATIC_SMPS)
-               sf += scnprintf(buf + sf, mxln - sf, "SUPPORTS_STATIC_SMPS\n");
-       if (local->hw.flags & IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS)
-               sf += scnprintf(buf + sf, mxln - sf,
-                               "SUPPORTS_DYNAMIC_SMPS\n");
        if (local->hw.flags & IEEE80211_HW_SUPPORTS_UAPSD)
                sf += scnprintf(buf + sf, mxln - sf, "SUPPORTS_UAPSD\n");
        if (local->hw.flags & IEEE80211_HW_REPORTS_TX_ACK_STATUS)
 
        struct ieee80211_local *local = sdata->local;
        int err;
 
-       if (!(local->hw.flags & IEEE80211_HW_SUPPORTS_STATIC_SMPS) &&
+       if (!(local->hw.wiphy->features & NL80211_FEATURE_STATIC_SMPS) &&
            smps_mode == IEEE80211_SMPS_STATIC)
                return -EINVAL;
 
        /* auto should be dynamic if in PS mode */
-       if (!(local->hw.flags & IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS) &&
+       if (!(local->hw.wiphy->features & NL80211_FEATURE_DYNAMIC_SMPS) &&
            (smps_mode == IEEE80211_SMPS_DYNAMIC ||
             smps_mode == IEEE80211_SMPS_AUTOMATIC))
                return -EINVAL;
 
        ifmgd->uapsd_max_sp_len = sdata->local->hw.uapsd_max_sp_len;
        ifmgd->p2p_noa_index = -1;
 
-       if (sdata->local->hw.flags & IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS)
+       if (sdata->local->hw.wiphy->features & NL80211_FEATURE_DYNAMIC_SMPS)
                ifmgd->req_smps = IEEE80211_SMPS_AUTOMATIC;
        else
                ifmgd->req_smps = IEEE80211_SMPS_OFF;