Browse Source

Merge branch 'master' into async

Conflicts:
	api.c
	cgminer.c
	miner.h
	usbutils.c
	util.c
nfactor-troky
Con Kolivas 11 years ago
parent
commit
f80c900336
  1. 1
      api.c
  2. 21
      cgminer.c
  3. 2
      usbutils.c

1
api.c

@ -3089,6 +3089,7 @@ static int itemstats(struct io_data *io_data, int i, char *id, struct cgminer_st
if (cgpu) { if (cgpu) {
#ifdef USE_USBUTILS #ifdef USE_USBUTILS
char details[256]; char details[256];
int val;
if (cgpu->usbinfo.pipe_count) if (cgpu->usbinfo.pipe_count)
snprintf(details, sizeof(details), snprintf(details, sizeof(details),

21
cgminer.c

@ -5786,10 +5786,9 @@ out:
static void pool_resus(struct pool *pool) static void pool_resus(struct pool *pool)
{ {
if (pool_strategy == POOL_FAILOVER && pool->prio < cp_prio()) { if (pool_strategy == POOL_FAILOVER && pool->prio < cp_prio())
applog(LOG_WARNING, "Pool %d %s alive", pool->pool_no, pool->rpc_url); applog(LOG_WARNING, "Pool %d %s alive, testing stability", pool->pool_no, pool->rpc_url);
switch_pools(NULL); else
} else
applog(LOG_INFO, "Pool %d %s alive", pool->pool_no, pool->rpc_url); applog(LOG_INFO, "Pool %d %s alive", pool->pool_no, pool->rpc_url);
} }
@ -6867,8 +6866,21 @@ static void *watchpool_thread(void __maybe_unused *userdata)
if (pool_active(pool, true) && pool_tclear(pool, &pool->idle)) if (pool_active(pool, true) && pool_tclear(pool, &pool->idle))
pool_resus(pool); pool_resus(pool);
} }
/* Only switch pools if the failback pool has been
* alive for more than 5 minutes to prevent
* intermittently failing pools from being used. */
if (!pool->idle && pool_strategy == POOL_FAILOVER && pool->prio < cp_prio() &&
now.tv_sec - pool->tv_idle.tv_sec > 300) {
applog(LOG_WARNING, "Pool %d %s stable for 5 mins",
pool->pool_no, pool->rpc_url);
switch_pools(NULL);
}
} }
if (current_pool()->idle)
switch_pools(NULL);
if (pool_strategy == POOL_ROTATE && now.tv_sec - rotate_tv.tv_sec > 60 * opt_rotate_period) { if (pool_strategy == POOL_ROTATE && now.tv_sec - rotate_tv.tv_sec > 60 * opt_rotate_period) {
cgtime(&rotate_tv); cgtime(&rotate_tv);
switch_pools(NULL); switch_pools(NULL);
@ -7232,6 +7244,7 @@ static void *test_pool_thread(void *arg)
applog(LOG_NOTICE, "Switching to pool %d %s - first alive pool", pool->pool_no, pool->rpc_url); applog(LOG_NOTICE, "Switching to pool %d %s - first alive pool", pool->pool_no, pool->rpc_url);
pool_resus(pool); pool_resus(pool);
switch_pools(NULL);
} else } else
pool_died(pool); pool_died(pool);

2
usbutils.c

@ -2345,6 +2345,7 @@ int _usb_read(struct cgpu_info *cgpu, int intinfo, int epinfo, char *buf, size_t
int endlen; int endlen;
unsigned char *ptr, *usbbuf = cgpu->usbinfo.bulkbuf; unsigned char *ptr, *usbbuf = cgpu->usbinfo.bulkbuf;
size_t usbbufread; size_t usbbufread;
int lock_wait;
DEVRLOCK(cgpu, pstate); DEVRLOCK(cgpu, pstate);
@ -2619,6 +2620,7 @@ int _usb_write(struct cgpu_info *cgpu, int intinfo, int epinfo, char *buf, size_
double max, done; double max, done;
__maybe_unused bool first = true; __maybe_unused bool first = true;
int err, sent, tot, pstate; int err, sent, tot, pstate;
int lock_wait;
DEVRLOCK(cgpu, pstate); DEVRLOCK(cgpu, pstate);

Loading…
Cancel
Save