Browse Source

If shares are known stale, don't use them to decide to disable a pool for sequential rejects.

Con Kolivas 13 years ago
parent
commit
85210ee7a8
2 changed files with 7 additions and 2 deletions
  1. 5 2
      cgminer.c
  2. 2 0
      miner.h

+ 5 - 2
cgminer.c

@@ -1725,8 +1725,10 @@ static bool submit_upstream_work(const struct work *work, CURL *curl)
 		/* Once we have more than a nominal amount of sequential rejects,
 		 * at least 10 and more than 3 mins at the current utility,
 		 * disable the pool because some pool error is likely to have
-		 * ensued. */
-		if (pool->seq_rejects > 10 && opt_disable_pool && total_pools > 1) {
+		 * ensued. Do not do this if we know the share just happened to
+		 * be stale due to networking delays.
+		 */
+		if (pool->seq_rejects > 10 && !work->stale && opt_disable_pool && total_pools > 1) {
 			double utility = total_accepted / ( total_secs ? total_secs : 1 ) * 60;
 
 			if (pool->seq_rejects > utility * 3) {
@@ -2161,6 +2163,7 @@ static void *submit_work_thread(void *userdata)
 			pool->stale_shares++;
 			goto out;
 		}
+		work->stale = true;
 	}
 
 	ce = pop_curl_entry(pool);

+ 2 - 0
miner.h

@@ -716,11 +716,13 @@ struct work {
 	int		thr_id;
 	struct pool	*pool;
 	struct timeval	tv_staged;
+
 	bool		mined;
 	bool		clone;
 	bool		cloned;
 	bool		rolltime;
 	bool		longpoll;
+	bool		stale;
 
 	unsigned int	work_block;
 	int		id;