Commit e90cf62af123d7e78e7ccd08e6046309f372b132

Con Kolivas 2013-05-26T17:07:27

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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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)