Browse Source

Revert "Check for the async variants of the libusb errors and retry up to retry max when trying to clear a pipe error/stall."

This reverts commit c7d5256b36.
nfactor-troky
Con Kolivas 11 years ago
parent
commit
08406274ea
  1. 15
      usbutils.c

15
usbutils.c

@ -20,10 +20,7 @@
#define NODEV(err) ((err) == LIBUSB_ERROR_NO_DEVICE || \ #define NODEV(err) ((err) == LIBUSB_ERROR_NO_DEVICE || \
(err) == LIBUSB_ERROR_PIPE || \ (err) == LIBUSB_ERROR_PIPE || \
(err) == LIBUSB_ERROR_OTHER || \ (err) == LIBUSB_ERROR_OTHER)
(err) == LIBUSB_TRANSFER_NO_DEVICE || \
(err) == LIBUSB_TRANSFER_STALL || \
(err) == LIBUSB_TRANSFER_ERROR)
#define NOCONTROLDEV(err) ((err) == LIBUSB_ERROR_NO_DEVICE || \ #define NOCONTROLDEV(err) ((err) == LIBUSB_ERROR_NO_DEVICE || \
(err) == LIBUSB_ERROR_OTHER) (err) == LIBUSB_ERROR_OTHER)
@ -2268,10 +2265,10 @@ usb_bulk_transfer(struct libusb_device_handle *dev_handle, int intinfo,
enum usb_cmds cmd, __maybe_unused int seq) enum usb_cmds cmd, __maybe_unused int seq)
{ {
struct usb_epinfo *usb_epinfo; struct usb_epinfo *usb_epinfo;
int err, errn, retries = 0;
struct usb_transfer ut; struct usb_transfer ut;
unsigned char endpoint; unsigned char endpoint;
uint16_t MaxPacketSize; uint16_t MaxPacketSize;
int err, errn;
#if DO_USB_STATS #if DO_USB_STATS
struct timeval tv_start, tv_finish; struct timeval tv_start, tv_finish;
#endif #endif
@ -2298,7 +2295,6 @@ usb_bulk_transfer(struct libusb_device_handle *dev_handle, int intinfo,
libusb_fill_bulk_transfer(ut.transfer, dev_handle, endpoint, buf, length, libusb_fill_bulk_transfer(ut.transfer, dev_handle, endpoint, buf, length,
bulk_callback, &ut, timeout); bulk_callback, &ut, timeout);
retry:
STATS_TIMEVAL(&tv_start); STATS_TIMEVAL(&tv_start);
cg_rlock(&cgusb_fd_lock); cg_rlock(&cgusb_fd_lock);
err = libusb_submit_transfer(ut.transfer); err = libusb_submit_transfer(ut.transfer);
@ -2310,13 +2306,12 @@ retry:
STATS_TIMEVAL(&tv_finish); STATS_TIMEVAL(&tv_finish);
USB_STATS(cgpu, &tv_start, &tv_finish, err, mode, cmd, seq, timeout); USB_STATS(cgpu, &tv_start, &tv_finish, err, mode, cmd, seq, timeout);
if (err < 0) { if (err < 0)
applog(LOG_DEBUG, "%s%i: %s (amt=%d err=%d ern=%d)", applog(LOG_DEBUG, "%s%i: %s (amt=%d err=%d ern=%d)",
cgpu->drv->name, cgpu->device_id, cgpu->drv->name, cgpu->device_id,
usb_cmdname(cmd), *transferred, err, errn); usb_cmdname(cmd), *transferred, err, errn);
}
if ((err == LIBUSB_ERROR_PIPE || err == LIBUSB_TRANSFER_STALL) && ++retries < USB_RETRY_MAX) { if (err == LIBUSB_ERROR_PIPE || err == LIBUSB_TRANSFER_STALL) {
cgpu->usbinfo.last_pipe = time(NULL); cgpu->usbinfo.last_pipe = time(NULL);
cgpu->usbinfo.pipe_count++; cgpu->usbinfo.pipe_count++;
applog(LOG_INFO, "%s%i: libusb pipe error, trying to clear", applog(LOG_INFO, "%s%i: libusb pipe error, trying to clear",
@ -2327,8 +2322,6 @@ retry:
if (err) if (err)
cgpu->usbinfo.clear_fail_count++; cgpu->usbinfo.clear_fail_count++;
else
goto retry;
} }
if ((endpoint & LIBUSB_ENDPOINT_DIR_MASK) == LIBUSB_ENDPOINT_IN) if ((endpoint & LIBUSB_ENDPOINT_DIR_MASK) == LIBUSB_ENDPOINT_IN)
memcpy(data, buf, length); memcpy(data, buf, length);

Loading…
Cancel
Save