|
|
@ -368,7 +368,7 @@ static int64_t knc_process_response(struct thr_info *thr, struct cgpu_info *cgpu |
|
|
|
struct knc_state *knc = cgpu->knc_state; |
|
|
|
struct knc_state *knc = cgpu->knc_state; |
|
|
|
struct work *work; |
|
|
|
struct work *work; |
|
|
|
int64_t us; |
|
|
|
int64_t us; |
|
|
|
int submitted, completed, i, num_sent; |
|
|
|
int submitted, successful, i, num_sent; |
|
|
|
int next_read_q, next_read_a; |
|
|
|
int next_read_q, next_read_a; |
|
|
|
struct timeval now; |
|
|
|
struct timeval now; |
|
|
|
|
|
|
|
|
|
|
@ -411,7 +411,7 @@ static int64_t knc_process_response(struct thr_info *thr, struct cgpu_info *cgpu |
|
|
|
|
|
|
|
|
|
|
|
/* check for completed works and calculated nonces */ |
|
|
|
/* check for completed works and calculated nonces */ |
|
|
|
gettimeofday(&now, NULL); |
|
|
|
gettimeofday(&now, NULL); |
|
|
|
completed = 0; |
|
|
|
successful = 0; |
|
|
|
for (i = 0; i < (int)MAX_RESPONSES_IN_BATCH; ++i) |
|
|
|
for (i = 0; i < (int)MAX_RESPONSES_IN_BATCH; ++i) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if ( (rxbuf->responses[i].type != RESPONSE_TYPE_NONCE_FOUND) && |
|
|
|
if ( (rxbuf->responses[i].type != RESPONSE_TYPE_NONCE_FOUND) && |
|
|
@ -470,6 +470,7 @@ static int64_t knc_process_response(struct thr_info *thr, struct cgpu_info *cgpu |
|
|
|
knc->disa_cnt[cidx] = 0; |
|
|
|
knc->disa_cnt[cidx] = 0; |
|
|
|
knc->hwerr_work_id[cidx] = 0xFFFFFFFF; |
|
|
|
knc->hwerr_work_id[cidx] = 0xFFFFFFFF; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
successful++; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
if ((cidx < (int)sizeof(knc->hwerrs)) && |
|
|
|
if ((cidx < (int)sizeof(knc->hwerrs)) && |
|
|
|
(knc->hwerr_work_id[cidx] != rxbuf->responses[i].work_id)) { |
|
|
|
(knc->hwerr_work_id[cidx] != rxbuf->responses[i].work_id)) { |
|
|
@ -505,10 +506,9 @@ static int64_t knc_process_response(struct thr_info *thr, struct cgpu_info *cgpu |
|
|
|
&(knc->active_fifo[knc->read_a]), |
|
|
|
&(knc->active_fifo[knc->read_a]), |
|
|
|
sizeof(struct active_work)); |
|
|
|
sizeof(struct active_work)); |
|
|
|
knc->active_fifo[knc->read_a].work = NULL; |
|
|
|
knc->active_fifo[knc->read_a].work = NULL; |
|
|
|
++completed; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return ((uint64_t)completed) * 0x100000000UL; |
|
|
|
return ((uint64_t)successful) * 0x100000000UL; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* Send flush command via SPI */ |
|
|
|
/* Send flush command via SPI */ |
|
|
|