From 47309e1a184e1f9bb718eb12277d7ac884cba8cb Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Mon, 8 Apr 2013 14:04:38 +1000 Subject: [PATCH] Revert "The result_wrong measurement for avalon is continually leading to false positives so remove it." This reverts commit 08c0ac290c1196b77388e747ced15d92fce57f18. --- driver-avalon.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/driver-avalon.c b/driver-avalon.c index 9e54e76b..6b7da561 100644 --- a/driver-avalon.c +++ b/driver-avalon.c @@ -829,6 +829,7 @@ static int64_t avalon_scanhash(struct thr_info *thr) uint32_t nonce; int64_t hash_count; static int first_try = 0; + int result_wrong; avalon = thr->cgpu; works = avalon->works; @@ -890,6 +891,7 @@ static int64_t avalon_scanhash(struct thr_info *thr) elapsed.tv_sec = elapsed.tv_usec = 0; gettimeofday(&tv_start, NULL); + result_wrong = 0; hash_count = 0; while (true) { full = avalon_buffer_full(fd); @@ -917,6 +919,7 @@ static int64_t avalon_scanhash(struct thr_info *thr) if (!avalon_decode_nonce(thr, &ar, &nonce)) { info->no_matching_work++; + result_wrong++; if (opt_debug) { timersub(&tv_finish, &tv_start, &elapsed); @@ -936,6 +939,17 @@ static int64_t avalon_scanhash(struct thr_info *thr) elapsed.tv_sec, elapsed.tv_usec); } } + if (result_wrong >= avalon_get_work_count && ret != AVA_GETS_RESTART) { + /* This mean FPGA controller gave all wrong results, so + * try to reset the Avalon */ + do_avalon_close(thr); + applog(LOG_ERR, + "AVA%i: FPGA controller mess up", avalon->device_id); + dev_error(avalon, REASON_DEV_COMMS_ERROR); + sleep(1); + avalon_init(avalon); + return 0; + } avalon_free_work_array(thr);