Use only 2 queued work arrays in avalon.
diff --git a/driver-avalon.c b/driver-avalon.c
index 6e6d143..3c8c7eb 100644
--- a/driver-avalon.c
+++ b/driver-avalon.c
@@ -654,7 +654,7 @@ static bool avalon_prepare(struct thr_info *thr)
struct timeval now;
free(avalon->works);
- avalon->works = calloc(info->miner_count * sizeof(struct work *), 4);
+ avalon->works = calloc(info->miner_count * sizeof(struct work *), 2);
if (!avalon->works)
quit(1, "Failed to calloc avalon works in avalon_prepare");
if (avalon->device_fd == -1)
@@ -681,7 +681,7 @@ static void avalon_free_work(struct thr_info *thr)
works = avalon->works;
info = avalon_infos[avalon->device_id];
- for (i = 0; i < info->miner_count * 4; i++) {
+ for (i = 0; i < info->miner_count * 2; i++) {
if (works[i]) {
work_completed(avalon, works[i]);
works[i] = NULL;
@@ -701,8 +701,7 @@ static void avalon_free_work_array(struct thr_info *thr)
return;
works = avalon->works;
mc = avalon_infos[avalon->device_id]->miner_count;
- if (++avalon->work_array > 3)
- avalon->work_array = 0;
+ avalon->work_array ^= 1;
for (i = avalon->work_array * mc, j = 0; j < mc; i++, j++) {
if (likely(works[i])) {