|
@@ -562,10 +562,16 @@ static ssize_t usbtmc_write(struct file *filp, const char __user *buf,
|
|
|
n_bytes = roundup(12 + this_part, 4);
|
|
|
memset(buffer + 12 + this_part, 0, n_bytes - (12 + this_part));
|
|
|
|
|
|
- retval = usb_bulk_msg(data->usb_dev,
|
|
|
- usb_sndbulkpipe(data->usb_dev,
|
|
|
- data->bulk_out),
|
|
|
- buffer, n_bytes, &actual, USBTMC_TIMEOUT);
|
|
|
+ do {
|
|
|
+ retval = usb_bulk_msg(data->usb_dev,
|
|
|
+ usb_sndbulkpipe(data->usb_dev,
|
|
|
+ data->bulk_out),
|
|
|
+ buffer, n_bytes,
|
|
|
+ &actual, USBTMC_TIMEOUT);
|
|
|
+ if (retval != 0)
|
|
|
+ break;
|
|
|
+ n_bytes -= actual;
|
|
|
+ } while (n_bytes);
|
|
|
|
|
|
data->bTag_last_write = data->bTag;
|
|
|
data->bTag++;
|