if (sched_scan_sdata && sched_scan_req)
                /*
                 * Sched scan stopped, but we don't want to report it. Instead,
-                * we're trying to reschedule.
+                * we're trying to reschedule. However, if more than one scan
+                * plan was set, we cannot reschedule since we don't know which
+                * scan plan was currently running (and some scan plans may have
+                * already finished).
                 */
-               if (__ieee80211_request_sched_scan_start(sched_scan_sdata,
+               if (sched_scan_req->n_scan_plans > 1 ||
+                   __ieee80211_request_sched_scan_start(sched_scan_sdata,
                                                         sched_scan_req))
                        sched_scan_stopped = true;
        mutex_unlock(&local->mtx);