Lines Matching refs:urb

230 static void simple_callback(struct urb *urb)  in simple_callback()  argument
232 complete(urb->context); in simple_callback()
235 static struct urb *usbtest_alloc_urb( in usbtest_alloc_urb()
243 struct urb *urb; in usbtest_alloc_urb() local
245 urb = usb_alloc_urb(0, GFP_KERNEL); in usbtest_alloc_urb()
246 if (!urb) in usbtest_alloc_urb()
247 return urb; in usbtest_alloc_urb()
250 usb_fill_int_urb(urb, udev, pipe, NULL, bytes, simple_callback, in usbtest_alloc_urb()
253 usb_fill_bulk_urb(urb, udev, pipe, NULL, bytes, simple_callback, in usbtest_alloc_urb()
256 urb->interval = (udev->speed == USB_SPEED_HIGH) in usbtest_alloc_urb()
259 urb->transfer_flags = transfer_flags; in usbtest_alloc_urb()
261 urb->transfer_flags |= URB_SHORT_NOT_OK; in usbtest_alloc_urb()
263 if (urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP) in usbtest_alloc_urb()
264 urb->transfer_buffer = usb_alloc_coherent(udev, bytes + offset, in usbtest_alloc_urb()
265 GFP_KERNEL, &urb->transfer_dma); in usbtest_alloc_urb()
267 urb->transfer_buffer = kmalloc(bytes + offset, GFP_KERNEL); in usbtest_alloc_urb()
269 if (!urb->transfer_buffer) { in usbtest_alloc_urb()
270 usb_free_urb(urb); in usbtest_alloc_urb()
277 memset(urb->transfer_buffer, GUARD_BYTE, offset); in usbtest_alloc_urb()
278 urb->transfer_buffer += offset; in usbtest_alloc_urb()
279 if (urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP) in usbtest_alloc_urb()
280 urb->transfer_dma += offset; in usbtest_alloc_urb()
285 memset(urb->transfer_buffer, in usbtest_alloc_urb()
286 usb_pipein(urb->pipe) ? GUARD_BYTE : 0, in usbtest_alloc_urb()
288 return urb; in usbtest_alloc_urb()
291 static struct urb *simple_alloc_urb( in simple_alloc_urb()
314 static void simple_fill_buf(struct urb *urb) in simple_fill_buf() argument
317 u8 *buf = urb->transfer_buffer; in simple_fill_buf()
318 unsigned len = urb->transfer_buffer_length; in simple_fill_buf()
328 maxpacket = get_maxpacket(urb->dev, urb->pipe); in simple_fill_buf()
340 static int check_guard_bytes(struct usbtest_dev *tdev, struct urb *urb) in check_guard_bytes() argument
342 u8 *buf = urb->transfer_buffer; in check_guard_bytes()
356 static int simple_check_buf(struct usbtest_dev *tdev, struct urb *urb) in simple_check_buf() argument
360 u8 *buf = urb->transfer_buffer; in simple_check_buf()
361 unsigned len = urb->actual_length; in simple_check_buf()
362 unsigned maxpacket = get_maxpacket(urb->dev, urb->pipe); in simple_check_buf()
364 int ret = check_guard_bytes(tdev, urb); in simple_check_buf()
395 static void simple_free_urb(struct urb *urb) in simple_free_urb() argument
397 unsigned long offset = buffer_offset(urb->transfer_buffer); in simple_free_urb()
399 if (urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP) in simple_free_urb()
401 urb->dev, in simple_free_urb()
402 urb->transfer_buffer_length + offset, in simple_free_urb()
403 urb->transfer_buffer - offset, in simple_free_urb()
404 urb->transfer_dma - offset); in simple_free_urb()
406 kfree(urb->transfer_buffer - offset); in simple_free_urb()
407 usb_free_urb(urb); in simple_free_urb()
412 struct urb *urb, in simple_io() argument
419 struct usb_device *udev = urb->dev; in simple_io()
420 int max = urb->transfer_buffer_length; in simple_io()
425 urb->context = &completion; in simple_io()
428 if (usb_pipeout(urb->pipe)) { in simple_io()
429 simple_fill_buf(urb); in simple_io()
430 urb->transfer_flags |= URB_ZERO_PACKET; in simple_io()
432 retval = usb_submit_urb(urb, GFP_KERNEL); in simple_io()
438 usb_kill_urb(urb); in simple_io()
439 retval = (urb->status == -ENOENT ? in simple_io()
440 -ETIMEDOUT : urb->status); in simple_io()
442 retval = urb->status; in simple_io()
445 urb->dev = udev; in simple_io()
446 if (retval == 0 && usb_pipein(urb->pipe)) in simple_io()
447 retval = simple_check_buf(tdev, urb); in simple_io()
450 int len = urb->transfer_buffer_length; in simple_io()
456 urb->transfer_buffer_length = len; in simple_io()
461 urb->transfer_buffer_length = max; in simple_io()
1021 struct urb **urb; member
1034 static void ctrl_complete(struct urb *urb) in ctrl_complete() argument
1036 struct ctrl_ctx *ctx = urb->context; in ctrl_complete()
1039 int status = urb->status; in ctrl_complete()
1041 reqp = (struct usb_ctrlrequest *)urb->setup_packet; in ctrl_complete()
1095 urb->actual_length, in ctrl_complete()
1096 urb->transfer_buffer_length); in ctrl_complete()
1104 struct urb *u = ctx->urb[ in ctrl_complete()
1108 if (u == urb || !u->dev) in ctrl_complete()
1129 status = usb_submit_urb(urb, GFP_ATOMIC); in ctrl_complete()
1134 urb->dev = NULL; in ctrl_complete()
1138 urb->dev = NULL; in ctrl_complete()
1150 struct urb **urb; in test_ctrl_queue() local
1170 urb = kcalloc(param->sglen, sizeof(struct urb *), GFP_KERNEL); in test_ctrl_queue()
1171 if (!urb) in test_ctrl_queue()
1176 struct urb *u; in test_ctrl_queue()
1315 urb[i] = u = simple_alloc_urb(udev, pipe, len, 0); in test_ctrl_queue()
1332 context.urb = urb; in test_ctrl_queue()
1335 context.status = usb_submit_urb(urb[i], GFP_ATOMIC); in test_ctrl_queue()
1354 if (!urb[i]) in test_ctrl_queue()
1356 urb[i]->dev = udev; in test_ctrl_queue()
1357 kfree(urb[i]->setup_packet); in test_ctrl_queue()
1358 simple_free_urb(urb[i]); in test_ctrl_queue()
1360 kfree(urb); in test_ctrl_queue()
1368 static void unlink1_callback(struct urb *urb) in unlink1_callback() argument
1370 int status = urb->status; in unlink1_callback()
1374 status = usb_submit_urb(urb, GFP_ATOMIC); in unlink1_callback()
1376 urb->status = status; in unlink1_callback()
1377 complete(urb->context); in unlink1_callback()
1383 struct urb *urb; in unlink1() local
1388 urb = simple_alloc_urb(testdev_to_usbdev(dev), pipe, size, 0); in unlink1()
1389 if (!urb) in unlink1()
1391 urb->context = &completion; in unlink1()
1392 urb->complete = unlink1_callback; in unlink1()
1394 if (usb_pipeout(urb->pipe)) { in unlink1()
1395 simple_fill_buf(urb); in unlink1()
1396 urb->transfer_flags |= URB_ZERO_PACKET; in unlink1()
1405 retval = usb_submit_urb(urb, GFP_KERNEL); in unlink1()
1417 retval = usb_unlink_urb(urb); in unlink1()
1419 if (retval == 0 && usb_pipein(urb->pipe)) in unlink1()
1420 retval = simple_check_buf(dev, urb); in unlink1()
1446 usb_kill_urb(urb); in unlink1()
1449 retval = urb->status; in unlink1()
1450 simple_free_urb(urb); in unlink1()
1477 struct urb **urbs;
1480 static void unlink_queued_callback(struct urb *urb) in unlink_queued_callback() argument
1482 int status = urb->status; in unlink_queued_callback()
1483 struct queued_ctx *ctx = urb->context; in unlink_queued_callback()
1487 if (urb == ctx->urbs[ctx->num - 4] || urb == ctx->urbs[ctx->num - 2]) { in unlink_queued_callback()
1521 ctx.urbs = kcalloc(num, sizeof(struct urb *), GFP_KERNEL); in unlink_queued()
1575 static int verify_not_halted(struct usbtest_dev *tdev, int ep, struct urb *urb) in verify_not_halted() argument
1581 retval = usb_get_status(urb->dev, USB_RECIP_ENDPOINT, ep, &status); in verify_not_halted()
1591 retval = simple_io(tdev, urb, 1, 0, 0, __func__); in verify_not_halted()
1597 static int verify_halted(struct usbtest_dev *tdev, int ep, struct urb *urb) in verify_halted() argument
1603 retval = usb_get_status(urb->dev, USB_RECIP_ENDPOINT, ep, &status); in verify_halted()
1613 retval = simple_io(tdev, urb, 1, 0, -EPIPE, __func__); in verify_halted()
1616 retval = simple_io(tdev, urb, 1, 0, -EPIPE, "verify_still_halted"); in verify_halted()
1622 static int test_halt(struct usbtest_dev *tdev, int ep, struct urb *urb) in test_halt() argument
1627 retval = verify_not_halted(tdev, ep, urb); in test_halt()
1632 retval = usb_control_msg(urb->dev, usb_sndctrlpipe(urb->dev, 0), in test_halt()
1640 retval = verify_halted(tdev, ep, urb); in test_halt()
1645 ret = usb_clear_halt(urb->dev, urb->pipe); in test_halt()
1654 retval = usb_clear_halt(urb->dev, urb->pipe); in test_halt()
1659 retval = verify_not_halted(tdev, ep, urb); in test_halt()
1672 struct urb *urb; in halt_simple() local
1676 urb = simple_alloc_urb(udev, 0, 1024, 0); in halt_simple()
1678 urb = simple_alloc_urb(udev, 0, 512, 0); in halt_simple()
1679 if (urb == NULL) in halt_simple()
1684 urb->pipe = dev->in_pipe; in halt_simple()
1685 retval = test_halt(dev, ep, urb); in halt_simple()
1692 urb->pipe = dev->out_pipe; in halt_simple()
1693 retval = test_halt(dev, ep, urb); in halt_simple()
1696 simple_free_urb(urb); in halt_simple()
1815 static void iso_callback(struct urb *urb) in iso_callback() argument
1817 struct iso_context *ctx = urb->context; in iso_callback()
1822 ctx->packet_count += urb->number_of_packets; in iso_callback()
1823 if (urb->error_count > 0) in iso_callback()
1824 ctx->errors += urb->error_count; in iso_callback()
1825 else if (urb->status != 0) in iso_callback()
1826 ctx->errors += urb->number_of_packets; in iso_callback()
1827 else if (urb->actual_length != urb->transfer_buffer_length) in iso_callback()
1829 else if (check_guard_bytes(ctx->dev, urb) != 0) in iso_callback()
1832 if (urb->status == 0 && ctx->count > (ctx->pending - 1) in iso_callback()
1834 int status = usb_submit_urb(urb, GFP_ATOMIC); in iso_callback()
1862 static struct urb *iso_alloc_urb( in iso_alloc_urb()
1870 struct urb *urb; in iso_alloc_urb() local
1879 urb = usb_alloc_urb(packets, GFP_KERNEL); in iso_alloc_urb()
1880 if (!urb) in iso_alloc_urb()
1881 return urb; in iso_alloc_urb()
1882 urb->dev = udev; in iso_alloc_urb()
1883 urb->pipe = pipe; in iso_alloc_urb()
1885 urb->number_of_packets = packets; in iso_alloc_urb()
1886 urb->transfer_buffer_length = bytes; in iso_alloc_urb()
1887 urb->transfer_buffer = usb_alloc_coherent(udev, bytes + offset, in iso_alloc_urb()
1889 &urb->transfer_dma); in iso_alloc_urb()
1890 if (!urb->transfer_buffer) { in iso_alloc_urb()
1891 usb_free_urb(urb); in iso_alloc_urb()
1895 memset(urb->transfer_buffer, GUARD_BYTE, offset); in iso_alloc_urb()
1896 urb->transfer_buffer += offset; in iso_alloc_urb()
1897 urb->transfer_dma += offset; in iso_alloc_urb()
1901 memset(urb->transfer_buffer, in iso_alloc_urb()
1902 usb_pipein(urb->pipe) ? GUARD_BYTE : 0, in iso_alloc_urb()
1907 urb->iso_frame_desc[i].length = min((unsigned) bytes, maxp); in iso_alloc_urb()
1908 bytes -= urb->iso_frame_desc[i].length; in iso_alloc_urb()
1910 urb->iso_frame_desc[i].offset = maxp * i; in iso_alloc_urb()
1913 urb->complete = iso_callback; in iso_alloc_urb()
1915 urb->interval = 1 << (desc->bInterval - 1); in iso_alloc_urb()
1916 urb->transfer_flags = URB_ISO_ASAP | URB_NO_TRANSFER_DMA_MAP; in iso_alloc_urb()
1917 return urb; in iso_alloc_urb()
1929 struct urb *urbs[10]; /* FIXME no limit */ in test_iso_queue()
2021 struct urb *urb = usbtest_alloc_urb( in test_unaligned_bulk() local
2024 if (!urb) in test_unaligned_bulk()
2027 retval = simple_io(tdev, urb, iterations, 0, 0, label); in test_unaligned_bulk()
2028 simple_free_urb(urb); in test_unaligned_bulk()
2062 struct urb *urb; in usbtest_ioctl() local
2128 urb = simple_alloc_urb(udev, dev->out_pipe, param->length, 0); in usbtest_ioctl()
2129 if (!urb) { in usbtest_ioctl()
2134 retval = simple_io(dev, urb, param->iterations, 0, 0, "test1"); in usbtest_ioctl()
2135 simple_free_urb(urb); in usbtest_ioctl()
2143 urb = simple_alloc_urb(udev, dev->in_pipe, param->length, 0); in usbtest_ioctl()
2144 if (!urb) { in usbtest_ioctl()
2149 retval = simple_io(dev, urb, param->iterations, 0, 0, "test2"); in usbtest_ioctl()
2150 simple_free_urb(urb); in usbtest_ioctl()
2158 urb = simple_alloc_urb(udev, dev->out_pipe, param->length, 0); in usbtest_ioctl()
2159 if (!urb) { in usbtest_ioctl()
2164 retval = simple_io(dev, urb, param->iterations, param->vary, in usbtest_ioctl()
2166 simple_free_urb(urb); in usbtest_ioctl()
2174 urb = simple_alloc_urb(udev, dev->in_pipe, param->length, 0); in usbtest_ioctl()
2175 if (!urb) { in usbtest_ioctl()
2180 retval = simple_io(dev, urb, param->iterations, param->vary, in usbtest_ioctl()
2182 simple_free_urb(urb); in usbtest_ioctl()
2482 urb = simple_alloc_urb(udev, dev->out_int_pipe, param->length, in usbtest_ioctl()
2484 if (!urb) { in usbtest_ioctl()
2489 retval = simple_io(dev, urb, param->iterations, 0, 0, "test25"); in usbtest_ioctl()
2490 simple_free_urb(urb); in usbtest_ioctl()
2498 urb = simple_alloc_urb(udev, dev->in_int_pipe, param->length, in usbtest_ioctl()
2500 if (!urb) { in usbtest_ioctl()
2505 retval = simple_io(dev, urb, param->iterations, 0, 0, "test26"); in usbtest_ioctl()
2506 simple_free_urb(urb); in usbtest_ioctl()