|
@@ -337,7 +337,7 @@ void bitforce_comm_error(struct thr_info *thr)
|
|
|
data->noncebuf[0] = '\0';
|
|
data->noncebuf[0] = '\0';
|
|
|
applog(LOG_ERR, "%"PRIpreprv": Comms error", bitforce->proc_repr);
|
|
applog(LOG_ERR, "%"PRIpreprv": Comms error", bitforce->proc_repr);
|
|
|
dev_error(bitforce, REASON_DEV_COMMS_ERROR);
|
|
dev_error(bitforce, REASON_DEV_COMMS_ERROR);
|
|
|
- inc_hw_errors(thr);
|
|
|
|
|
|
|
+ inc_hw_errors_only(thr);
|
|
|
BFclose(*p_fdDev);
|
|
BFclose(*p_fdDev);
|
|
|
int fd = *p_fdDev = BFopen(bitforce->device_path);
|
|
int fd = *p_fdDev = BFopen(bitforce->device_path);
|
|
|
if (fd == -1)
|
|
if (fd == -1)
|
|
@@ -590,7 +590,7 @@ static bool bitforce_get_temp(struct cgpu_info *bitforce)
|
|
|
if (unlikely(!pdevbuf[0])) {
|
|
if (unlikely(!pdevbuf[0])) {
|
|
|
struct thr_info *thr = bitforce->thr[0];
|
|
struct thr_info *thr = bitforce->thr[0];
|
|
|
applog(LOG_ERR, "%"PRIpreprv": Error: Get temp returned empty string/timed out", bitforce->proc_repr);
|
|
applog(LOG_ERR, "%"PRIpreprv": Error: Get temp returned empty string/timed out", bitforce->proc_repr);
|
|
|
- inc_hw_errors(thr);
|
|
|
|
|
|
|
+ inc_hw_errors_only(thr);
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -623,7 +623,7 @@ static bool bitforce_get_temp(struct cgpu_info *bitforce)
|
|
|
applog(LOG_WARNING, "%"PRIpreprv": Garbled response probably throttling, clearing buffer", bitforce->proc_repr);
|
|
applog(LOG_WARNING, "%"PRIpreprv": Garbled response probably throttling, clearing buffer", bitforce->proc_repr);
|
|
|
dev_error(bitforce, REASON_DEV_THROTTLE);
|
|
dev_error(bitforce, REASON_DEV_THROTTLE);
|
|
|
/* Count throttling episodes as hardware errors */
|
|
/* Count throttling episodes as hardware errors */
|
|
|
- inc_hw_errors(thr);
|
|
|
|
|
|
|
+ inc_hw_errors_only(thr);
|
|
|
bitforce_clear_buffer(bitforce);
|
|
bitforce_clear_buffer(bitforce);
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
@@ -1034,7 +1034,7 @@ noqr:
|
|
|
applog(LOG_ERR, "%"PRIpreprv": took %lums - longer than %lums", bitforce->proc_repr,
|
|
applog(LOG_ERR, "%"PRIpreprv": took %lums - longer than %lums", bitforce->proc_repr,
|
|
|
tv_to_ms(elapsed), (unsigned long)BITFORCE_TIMEOUT_MS);
|
|
tv_to_ms(elapsed), (unsigned long)BITFORCE_TIMEOUT_MS);
|
|
|
dev_error(bitforce, REASON_DEV_OVER_HEAT);
|
|
dev_error(bitforce, REASON_DEV_OVER_HEAT);
|
|
|
- inc_hw_errors(thr);
|
|
|
|
|
|
|
+ inc_hw_errors_only(thr);
|
|
|
|
|
|
|
|
/* If the device truly throttled, it didn't process the job and there
|
|
/* If the device truly throttled, it didn't process the job and there
|
|
|
* are no results. But check first, just in case we're wrong about it
|
|
* are no results. But check first, just in case we're wrong about it
|
|
@@ -1090,7 +1090,7 @@ noqr:
|
|
|
|
|
|
|
|
applog(LOG_DEBUG, "%"PRIpreprv": waited %dms until %s", bitforce->proc_repr, bitforce->wait_ms, pdevbuf);
|
|
applog(LOG_DEBUG, "%"PRIpreprv": waited %dms until %s", bitforce->proc_repr, bitforce->wait_ms, pdevbuf);
|
|
|
if (count < 0 && strncasecmp(pdevbuf, "I", 1)) {
|
|
if (count < 0 && strncasecmp(pdevbuf, "I", 1)) {
|
|
|
- inc_hw_errors(thr);
|
|
|
|
|
|
|
+ inc_hw_errors_only(thr);
|
|
|
applog(LOG_WARNING, "%"PRIpreprv": Error: Get result reports: %s", bitforce->proc_repr, pdevbuf);
|
|
applog(LOG_WARNING, "%"PRIpreprv": Error: Get result reports: %s", bitforce->proc_repr, pdevbuf);
|
|
|
bitforce_clear_buffer(bitforce);
|
|
bitforce_clear_buffer(bitforce);
|
|
|
}
|
|
}
|
|
@@ -1160,7 +1160,7 @@ void bitforce_process_qresult_line(struct thr_info *thr, char *buf, struct work
|
|
|
|| bitforce_process_qresult_line_i(thr, midstate, datatail, buf, thr->next_work) ))
|
|
|| bitforce_process_qresult_line_i(thr, midstate, datatail, buf, thr->next_work) ))
|
|
|
{
|
|
{
|
|
|
applog(LOG_ERR, "%"PRIpreprv": Failed to find work for queued results", bitforce->proc_repr);
|
|
applog(LOG_ERR, "%"PRIpreprv": Failed to find work for queued results", bitforce->proc_repr);
|
|
|
- inc_hw_errors(thr);
|
|
|
|
|
|
|
+ inc_hw_errors_only(thr);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -1562,7 +1562,7 @@ bool bitforce_queue_do_results(struct thr_info *thr)
|
|
|
if (unlikely(count < 0))
|
|
if (unlikely(count < 0))
|
|
|
{
|
|
{
|
|
|
applog(LOG_ERR, "%"PRIpreprv": Received unexpected queue result response: %s", bitforce->proc_repr, noncebuf);
|
|
applog(LOG_ERR, "%"PRIpreprv": Received unexpected queue result response: %s", bitforce->proc_repr, noncebuf);
|
|
|
- inc_hw_errors(thr);
|
|
|
|
|
|
|
+ inc_hw_errors_only(thr);
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -1615,7 +1615,7 @@ bool bitforce_queue_do_results(struct thr_info *thr)
|
|
|
if (unlikely(!thiswork))
|
|
if (unlikely(!thiswork))
|
|
|
{
|
|
{
|
|
|
applog(LOG_ERR, "%"PRIpreprv": Failed to find work for queue results: %s", chip_cgpu->proc_repr, buf);
|
|
applog(LOG_ERR, "%"PRIpreprv": Failed to find work for queue results: %s", chip_cgpu->proc_repr, buf);
|
|
|
- inc_hw_errors(chip_thr);
|
|
|
|
|
|
|
+ inc_hw_errors_only(chip_thr);
|
|
|
goto next_qline;
|
|
goto next_qline;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -1726,7 +1726,7 @@ bool bitforce_queue_append(struct thr_info *thr, struct work *work)
|
|
|
{
|
|
{
|
|
|
// Problem sending queue, retry again in a few seconds
|
|
// Problem sending queue, retry again in a few seconds
|
|
|
applog(LOG_ERR, "%"PRIpreprv": Failed to send queue", bitforce->proc_repr);
|
|
applog(LOG_ERR, "%"PRIpreprv": Failed to send queue", bitforce->proc_repr);
|
|
|
- inc_hw_errors(thr);
|
|
|
|
|
|
|
+ inc_hw_errors_only(thr);
|
|
|
data->want_to_send_queue = true;
|
|
data->want_to_send_queue = true;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -1872,7 +1872,7 @@ void bitforce_queue_poll(struct thr_info *thr)
|
|
|
if (!data->queued)
|
|
if (!data->queued)
|
|
|
{
|
|
{
|
|
|
applog(LOG_ERR, "%"PRIpreprv": Failed to send queue, and queue empty; retrying after 1 second", bitforce->proc_repr);
|
|
applog(LOG_ERR, "%"PRIpreprv": Failed to send queue, and queue empty; retrying after 1 second", bitforce->proc_repr);
|
|
|
- inc_hw_errors(thr);
|
|
|
|
|
|
|
+ inc_hw_errors_only(thr);
|
|
|
sleep_us = 1000000;
|
|
sleep_us = 1000000;
|
|
|
}
|
|
}
|
|
|
|
|
|