Browse Source

Limit rolltime work generation to 10 iterations only.

Con Kolivas 14 years ago
parent
commit
ec86da70e1
2 changed files with 9 additions and 2 deletions
  1. 7 1
      main.c
  2. 2 1
      miner.h

+ 7 - 1
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;
 	}
 

+ 2 - 1
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;