Commit 1ef52e0bac1fbc67d9ef097c07a8c32bab1d98e8

Paul Sheppard 2012-06-25T19:23:10

Check for submit_stale before checking for work_restart (to keep Kano happy)

diff --git a/cgminer.c b/cgminer.c
index 75a2824..21f3f1e 100644
--- a/cgminer.c
+++ b/cgminer.c
@@ -126,7 +126,7 @@ bool use_curses = true;
 #else
 bool use_curses;
 #endif
-static bool opt_submit_stale = true;
+bool opt_submit_stale = true;
 static int opt_shares;
 static bool opt_fail_only;
 bool opt_autofan;
diff --git a/driver-bitforce.c b/driver-bitforce.c
index 110d06f..44c4a47 100644
--- a/driver-bitforce.c
+++ b/driver-bitforce.c
@@ -343,20 +343,28 @@ static void biforce_thread_enable(struct thr_info *thr)
 	bitforce_init(bitforce);
 }
 
+extern bool opt_submit_stale;
+
 static uint64_t bitforce_scanhash(struct thr_info *thr, struct work *work, uint64_t __maybe_unused max_nonce)
 {
 	struct cgpu_info *bitforce = thr->cgpu;
+	bool submit_old = work->pool->submit_old;
 	bitforce->wait_ms = 0;
 	uint64_t ret;
 
 	if (ret = bitforce_send_work(thr, work)) {
-		while (bitforce->wait_ms < bitforce->sleep_ms) {
-			usleep(WORK_CHECK_INTERVAL_MS*1000);
-			bitforce->wait_ms += WORK_CHECK_INTERVAL_MS;
-			if (work_restart[thr->id].restart) {
-				applog(LOG_DEBUG, "BFL%i: Work restart, discarding after %dms", bitforce->device_id, bitforce->wait_ms);
-				return 1; //we have discarded all work; equivilent to 0 hashes done.
+		if(!opt_submit_stale || !submit_old) {
+			while (bitforce->wait_ms < bitforce->sleep_ms) {
+				usleep(WORK_CHECK_INTERVAL_MS*1000);
+				bitforce->wait_ms += WORK_CHECK_INTERVAL_MS;
+				if (work_restart[thr->id].restart) {
+					applog(LOG_DEBUG, "BFL%i: Work restart, discarding after %dms", bitforce->device_id, bitforce->wait_ms);
+					return 1; //we have discarded all work; equivilent to 0 hashes done.
+				}
 			}
+		} else {
+			usleep(bitforce->sleep_ms*1000);
+			bitforce->wait_ms = bitforce->sleep_ms;
 		}
 		ret = bitforce_get_result(thr, work);
 	}