forked from luck/tmp_suning_uos_patched
staging: usbip: bugfix add number of packets for isochronous frames
The number_of_packets was not transmitted for RET_SUBMIT packets. The linux client used the stored number_of_packet from the submitted request. The windows userland client does not do this however and needs to know the number_of_packets to determine the size of the transmission. Signed-off-by: Arjan Mels <arjan.mels@gmx.net> Cc: Takahiro Hirofuchi <hirofuchi@users.sourceforge.net> Cc: Max Vozeler <max@vozeler.com> Cc: stable <stable@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
d2dd0b07c3
commit
1325f85fa4
|
@ -333,10 +333,11 @@ void usbip_dump_header(struct usbip_header *pdu)
|
|||
usbip_udbg("CMD_UNLINK: seq %u\n", pdu->u.cmd_unlink.seqnum);
|
||||
break;
|
||||
case USBIP_RET_SUBMIT:
|
||||
usbip_udbg("RET_SUBMIT: st %d al %u sf %d ec %d\n",
|
||||
usbip_udbg("RET_SUBMIT: st %d al %u sf %d #p %d ec %d\n",
|
||||
pdu->u.ret_submit.status,
|
||||
pdu->u.ret_submit.actual_length,
|
||||
pdu->u.ret_submit.start_frame,
|
||||
pdu->u.ret_submit.number_of_packets,
|
||||
pdu->u.ret_submit.error_count);
|
||||
case USBIP_RET_UNLINK:
|
||||
usbip_udbg("RET_UNLINK: status %d\n", pdu->u.ret_unlink.status);
|
||||
|
@ -520,6 +521,7 @@ static void usbip_pack_ret_submit(struct usbip_header *pdu, struct urb *urb,
|
|||
rpdu->status = urb->status;
|
||||
rpdu->actual_length = urb->actual_length;
|
||||
rpdu->start_frame = urb->start_frame;
|
||||
rpdu->number_of_packets = urb->number_of_packets;
|
||||
rpdu->error_count = urb->error_count;
|
||||
} else {
|
||||
/* vhci_rx.c */
|
||||
|
@ -527,6 +529,7 @@ static void usbip_pack_ret_submit(struct usbip_header *pdu, struct urb *urb,
|
|||
urb->status = rpdu->status;
|
||||
urb->actual_length = rpdu->actual_length;
|
||||
urb->start_frame = rpdu->start_frame;
|
||||
urb->number_of_packets = rpdu->number_of_packets;
|
||||
urb->error_count = rpdu->error_count;
|
||||
}
|
||||
}
|
||||
|
@ -595,11 +598,13 @@ static void correct_endian_ret_submit(struct usbip_header_ret_submit *pdu,
|
|||
cpu_to_be32s(&pdu->status);
|
||||
cpu_to_be32s(&pdu->actual_length);
|
||||
cpu_to_be32s(&pdu->start_frame);
|
||||
cpu_to_be32s(&pdu->number_of_packets);
|
||||
cpu_to_be32s(&pdu->error_count);
|
||||
} else {
|
||||
be32_to_cpus(&pdu->status);
|
||||
be32_to_cpus(&pdu->actual_length);
|
||||
be32_to_cpus(&pdu->start_frame);
|
||||
cpu_to_be32s(&pdu->number_of_packets);
|
||||
be32_to_cpus(&pdu->error_count);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user