Fix jlink usb_bulk_with_retries to return actual error codes.
git-svn-id: svn://svn.berlios.de/openocd/trunk@1564 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
parent
5ee99a7e80
commit
ae719b2706
|
@ -31,6 +31,7 @@
|
||||||
|
|
||||||
#include <usb.h>
|
#include <usb.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
|
@ -867,21 +868,17 @@ static int usb_bulk_with_retries(
|
||||||
usb_dev_handle *dev, int ep,
|
usb_dev_handle *dev, int ep,
|
||||||
char *bytes, int size, int timeout)
|
char *bytes, int size, int timeout)
|
||||||
{
|
{
|
||||||
int rc = 0, tries = 3, this_size;
|
int tries = 3, count = 0;
|
||||||
|
|
||||||
while (tries && size) {
|
while (tries && (count < size))
|
||||||
|
{
|
||||||
this_size = f(dev, ep, bytes, size, timeout);
|
int result = f(dev, ep, bytes + count, size - count, timeout);
|
||||||
if (this_size > 0) {
|
if (result > 0)
|
||||||
|
count += result;
|
||||||
size -= this_size;
|
else if ((-ETIMEDOUT != result) || !--tries)
|
||||||
rc += this_size;
|
return result;
|
||||||
bytes += this_size;
|
|
||||||
|
|
||||||
} else
|
|
||||||
tries --;
|
|
||||||
}
|
}
|
||||||
return rc;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int wrap_usb_bulk_write(usb_dev_handle *dev, int ep,
|
static int wrap_usb_bulk_write(usb_dev_handle *dev, int ep,
|
||||||
|
|
Loading…
Reference in New Issue