Revision 6ef3ccd1
b/hw/usb/redirect.c | ||
---|---|---|
737 | 737 |
uint8_t ep) |
738 | 738 |
{ |
739 | 739 |
struct usb_redir_bulk_packet_header bulk_packet; |
740 |
size_t size = (p->combined) ? p->combined->iov.size : p->iov.size;
|
|
740 |
size_t size = usb_packet_size(p);
|
|
741 | 741 |
const int maxp = dev->endpoint[EP2I(ep)].max_packet_size; |
742 | 742 |
|
743 | 743 |
if (usbredir_already_in_flight(dev, p->id)) { |
... | ... | |
771 | 771 |
&bulk_packet, NULL, 0); |
772 | 772 |
} else { |
773 | 773 |
uint8_t buf[size]; |
774 |
if (p->combined) { |
|
775 |
iov_to_buf(p->combined->iov.iov, p->combined->iov.niov, |
|
776 |
0, buf, size); |
|
777 |
} else { |
|
778 |
usb_packet_copy(p, buf, size); |
|
779 |
} |
|
774 |
usb_packet_copy(p, buf, size); |
|
780 | 775 |
usbredir_log_data(dev, "bulk data out:", buf, size); |
781 | 776 |
usbredirparser_send_bulk_packet(dev->parser, p->id, |
782 | 777 |
&bulk_packet, buf, size); |
... | ... | |
1830 | 1825 |
|
1831 | 1826 |
p = usbredir_find_packet_by_id(dev, ep, id); |
1832 | 1827 |
if (p) { |
1833 |
size_t size = (p->combined) ? p->combined->iov.size : p->iov.size;
|
|
1828 |
size_t size = usb_packet_size(p);
|
|
1834 | 1829 |
usbredir_handle_status(dev, p, bulk_packet->status); |
1835 | 1830 |
if (data_len > 0) { |
1836 | 1831 |
usbredir_log_data(dev, "bulk data in:", data, data_len); |
... | ... | |
1840 | 1835 |
p->status = USB_RET_BABBLE; |
1841 | 1836 |
data_len = len = size; |
1842 | 1837 |
} |
1843 |
if (p->combined) { |
|
1844 |
iov_from_buf(p->combined->iov.iov, p->combined->iov.niov, |
|
1845 |
0, data, data_len); |
|
1846 |
} else { |
|
1847 |
usb_packet_copy(p, data, data_len); |
|
1848 |
} |
|
1838 |
usb_packet_copy(p, data, data_len); |
|
1849 | 1839 |
} |
1850 | 1840 |
p->actual_length = len; |
1851 | 1841 |
if (p->pid == USB_TOKEN_IN && p->ep->pipeline) { |
Also available in: Unified diff