if (ret)
                return ret;
 
-       ret = iwl_mvm_sched_scan_start(mvm, vif, nd_config, &mvm->nd_ies);
+       ret = iwl_mvm_sched_scan_start(mvm, vif, nd_config, &mvm->nd_ies,
+                                      IWL_MVM_SCAN_NETDETECT);
        if (ret)
                return ret;
 
 
 enum iwl_scan_status {
        IWL_MVM_SCAN_REGULAR            = BIT(0),
        IWL_MVM_SCAN_SCHED              = BIT(1),
+       IWL_MVM_SCAN_NETDETECT          = BIT(2),
 
        IWL_MVM_SCAN_STOPPING_REGULAR   = BIT(8),
        IWL_MVM_SCAN_STOPPING_SCHED     = BIT(9),
+       IWL_MVM_SCAN_STOPPING_NETDETECT = BIT(10),
 
        IWL_MVM_SCAN_REGULAR_MASK       = IWL_MVM_SCAN_REGULAR |
                                          IWL_MVM_SCAN_STOPPING_REGULAR,
        IWL_MVM_SCAN_SCHED_MASK         = IWL_MVM_SCAN_SCHED |
                                          IWL_MVM_SCAN_STOPPING_SCHED,
+       IWL_MVM_SCAN_NETDETECT_MASK     = IWL_MVM_SCAN_NETDETECT |
+                                         IWL_MVM_SCAN_STOPPING_NETDETECT,
 
        IWL_MVM_SCAN_STOPPING_MASK      = 0xff00,
        IWL_MVM_SCAN_MASK               = 0x00ff,
 int iwl_mvm_sched_scan_start(struct iwl_mvm *mvm,
                             struct ieee80211_vif *vif,
                             struct cfg80211_sched_scan_request *req,
-                            struct ieee80211_scan_ies *ies);
+                            struct ieee80211_scan_ies *ies,
+                            int type);
 int iwl_mvm_scan_offload_stop(struct iwl_mvm *mvm, bool notify);
 int iwl_mvm_rx_scan_offload_results(struct iwl_mvm *mvm,
                                    struct iwl_rx_cmd_buffer *rxb,
 
                if (mvm->scan_status & IWL_MVM_SCAN_SCHED_MASK)
                        return -EBUSY;
                return iwl_mvm_cancel_scan(mvm);
+       case IWL_MVM_SCAN_NETDETECT:
+               /* No need to stop anything for net-detect since the
+                * firmware is restarted anyway.  This way, any sched
+                * scans that were running will be restarted when we
+                * resume.
+               */
+               return 0;
        default:
                WARN_ON(1);
                break;
 int iwl_mvm_sched_scan_start(struct iwl_mvm *mvm,
                             struct ieee80211_vif *vif,
                             struct cfg80211_sched_scan_request *req,
-                            struct ieee80211_scan_ies *ies)
+                            struct ieee80211_scan_ies *ies,
+                            int type)
 {
        int ret;
 
                return -EBUSY;
        }
 
-       ret = iwl_mvm_check_running_scans(mvm, IWL_MVM_SCAN_SCHED);
+       ret = iwl_mvm_check_running_scans(mvm, type);
        if (ret)
                return ret;