|
|
@ -2021,7 +2021,7 @@ int _usb_read(struct cgpu_info *cgpu, int ep, char *buf, size_t bufsiz, int *pro |
|
|
|
struct timeval tv_start; |
|
|
|
struct timeval tv_start; |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
struct timeval read_start, tv_finish; |
|
|
|
struct timeval read_start, tv_finish; |
|
|
|
unsigned int initial_timeout, half_time; |
|
|
|
unsigned int initial_timeout, sleep_time; |
|
|
|
double max, done; |
|
|
|
double max, done; |
|
|
|
int bufleft, err, got, tot; |
|
|
|
int bufleft, err, got, tot; |
|
|
|
__maybe_unused bool first = true; |
|
|
|
__maybe_unused bool first = true; |
|
|
@ -2056,7 +2056,7 @@ int _usb_read(struct cgpu_info *cgpu, int ep, char *buf, size_t bufsiz, int *pro |
|
|
|
bufleft = bufsiz; |
|
|
|
bufleft = bufsiz; |
|
|
|
err = LIBUSB_SUCCESS; |
|
|
|
err = LIBUSB_SUCCESS; |
|
|
|
initial_timeout = timeout; |
|
|
|
initial_timeout = timeout; |
|
|
|
half_time = initial_timeout / 2; |
|
|
|
sleep_time = initial_timeout / 2; |
|
|
|
max = ((double)timeout) / 1000.0; |
|
|
|
max = ((double)timeout) / 1000.0; |
|
|
|
cgtime(&read_start); |
|
|
|
cgtime(&read_start); |
|
|
|
while (bufleft > 0) { |
|
|
|
while (bufleft > 0) { |
|
|
@ -2110,9 +2110,11 @@ int _usb_read(struct cgpu_info *cgpu, int ep, char *buf, size_t bufsiz, int *pro |
|
|
|
* if we don't sleep here, but do it only if we're not |
|
|
|
* if we don't sleep here, but do it only if we're not |
|
|
|
* receiving any data. */ |
|
|
|
* receiving any data. */ |
|
|
|
timeout = initial_timeout - (done * 1000); |
|
|
|
timeout = initial_timeout - (done * 1000); |
|
|
|
if (!got && half_time && timeout > half_time) { |
|
|
|
if (!got && sleep_time) { |
|
|
|
timeout -= half_time; |
|
|
|
if (timeout <= sleep_time) |
|
|
|
nmsleep(half_time); |
|
|
|
sleep_time = timeout - 1; |
|
|
|
|
|
|
|
timeout -= sleep_time; |
|
|
|
|
|
|
|
nmsleep(sleep_time); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -2131,7 +2133,7 @@ int _usb_read(struct cgpu_info *cgpu, int ep, char *buf, size_t bufsiz, int *pro |
|
|
|
endlen = strlen(end); |
|
|
|
endlen = strlen(end); |
|
|
|
err = LIBUSB_SUCCESS; |
|
|
|
err = LIBUSB_SUCCESS; |
|
|
|
initial_timeout = timeout; |
|
|
|
initial_timeout = timeout; |
|
|
|
half_time = initial_timeout / 2; |
|
|
|
sleep_time = initial_timeout / 2; |
|
|
|
max = ((double)timeout) / 1000.0; |
|
|
|
max = ((double)timeout) / 1000.0; |
|
|
|
cgtime(&read_start); |
|
|
|
cgtime(&read_start); |
|
|
|
while (bufleft > 0) { |
|
|
|
while (bufleft > 0) { |
|
|
@ -2198,9 +2200,11 @@ int _usb_read(struct cgpu_info *cgpu, int ep, char *buf, size_t bufsiz, int *pro |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
timeout = initial_timeout - (done * 1000); |
|
|
|
timeout = initial_timeout - (done * 1000); |
|
|
|
if (!got && half_time && timeout > half_time) { |
|
|
|
if (!got && sleep_time) { |
|
|
|
timeout -= half_time; |
|
|
|
if (timeout <= sleep_time) |
|
|
|
nmsleep(half_time); |
|
|
|
sleep_time = timeout - 1; |
|
|
|
|
|
|
|
timeout -= sleep_time; |
|
|
|
|
|
|
|
nmsleep(sleep_time); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|