Lines Matching +full:server +full:- +full:side
1 // SPDX-License-Identifier: GPL-2.0+
3 * Copyright (C) 2003-2008 Takahiro Hirofuchi
4 * Copyright (C) 2015-2016 Samsung Electronics
47 return -EINVAL; in usbip_debug_store()
54 print_hex_dump(KERN_DEBUG, "usbip-core", DUMP_PREFIX_OFFSET, 16, 4, in usbip_dump_buffer()
88 struct device *dev = &udev->dev; in usbip_dump_usb_device()
92 udev->devnum, udev->devpath, usb_speed_string(udev->speed)); in usbip_dump_usb_device()
94 pr_debug("tt hub ttport %d\n", udev->ttport); in usbip_dump_usb_device()
103 pr_debug(" %2u", (udev->toggle[0] & (1 << i)) ? 1 : 0); in usbip_dump_usb_device()
108 pr_debug(" %2u", (udev->toggle[1] & (1 << i)) ? 1 : 0); in usbip_dump_usb_device()
113 if (udev->ep_in[i]) in usbip_dump_usb_device()
115 le16_to_cpu(udev->ep_in[i]->desc.wMaxPacketSize)); in usbip_dump_usb_device()
121 if (udev->ep_out[i]) in usbip_dump_usb_device()
123 le16_to_cpu(udev->ep_out[i]->desc.wMaxPacketSize)); in usbip_dump_usb_device()
127 dev_dbg(dev, "parent %s, bus %s\n", dev_name(&udev->parent->dev), in usbip_dump_usb_device()
128 udev->bus->bus_name); in usbip_dump_usb_device()
131 udev->have_langid, udev->string_langid); in usbip_dump_usb_device()
133 dev_dbg(dev, "maxchild %d\n", udev->maxchild); in usbip_dump_usb_device()
152 pr_debug("------"); in usbip_dump_request_type()
166 cmd->bRequestType, cmd->bRequest, in usbip_dump_usb_ctrlrequest()
167 cmd->wValue, cmd->wIndex, cmd->wLength); in usbip_dump_usb_ctrlrequest()
170 if ((cmd->bRequestType & USB_TYPE_MASK) == USB_TYPE_STANDARD) { in usbip_dump_usb_ctrlrequest()
172 switch (cmd->bRequest) { in usbip_dump_usb_ctrlrequest()
207 pr_debug("REQ(%02X)\n", cmd->bRequest); in usbip_dump_usb_ctrlrequest()
210 usbip_dump_request_type(cmd->bRequestType); in usbip_dump_usb_ctrlrequest()
211 } else if ((cmd->bRequestType & USB_TYPE_MASK) == USB_TYPE_CLASS) { in usbip_dump_usb_ctrlrequest()
213 } else if ((cmd->bRequestType & USB_TYPE_MASK) == USB_TYPE_VENDOR) { in usbip_dump_usb_ctrlrequest()
215 } else if ((cmd->bRequestType & USB_TYPE_MASK) == USB_TYPE_RESERVED) { in usbip_dump_usb_ctrlrequest()
229 if (!urb->dev) { in usbip_dump_urb()
230 pr_debug("urb->dev: null pointer!!\n"); in usbip_dump_urb()
234 dev = &urb->dev->dev; in usbip_dump_urb()
236 usbip_dump_usb_device(urb->dev); in usbip_dump_urb()
238 dev_dbg(dev, " pipe :%08x ", urb->pipe); in usbip_dump_urb()
240 usbip_dump_pipe(urb->pipe); in usbip_dump_urb()
242 dev_dbg(dev, " status :%d\n", urb->status); in usbip_dump_urb()
243 dev_dbg(dev, " transfer_flags :%08X\n", urb->transfer_flags); in usbip_dump_urb()
245 urb->transfer_buffer_length); in usbip_dump_urb()
246 dev_dbg(dev, " actual_length :%d\n", urb->actual_length); in usbip_dump_urb()
248 if (urb->setup_packet && usb_pipetype(urb->pipe) == PIPE_CONTROL) in usbip_dump_urb()
250 (struct usb_ctrlrequest *)urb->setup_packet); in usbip_dump_urb()
252 dev_dbg(dev, " start_frame :%d\n", urb->start_frame); in usbip_dump_urb()
253 dev_dbg(dev, " number_of_packets :%d\n", urb->number_of_packets); in usbip_dump_urb()
254 dev_dbg(dev, " interval :%d\n", urb->interval); in usbip_dump_urb()
255 dev_dbg(dev, " error_count :%d\n", urb->error_count); in usbip_dump_urb()
262 pdu->base.command, in usbip_dump_header()
263 pdu->base.seqnum, in usbip_dump_header()
264 pdu->base.devid, in usbip_dump_header()
265 pdu->base.direction, in usbip_dump_header()
266 pdu->base.ep); in usbip_dump_header()
268 switch (pdu->base.command) { in usbip_dump_header()
271 pdu->u.cmd_submit.transfer_flags, in usbip_dump_header()
272 pdu->u.cmd_submit.transfer_buffer_length, in usbip_dump_header()
273 pdu->u.cmd_submit.start_frame, in usbip_dump_header()
274 pdu->u.cmd_submit.number_of_packets, in usbip_dump_header()
275 pdu->u.cmd_submit.interval); in usbip_dump_header()
279 pdu->u.cmd_unlink.seqnum); in usbip_dump_header()
283 pdu->u.ret_submit.status, in usbip_dump_header()
284 pdu->u.ret_submit.actual_length, in usbip_dump_header()
285 pdu->u.ret_submit.start_frame, in usbip_dump_header()
286 pdu->u.ret_submit.number_of_packets, in usbip_dump_header()
287 pdu->u.ret_submit.error_count); in usbip_dump_header()
291 pdu->u.ret_unlink.status); in usbip_dump_header()
310 return -EINVAL; in usbip_recv()
317 sock->sk->sk_allocation = GFP_NOIO; in usbip_recv()
318 sock->sk->sk_use_task_frag = false; in usbip_recv()
350 * between Server (usbip_host) and Client (vhci_hcd). URB_* flags
354 * USBIP_URB* flags are exported as explicit API and client and server
358 * - Maps URB_* to USBIP_URB_* when it sends USBIP_CMD_SUBMIT packet.
360 * Server rx path (USBIP_CMD_SUBMIT):
361 * - Maps USBIP_URB_* to URB_* when it receives USBIP_CMD_SUBMIT packet.
365 * - Server rx path (USBIP_CMD_UNLINK)
366 * - Client rx path & Server tx path (USBIP_RET_SUBMIT)
436 struct usbip_header_cmd_submit *spdu = &pdu->u.cmd_submit; in usbip_pack_cmd_submit()
444 spdu->transfer_flags = urb_to_usbip(tweak_transfer_flags(urb->transfer_flags)); in usbip_pack_cmd_submit()
445 spdu->transfer_buffer_length = urb->transfer_buffer_length; in usbip_pack_cmd_submit()
446 spdu->start_frame = urb->start_frame; in usbip_pack_cmd_submit()
447 spdu->number_of_packets = urb->number_of_packets; in usbip_pack_cmd_submit()
448 spdu->interval = urb->interval; in usbip_pack_cmd_submit()
450 urb->transfer_flags = usbip_to_urb(spdu->transfer_flags); in usbip_pack_cmd_submit()
451 urb->transfer_buffer_length = spdu->transfer_buffer_length; in usbip_pack_cmd_submit()
452 urb->start_frame = spdu->start_frame; in usbip_pack_cmd_submit()
453 urb->number_of_packets = spdu->number_of_packets; in usbip_pack_cmd_submit()
454 urb->interval = spdu->interval; in usbip_pack_cmd_submit()
461 struct usbip_header_ret_submit *rpdu = &pdu->u.ret_submit; in usbip_pack_ret_submit()
464 rpdu->status = urb->status; in usbip_pack_ret_submit()
465 rpdu->actual_length = urb->actual_length; in usbip_pack_ret_submit()
466 rpdu->start_frame = urb->start_frame; in usbip_pack_ret_submit()
467 rpdu->number_of_packets = urb->number_of_packets; in usbip_pack_ret_submit()
468 rpdu->error_count = urb->error_count; in usbip_pack_ret_submit()
470 urb->status = rpdu->status; in usbip_pack_ret_submit()
471 urb->actual_length = rpdu->actual_length; in usbip_pack_ret_submit()
472 urb->start_frame = rpdu->start_frame; in usbip_pack_ret_submit()
473 urb->number_of_packets = rpdu->number_of_packets; in usbip_pack_ret_submit()
474 urb->error_count = rpdu->error_count; in usbip_pack_ret_submit()
499 base->command = cpu_to_be32(base->command); in correct_endian_basic()
500 base->seqnum = cpu_to_be32(base->seqnum); in correct_endian_basic()
501 base->devid = cpu_to_be32(base->devid); in correct_endian_basic()
502 base->direction = cpu_to_be32(base->direction); in correct_endian_basic()
503 base->ep = cpu_to_be32(base->ep); in correct_endian_basic()
505 base->command = be32_to_cpu(base->command); in correct_endian_basic()
506 base->seqnum = be32_to_cpu(base->seqnum); in correct_endian_basic()
507 base->devid = be32_to_cpu(base->devid); in correct_endian_basic()
508 base->direction = be32_to_cpu(base->direction); in correct_endian_basic()
509 base->ep = be32_to_cpu(base->ep); in correct_endian_basic()
517 pdu->transfer_flags = cpu_to_be32(pdu->transfer_flags); in correct_endian_cmd_submit()
519 cpu_to_be32s(&pdu->transfer_buffer_length); in correct_endian_cmd_submit()
520 cpu_to_be32s(&pdu->start_frame); in correct_endian_cmd_submit()
521 cpu_to_be32s(&pdu->number_of_packets); in correct_endian_cmd_submit()
522 cpu_to_be32s(&pdu->interval); in correct_endian_cmd_submit()
524 pdu->transfer_flags = be32_to_cpu(pdu->transfer_flags); in correct_endian_cmd_submit()
526 be32_to_cpus(&pdu->transfer_buffer_length); in correct_endian_cmd_submit()
527 be32_to_cpus(&pdu->start_frame); in correct_endian_cmd_submit()
528 be32_to_cpus(&pdu->number_of_packets); in correct_endian_cmd_submit()
529 be32_to_cpus(&pdu->interval); in correct_endian_cmd_submit()
537 cpu_to_be32s(&pdu->status); in correct_endian_ret_submit()
538 cpu_to_be32s(&pdu->actual_length); in correct_endian_ret_submit()
539 cpu_to_be32s(&pdu->start_frame); in correct_endian_ret_submit()
540 cpu_to_be32s(&pdu->number_of_packets); in correct_endian_ret_submit()
541 cpu_to_be32s(&pdu->error_count); in correct_endian_ret_submit()
543 be32_to_cpus(&pdu->status); in correct_endian_ret_submit()
544 be32_to_cpus(&pdu->actual_length); in correct_endian_ret_submit()
545 be32_to_cpus(&pdu->start_frame); in correct_endian_ret_submit()
546 be32_to_cpus(&pdu->number_of_packets); in correct_endian_ret_submit()
547 be32_to_cpus(&pdu->error_count); in correct_endian_ret_submit()
555 pdu->seqnum = cpu_to_be32(pdu->seqnum); in correct_endian_cmd_unlink()
557 pdu->seqnum = be32_to_cpu(pdu->seqnum); in correct_endian_cmd_unlink()
564 cpu_to_be32s(&pdu->status); in correct_endian_ret_unlink()
566 be32_to_cpus(&pdu->status); in correct_endian_ret_unlink()
574 cmd = pdu->base.command; in usbip_header_correct_endian()
576 correct_endian_basic(&pdu->base, send); in usbip_header_correct_endian()
579 cmd = pdu->base.command; in usbip_header_correct_endian()
583 correct_endian_cmd_submit(&pdu->u.cmd_submit, send); in usbip_header_correct_endian()
586 correct_endian_ret_submit(&pdu->u.ret_submit, send); in usbip_header_correct_endian()
589 correct_endian_cmd_unlink(&pdu->u.cmd_unlink, send); in usbip_header_correct_endian()
592 correct_endian_ret_unlink(&pdu->u.ret_unlink, send); in usbip_header_correct_endian()
607 iso->offset = cpu_to_be32(iso->offset); in usbip_iso_packet_correct_endian()
608 iso->length = cpu_to_be32(iso->length); in usbip_iso_packet_correct_endian()
609 iso->status = cpu_to_be32(iso->status); in usbip_iso_packet_correct_endian()
610 iso->actual_length = cpu_to_be32(iso->actual_length); in usbip_iso_packet_correct_endian()
612 iso->offset = be32_to_cpu(iso->offset); in usbip_iso_packet_correct_endian()
613 iso->length = be32_to_cpu(iso->length); in usbip_iso_packet_correct_endian()
614 iso->status = be32_to_cpu(iso->status); in usbip_iso_packet_correct_endian()
615 iso->actual_length = be32_to_cpu(iso->actual_length); in usbip_iso_packet_correct_endian()
623 iso->offset = uiso->offset; in usbip_pack_iso()
624 iso->length = uiso->length; in usbip_pack_iso()
625 iso->status = uiso->status; in usbip_pack_iso()
626 iso->actual_length = uiso->actual_length; in usbip_pack_iso()
628 uiso->offset = iso->offset; in usbip_pack_iso()
629 uiso->length = iso->length; in usbip_pack_iso()
630 uiso->status = iso->status; in usbip_pack_iso()
631 uiso->actual_length = iso->actual_length; in usbip_pack_iso()
640 int np = urb->number_of_packets; in usbip_alloc_iso_desc_pdu()
649 usbip_pack_iso(&iso[i], &urb->iso_frame_desc[i], 1); in usbip_alloc_iso_desc_pdu()
664 int np = urb->number_of_packets; in usbip_recv_iso()
670 if (!usb_pipeisoc(urb->pipe)) in usbip_recv_iso()
679 return -ENOMEM; in usbip_recv_iso()
681 ret = usbip_recv(ud->tcp_socket, buff, size); in usbip_recv_iso()
683 dev_err(&urb->dev->dev, "recv iso_frame_descriptor, %d\n", in usbip_recv_iso()
687 if (ud->side == USBIP_STUB || ud->side == USBIP_VUDC) in usbip_recv_iso()
692 return -EPIPE; in usbip_recv_iso()
698 usbip_pack_iso(&iso[i], &urb->iso_frame_desc[i], 0); in usbip_recv_iso()
699 total_length += urb->iso_frame_desc[i].actual_length; in usbip_recv_iso()
704 if (total_length != urb->actual_length) { in usbip_recv_iso()
705 dev_err(&urb->dev->dev, in usbip_recv_iso()
707 total_length, urb->actual_length); in usbip_recv_iso()
709 if (ud->side == USBIP_STUB || ud->side == USBIP_VUDC) in usbip_recv_iso()
714 return -EPIPE; in usbip_recv_iso()
730 int np = urb->number_of_packets; in usbip_pad_iso()
732 int actualoffset = urb->actual_length; in usbip_pad_iso()
734 if (!usb_pipeisoc(urb->pipe)) in usbip_pad_iso()
738 if (np == 0 || urb->actual_length == 0) in usbip_pad_iso()
745 if (urb->actual_length == urb->transfer_buffer_length) in usbip_pad_iso()
752 for (i = np-1; i > 0; i--) { in usbip_pad_iso()
753 actualoffset -= urb->iso_frame_desc[i].actual_length; in usbip_pad_iso()
754 memmove(urb->transfer_buffer + urb->iso_frame_desc[i].offset, in usbip_pad_iso()
755 urb->transfer_buffer + actualoffset, in usbip_pad_iso()
756 urb->iso_frame_desc[i].actual_length); in usbip_pad_iso()
771 if (ud->side == USBIP_STUB || ud->side == USBIP_VUDC) { in usbip_recv_xbuff()
773 if (usb_pipein(urb->pipe)) in usbip_recv_xbuff()
776 size = urb->transfer_buffer_length; in usbip_recv_xbuff()
779 if (usb_pipeout(urb->pipe)) in usbip_recv_xbuff()
782 size = urb->actual_length; in usbip_recv_xbuff()
789 if (size > urb->transfer_buffer_length) in usbip_recv_xbuff()
793 if (urb->num_sgs) { in usbip_recv_xbuff()
795 for_each_sg(urb->sg, sg, urb->num_sgs, i) { in usbip_recv_xbuff()
798 if (copy < sg->length) in usbip_recv_xbuff()
801 recv_size = sg->length; in usbip_recv_xbuff()
803 recv = usbip_recv(ud->tcp_socket, sg_virt(sg), in usbip_recv_xbuff()
809 copy -= recv; in usbip_recv_xbuff()
819 ret = usbip_recv(ud->tcp_socket, urb->transfer_buffer, size); in usbip_recv_xbuff()
827 dev_err(&urb->dev->dev, "recv xbuf, %d\n", ret); in usbip_recv_xbuff()
828 if (ud->side == USBIP_STUB || ud->side == USBIP_VUDC) in usbip_recv_xbuff()
833 return -EPIPE; in usbip_recv_xbuff()