Commit ec86da70e13a8ed13232769292a1cfeb0521b961

Con Kolivas 2011-07-22T20:06:06

Limit rolltime work generation to 10 iterations only.

diff --git a/main.c b/main.c
index a97f60c..9a21a3b 100644
--- a/main.c
+++ b/main.c
@@ -2034,6 +2034,11 @@ static void flush_requests(void)
 	}
 }
 
+static inline bool can_roll(struct work *work)
+{
+	return (!stale_work(work) && work->pool->has_rolltime && work->rolls < 11);
+}
+
 static bool get_work(struct work *work, bool queued, struct thr_info *thr,
 		     const int thr_id)
 {
@@ -2054,7 +2059,7 @@ retry:
 		goto out;
 	}
 
-	if (!requests_staged() && !stale_work(work) && work->pool->has_rolltime) {
+	if (!requests_staged() && can_roll(work)) {
 		uint32_t *work_ntime;
 		uint32_t ntime;
 
@@ -2084,6 +2089,7 @@ retry:
 		*work_ntime = htobe32(ntime);
 		ret = true;
 		local_work++;
+		work->rolls++;
 		goto out;
 	}
 
diff --git a/miner.h b/miner.h
index abbb700..b5b7e3e 100644
--- a/miner.h
+++ b/miner.h
@@ -293,9 +293,10 @@ struct work {
 	unsigned char	hash1[64];
 	unsigned char	midstate[32];
 	unsigned char	target[32];
-
 	unsigned char	hash[32];
 
+	int		rolls;
+
 	uint32_t	output[1];
 	uint32_t	res_nonce;
 	uint32_t	valid;