Browse Source

Simplify debugging and only discard from avalon read buffer if at least one full result has been discarded.

nfactor-troky
Con Kolivas 12 years ago
parent
commit
fba70ff593
  1. 23
      driver-avalon.c

23
driver-avalon.c

@ -650,23 +650,24 @@ static void avalon_parse_results(struct cgpu_info *avalon, struct avalon_info *i
if (!found) { if (!found) {
spare = *offset - AVALON_READ_SIZE; spare = *offset - AVALON_READ_SIZE;
if (spare) /* We are buffering and haven't accumulated one more corrupt
applog(LOG_WARNING, "Avalon: Discarding %d bytes from buffer", spare); * work result. */
if (spare < (int)AVALON_READ_SIZE)
return;
applog(LOG_WARNING, "Avalon: Discarding %d bytes from buffer", spare);
inc_hw_errors(thr);
mutex_lock(&info->lock);
info->no_matching_work++;
mutex_unlock(&info->lock);
} else { } else {
spare = AVALON_READ_SIZE + i; spare = AVALON_READ_SIZE + i;
if (i) if (i)
applog(LOG_WARNING, "Avalon: Discarding %d bytes from buffer", i); applog(LOG_WARNING, "Avalon: Discarding %d bytes from buffer", i);
} }
if (spare) {
*offset -= spare;
memmove(buf, buf + spare, *offset);
}
if (!found) { *offset -= spare;
mutex_lock(&info->lock); memmove(buf, buf + spare, *offset);
info->no_matching_work++;
mutex_unlock(&info->lock);
}
} }
static void *avalon_get_results(void *userdata) static void *avalon_get_results(void *userdata)

Loading…
Cancel
Save