Browse Source

Revert "Use only 2 queued work arrays in avalon."

This reverts commit 0ea9d68d67.

This was leading to failure to find work items on block changes.
nfactor-troky
Con Kolivas 12 years ago
parent
commit
64ecfa53a9
  1. 7
      driver-avalon.c

7
driver-avalon.c

@ -670,7 +670,7 @@ static bool avalon_prepare(struct thr_info *thr)
struct timeval now; struct timeval now;
free(avalon->works); free(avalon->works);
avalon->works = calloc(info->miner_count * sizeof(struct work *), 2); avalon->works = calloc(info->miner_count * sizeof(struct work *), 4);
if (!avalon->works) if (!avalon->works)
quit(1, "Failed to calloc avalon works in avalon_prepare"); quit(1, "Failed to calloc avalon works in avalon_prepare");
if (avalon->device_fd == -1) if (avalon->device_fd == -1)
@ -697,7 +697,7 @@ static void avalon_free_work(struct thr_info *thr)
works = avalon->works; works = avalon->works;
info = avalon_infos[avalon->device_id]; info = avalon_infos[avalon->device_id];
for (i = 0; i < info->miner_count * 2; i++) { for (i = 0; i < info->miner_count * 4; i++) {
if (works[i]) { if (works[i]) {
work_completed(avalon, works[i]); work_completed(avalon, works[i]);
works[i] = NULL; works[i] = NULL;
@ -717,7 +717,8 @@ static void avalon_free_work_array(struct thr_info *thr)
return; return;
works = avalon->works; works = avalon->works;
mc = avalon_infos[avalon->device_id]->miner_count; mc = avalon_infos[avalon->device_id]->miner_count;
avalon->work_array ^= 1; if (++avalon->work_array > 3)
avalon->work_array = 0;
for (i = avalon->work_array * mc, j = 0; j < mc; i++, j++) { for (i = avalon->work_array * mc, j = 0; j < mc; i++, j++) {
if (likely(works[i])) { if (likely(works[i])) {

Loading…
Cancel
Save