Unset the work restart flag sooner in avalon_flush_work to avoid re-entering the flush work function and just reset the queued counter instead of rotating the array to avoid runs of no valid work.
diff --git a/driver-avalon.c b/driver-avalon.c
index 06a15c7..c9ad8fa 100644
--- a/driver-avalon.c
+++ b/driver-avalon.c
@@ -972,12 +972,13 @@ static void avalon_flush_work(struct cgpu_info *avalon)
struct avalon_info *info = avalon->device_data;
struct thr_info *thr = info->thr;
+ thr->work_restart = false;
+
mutex_lock(&info->qlock);
- avalon_rotate_array(avalon);
+ /* Will overwrite any work queued */
+ avalon->queued = 0;
pthread_cond_signal(&info->qcond);
mutex_unlock(&info->qlock);
-
- thr->work_restart = false;
}
static struct api_data *avalon_api_stats(struct cgpu_info *cgpu)