|
|
@ -199,7 +199,6 @@ typedef struct jobque { |
|
|
|
} JOBQUE; |
|
|
|
} JOBQUE; |
|
|
|
|
|
|
|
|
|
|
|
struct klondike_info { |
|
|
|
struct klondike_info { |
|
|
|
bool shutdown; |
|
|
|
|
|
|
|
pthread_rwlock_t stat_lock; |
|
|
|
pthread_rwlock_t stat_lock; |
|
|
|
struct thr_info replies_thr; |
|
|
|
struct thr_info replies_thr; |
|
|
|
cglock_t klist_lock; |
|
|
|
cglock_t klist_lock; |
|
|
@ -540,7 +539,7 @@ static KLIST *GetReply(struct cgpu_info *klncgpu, uint8_t cmd, uint8_t dev) |
|
|
|
KLIST *kitem; |
|
|
|
KLIST *kitem; |
|
|
|
int retries = CMD_REPLY_RETRIES; |
|
|
|
int retries = CMD_REPLY_RETRIES; |
|
|
|
|
|
|
|
|
|
|
|
while (retries-- > 0 && klninfo->shutdown == false) { |
|
|
|
while (retries-- > 0 && klncgpu->shutdown == false) { |
|
|
|
cgsleep_ms(REPLY_WAIT_TIME); |
|
|
|
cgsleep_ms(REPLY_WAIT_TIME); |
|
|
|
cg_rlock(&klninfo->klist_lock); |
|
|
|
cg_rlock(&klninfo->klist_lock); |
|
|
|
kitem = klninfo->used; |
|
|
|
kitem = klninfo->used; |
|
|
@ -953,7 +952,7 @@ static void *klondike_get_replies(void *userdata) |
|
|
|
applog(LOG_DEBUG, "%s%i: listening for replies", |
|
|
|
applog(LOG_DEBUG, "%s%i: listening for replies", |
|
|
|
klncgpu->drv->name, klncgpu->device_id); |
|
|
|
klncgpu->drv->name, klncgpu->device_id); |
|
|
|
|
|
|
|
|
|
|
|
while (klninfo->shutdown == false) { |
|
|
|
while (klncgpu->shutdown == false) { |
|
|
|
if (klncgpu->usbinfo.nodev) |
|
|
|
if (klncgpu->usbinfo.nodev) |
|
|
|
return NULL; |
|
|
|
return NULL; |
|
|
|
|
|
|
|
|
|
|
@ -1028,7 +1027,7 @@ static void *klondike_get_replies(void *userdata) |
|
|
|
dev, (char)(kitem->kline.ws.cmd), |
|
|
|
dev, (char)(kitem->kline.ws.cmd), |
|
|
|
(int)(kitem->kline.ws.slavecount), |
|
|
|
(int)(kitem->kline.ws.slavecount), |
|
|
|
slaves); |
|
|
|
slaves); |
|
|
|
klninfo->shutdown = true; |
|
|
|
klncgpu->shutdown = true; |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -1054,7 +1053,7 @@ static void *klondike_get_replies(void *userdata) |
|
|
|
klncgpu->drv->name, |
|
|
|
klncgpu->drv->name, |
|
|
|
klncgpu->device_id, |
|
|
|
klncgpu->device_id, |
|
|
|
dev); |
|
|
|
dev); |
|
|
|
klninfo->shutdown = true; |
|
|
|
klncgpu->shutdown = true; |
|
|
|
} |
|
|
|
} |
|
|
|
kln_disable(klncgpu, dev, false); |
|
|
|
kln_disable(klncgpu, dev, false); |
|
|
|
} |
|
|
|
} |
|
|
@ -1157,7 +1156,7 @@ static void klondike_shutdown(struct thr_info *thr) |
|
|
|
|
|
|
|
|
|
|
|
kln_disable(klncgpu, klninfo->status[0].kline.ws.slavecount, true); |
|
|
|
kln_disable(klncgpu, klninfo->status[0].kline.ws.slavecount, true); |
|
|
|
|
|
|
|
|
|
|
|
klncgpu->shutdown = klninfo->shutdown = true; |
|
|
|
klncgpu->shutdown = true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static void klondike_thread_enable(struct thr_info *thr) |
|
|
|
static void klondike_thread_enable(struct thr_info *thr) |
|
|
@ -1272,7 +1271,7 @@ static bool klondike_queue_full(struct cgpu_info *klncgpu) |
|
|
|
rd_unlock(&(klninfo->stat_lock)); |
|
|
|
rd_unlock(&(klninfo->stat_lock)); |
|
|
|
applog(LOG_ERR, "%s%i:%d reset failed - dropping device", |
|
|
|
applog(LOG_ERR, "%s%i:%d reset failed - dropping device", |
|
|
|
klncgpu->drv->name, klncgpu->device_id, dev); |
|
|
|
klncgpu->drv->name, klncgpu->device_id, dev); |
|
|
|
klninfo->shutdown = true; |
|
|
|
klncgpu->shutdown = true; |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
break; |
|
|
@ -1360,7 +1359,11 @@ static int64_t klondike_scanwork(struct thr_info *thr) |
|
|
|
klninfo->noncecount = 0; |
|
|
|
klninfo->noncecount = 0; |
|
|
|
rd_unlock(&(klninfo->stat_lock)); |
|
|
|
rd_unlock(&(klninfo->stat_lock)); |
|
|
|
} |
|
|
|
} |
|
|
|
return newhashcount; |
|
|
|
|
|
|
|
|
|
|
|
if (klncgpu->shutdown) |
|
|
|
|
|
|
|
return -1; |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
return newhashcount; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|