Lines Matching refs:urb

21 static void complicated_callback(struct urb *urb);
252 static void simple_callback(struct urb *urb) in simple_callback() argument
254 complete(urb->context); in simple_callback()
257 static struct urb *usbtest_alloc_urb( in usbtest_alloc_urb()
266 struct urb *urb; in usbtest_alloc_urb() local
268 urb = usb_alloc_urb(0, GFP_KERNEL); in usbtest_alloc_urb()
269 if (!urb) in usbtest_alloc_urb()
270 return urb; in usbtest_alloc_urb()
273 usb_fill_int_urb(urb, udev, pipe, NULL, bytes, complete_fn, in usbtest_alloc_urb()
276 usb_fill_bulk_urb(urb, udev, pipe, NULL, bytes, complete_fn, in usbtest_alloc_urb()
279 urb->interval = (udev->speed == USB_SPEED_HIGH) in usbtest_alloc_urb()
282 urb->transfer_flags = transfer_flags; in usbtest_alloc_urb()
284 urb->transfer_flags |= URB_SHORT_NOT_OK; in usbtest_alloc_urb()
287 return urb; in usbtest_alloc_urb()
289 if (urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP) in usbtest_alloc_urb()
290 urb->transfer_buffer = usb_alloc_coherent(udev, bytes + offset, in usbtest_alloc_urb()
291 GFP_KERNEL, &urb->transfer_dma); in usbtest_alloc_urb()
293 urb->transfer_buffer = kmalloc(bytes + offset, GFP_KERNEL); in usbtest_alloc_urb()
295 if (!urb->transfer_buffer) { in usbtest_alloc_urb()
296 usb_free_urb(urb); in usbtest_alloc_urb()
303 memset(urb->transfer_buffer, GUARD_BYTE, offset); in usbtest_alloc_urb()
304 urb->transfer_buffer += offset; in usbtest_alloc_urb()
305 if (urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP) in usbtest_alloc_urb()
306 urb->transfer_dma += offset; in usbtest_alloc_urb()
311 memset(urb->transfer_buffer, in usbtest_alloc_urb()
312 usb_pipein(urb->pipe) ? GUARD_BYTE : 0, in usbtest_alloc_urb()
314 return urb; in usbtest_alloc_urb()
317 static struct urb *simple_alloc_urb( in simple_alloc_urb()
327 static struct urb *complicated_alloc_urb( in complicated_alloc_urb()
358 static void simple_fill_buf(struct urb *urb) in simple_fill_buf() argument
361 u8 *buf = urb->transfer_buffer; in simple_fill_buf()
362 unsigned len = urb->transfer_buffer_length; in simple_fill_buf()
372 maxpacket = get_maxpacket(urb->dev, urb->pipe); in simple_fill_buf()
384 static int check_guard_bytes(struct usbtest_dev *tdev, struct urb *urb) in check_guard_bytes() argument
386 u8 *buf = urb->transfer_buffer; in check_guard_bytes()
400 static int simple_check_buf(struct usbtest_dev *tdev, struct urb *urb) in simple_check_buf() argument
404 u8 *buf = urb->transfer_buffer; in simple_check_buf()
405 unsigned len = urb->actual_length; in simple_check_buf()
406 unsigned maxpacket = get_maxpacket(urb->dev, urb->pipe); in simple_check_buf()
408 int ret = check_guard_bytes(tdev, urb); in simple_check_buf()
439 static void simple_free_urb(struct urb *urb) in simple_free_urb() argument
441 unsigned long offset = buffer_offset(urb->transfer_buffer); in simple_free_urb()
443 if (urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP) in simple_free_urb()
445 urb->dev, in simple_free_urb()
446 urb->transfer_buffer_length + offset, in simple_free_urb()
447 urb->transfer_buffer - offset, in simple_free_urb()
448 urb->transfer_dma - offset); in simple_free_urb()
450 kfree(urb->transfer_buffer - offset); in simple_free_urb()
451 usb_free_urb(urb); in simple_free_urb()
456 struct urb *urb, in simple_io() argument
463 struct usb_device *udev = urb->dev; in simple_io()
464 int max = urb->transfer_buffer_length; in simple_io()
469 urb->context = &completion; in simple_io()
472 if (usb_pipeout(urb->pipe)) { in simple_io()
473 simple_fill_buf(urb); in simple_io()
474 urb->transfer_flags |= URB_ZERO_PACKET; in simple_io()
476 retval = usb_submit_urb(urb, GFP_KERNEL); in simple_io()
482 usb_kill_urb(urb); in simple_io()
483 retval = (urb->status == -ENOENT ? in simple_io()
484 -ETIMEDOUT : urb->status); in simple_io()
486 retval = urb->status; in simple_io()
489 urb->dev = udev; in simple_io()
490 if (retval == 0 && usb_pipein(urb->pipe)) in simple_io()
491 retval = simple_check_buf(tdev, urb); in simple_io()
494 int len = urb->transfer_buffer_length; in simple_io()
500 urb->transfer_buffer_length = len; in simple_io()
505 urb->transfer_buffer_length = max; in simple_io()
1074 struct urb **urb; member
1087 static void ctrl_complete(struct urb *urb) in ctrl_complete() argument
1089 struct ctrl_ctx *ctx = urb->context; in ctrl_complete()
1092 int status = urb->status; in ctrl_complete()
1095 reqp = (struct usb_ctrlrequest *)urb->setup_packet; in ctrl_complete()
1149 urb->actual_length, in ctrl_complete()
1150 urb->transfer_buffer_length); in ctrl_complete()
1158 struct urb *u = ctx->urb[ in ctrl_complete()
1162 if (u == urb || !u->dev) in ctrl_complete()
1183 status = usb_submit_urb(urb, GFP_ATOMIC); in ctrl_complete()
1188 urb->dev = NULL; in ctrl_complete()
1192 urb->dev = NULL; in ctrl_complete()
1204 struct urb **urb; in test_ctrl_queue() local
1224 urb = kcalloc(param->sglen, sizeof(struct urb *), GFP_KERNEL); in test_ctrl_queue()
1225 if (!urb) in test_ctrl_queue()
1230 struct urb *u; in test_ctrl_queue()
1369 urb[i] = u = simple_alloc_urb(udev, pipe, len, 0); in test_ctrl_queue()
1386 context.urb = urb; in test_ctrl_queue()
1389 context.status = usb_submit_urb(urb[i], GFP_ATOMIC); in test_ctrl_queue()
1408 if (!urb[i]) in test_ctrl_queue()
1410 urb[i]->dev = udev; in test_ctrl_queue()
1411 kfree(urb[i]->setup_packet); in test_ctrl_queue()
1412 simple_free_urb(urb[i]); in test_ctrl_queue()
1414 kfree(urb); in test_ctrl_queue()
1422 static void unlink1_callback(struct urb *urb) in unlink1_callback() argument
1424 int status = urb->status; in unlink1_callback()
1428 status = usb_submit_urb(urb, GFP_ATOMIC); in unlink1_callback()
1430 urb->status = status; in unlink1_callback()
1431 complete(urb->context); in unlink1_callback()
1437 struct urb *urb; in unlink1() local
1442 urb = simple_alloc_urb(testdev_to_usbdev(dev), pipe, size, 0); in unlink1()
1443 if (!urb) in unlink1()
1445 urb->context = &completion; in unlink1()
1446 urb->complete = unlink1_callback; in unlink1()
1448 if (usb_pipeout(urb->pipe)) { in unlink1()
1449 simple_fill_buf(urb); in unlink1()
1450 urb->transfer_flags |= URB_ZERO_PACKET; in unlink1()
1459 retval = usb_submit_urb(urb, GFP_KERNEL); in unlink1()
1471 retval = usb_unlink_urb(urb); in unlink1()
1473 if (retval == 0 && usb_pipein(urb->pipe)) in unlink1()
1474 retval = simple_check_buf(dev, urb); in unlink1()
1500 usb_kill_urb(urb); in unlink1()
1503 retval = urb->status; in unlink1()
1504 simple_free_urb(urb); in unlink1()
1531 struct urb **urbs;
1534 static void unlink_queued_callback(struct urb *urb) in unlink_queued_callback() argument
1536 int status = urb->status; in unlink_queued_callback()
1537 struct queued_ctx *ctx = urb->context; in unlink_queued_callback()
1541 if (urb == ctx->urbs[ctx->num - 4] || urb == ctx->urbs[ctx->num - 2]) { in unlink_queued_callback()
1575 ctx.urbs = kcalloc(num, sizeof(struct urb *), GFP_KERNEL); in unlink_queued()
1629 static int verify_not_halted(struct usbtest_dev *tdev, int ep, struct urb *urb) in verify_not_halted() argument
1635 retval = usb_get_std_status(urb->dev, USB_RECIP_ENDPOINT, ep, &status); in verify_not_halted()
1645 retval = simple_io(tdev, urb, 1, 0, 0, __func__); in verify_not_halted()
1651 static int verify_halted(struct usbtest_dev *tdev, int ep, struct urb *urb) in verify_halted() argument
1657 retval = usb_get_std_status(urb->dev, USB_RECIP_ENDPOINT, ep, &status); in verify_halted()
1667 retval = simple_io(tdev, urb, 1, 0, -EPIPE, __func__); in verify_halted()
1670 retval = simple_io(tdev, urb, 1, 0, -EPIPE, "verify_still_halted"); in verify_halted()
1676 static int test_halt(struct usbtest_dev *tdev, int ep, struct urb *urb) in test_halt() argument
1681 retval = verify_not_halted(tdev, ep, urb); in test_halt()
1686 retval = usb_control_msg(urb->dev, usb_sndctrlpipe(urb->dev, 0), in test_halt()
1694 retval = verify_halted(tdev, ep, urb); in test_halt()
1699 ret = usb_clear_halt(urb->dev, urb->pipe); in test_halt()
1708 retval = usb_clear_halt(urb->dev, urb->pipe); in test_halt()
1713 retval = verify_not_halted(tdev, ep, urb); in test_halt()
1722 static int test_toggle_sync(struct usbtest_dev *tdev, int ep, struct urb *urb) in test_toggle_sync() argument
1727 retval = usb_clear_halt(urb->dev, urb->pipe); in test_toggle_sync()
1734 retval = simple_io(tdev, urb, 1, 0, 0, __func__); in test_toggle_sync()
1739 retval = usb_clear_halt(urb->dev, urb->pipe); in test_toggle_sync()
1746 retval = simple_io(tdev, urb, 1, 0, 0, __func__); in test_toggle_sync()
1755 struct urb *urb; in halt_simple() local
1759 urb = simple_alloc_urb(udev, 0, 1024, 0); in halt_simple()
1761 urb = simple_alloc_urb(udev, 0, 512, 0); in halt_simple()
1762 if (urb == NULL) in halt_simple()
1767 urb->pipe = dev->in_pipe; in halt_simple()
1768 retval = test_halt(dev, ep, urb); in halt_simple()
1775 urb->pipe = dev->out_pipe; in halt_simple()
1776 retval = test_halt(dev, ep, urb); in halt_simple()
1779 simple_free_urb(urb); in halt_simple()
1787 struct urb *urb; in toggle_sync_simple() local
1796 urb = simple_alloc_urb(udev, 0, 2 * maxp, 0); in toggle_sync_simple()
1797 if (urb == NULL) in toggle_sync_simple()
1800 urb->transfer_flags |= URB_ZERO_PACKET; in toggle_sync_simple()
1803 urb->pipe = dev->out_pipe; in toggle_sync_simple()
1804 retval = test_toggle_sync(dev, ep, urb); in toggle_sync_simple()
1806 simple_free_urb(urb); in toggle_sync_simple()
1926 static void complicated_callback(struct urb *urb) in complicated_callback() argument
1928 struct transfer_context *ctx = urb->context; in complicated_callback()
1934 ctx->packet_count += urb->number_of_packets; in complicated_callback()
1935 if (urb->error_count > 0) in complicated_callback()
1936 ctx->errors += urb->error_count; in complicated_callback()
1937 else if (urb->status != 0) in complicated_callback()
1938 ctx->errors += (ctx->is_iso ? urb->number_of_packets : 1); in complicated_callback()
1939 else if (urb->actual_length != urb->transfer_buffer_length) in complicated_callback()
1941 else if (check_guard_bytes(ctx->dev, urb) != 0) in complicated_callback()
1944 if (urb->status == 0 && ctx->count > (ctx->pending - 1) in complicated_callback()
1946 int status = usb_submit_urb(urb, GFP_ATOMIC); in complicated_callback()
1974 static struct urb *iso_alloc_urb( in iso_alloc_urb()
1982 struct urb *urb; in iso_alloc_urb() local
1996 urb = usb_alloc_urb(packets, GFP_KERNEL); in iso_alloc_urb()
1997 if (!urb) in iso_alloc_urb()
1998 return urb; in iso_alloc_urb()
1999 urb->dev = udev; in iso_alloc_urb()
2000 urb->pipe = pipe; in iso_alloc_urb()
2002 urb->number_of_packets = packets; in iso_alloc_urb()
2003 urb->transfer_buffer_length = bytes; in iso_alloc_urb()
2004 urb->transfer_buffer = usb_alloc_coherent(udev, bytes + offset, in iso_alloc_urb()
2006 &urb->transfer_dma); in iso_alloc_urb()
2007 if (!urb->transfer_buffer) { in iso_alloc_urb()
2008 usb_free_urb(urb); in iso_alloc_urb()
2012 memset(urb->transfer_buffer, GUARD_BYTE, offset); in iso_alloc_urb()
2013 urb->transfer_buffer += offset; in iso_alloc_urb()
2014 urb->transfer_dma += offset; in iso_alloc_urb()
2018 memset(urb->transfer_buffer, in iso_alloc_urb()
2019 usb_pipein(urb->pipe) ? GUARD_BYTE : 0, in iso_alloc_urb()
2024 urb->iso_frame_desc[i].length = min((unsigned) bytes, maxp); in iso_alloc_urb()
2025 bytes -= urb->iso_frame_desc[i].length; in iso_alloc_urb()
2027 urb->iso_frame_desc[i].offset = maxp * i; in iso_alloc_urb()
2030 urb->complete = complicated_callback; in iso_alloc_urb()
2032 urb->interval = 1 << (desc->bInterval - 1); in iso_alloc_urb()
2033 urb->transfer_flags = URB_ISO_ASAP | URB_NO_TRANSFER_DMA_MAP; in iso_alloc_urb()
2034 return urb; in iso_alloc_urb()
2046 struct urb **urbs; in test_queue()
2167 struct urb *urb = usbtest_alloc_urb(testdev_to_usbdev(tdev), in test_unaligned_bulk() local
2170 if (!urb) in test_unaligned_bulk()
2173 retval = simple_io(tdev, urb, iterations, 0, 0, label); in test_unaligned_bulk()
2174 simple_free_urb(urb); in test_unaligned_bulk()
2184 struct urb *urb; in usbtest_do_ioctl() local
2217 urb = simple_alloc_urb(udev, dev->out_pipe, param->length, 0); in usbtest_do_ioctl()
2218 if (!urb) { in usbtest_do_ioctl()
2223 retval = simple_io(dev, urb, param->iterations, 0, 0, "test1"); in usbtest_do_ioctl()
2224 simple_free_urb(urb); in usbtest_do_ioctl()
2232 urb = simple_alloc_urb(udev, dev->in_pipe, param->length, 0); in usbtest_do_ioctl()
2233 if (!urb) { in usbtest_do_ioctl()
2238 retval = simple_io(dev, urb, param->iterations, 0, 0, "test2"); in usbtest_do_ioctl()
2239 simple_free_urb(urb); in usbtest_do_ioctl()
2247 urb = simple_alloc_urb(udev, dev->out_pipe, param->length, 0); in usbtest_do_ioctl()
2248 if (!urb) { in usbtest_do_ioctl()
2253 retval = simple_io(dev, urb, param->iterations, param->vary, in usbtest_do_ioctl()
2255 simple_free_urb(urb); in usbtest_do_ioctl()
2263 urb = simple_alloc_urb(udev, dev->in_pipe, param->length, 0); in usbtest_do_ioctl()
2264 if (!urb) { in usbtest_do_ioctl()
2269 retval = simple_io(dev, urb, param->iterations, param->vary, in usbtest_do_ioctl()
2271 simple_free_urb(urb); in usbtest_do_ioctl()
2571 urb = simple_alloc_urb(udev, dev->out_int_pipe, param->length, in usbtest_do_ioctl()
2573 if (!urb) { in usbtest_do_ioctl()
2578 retval = simple_io(dev, urb, param->iterations, 0, 0, "test25"); in usbtest_do_ioctl()
2579 simple_free_urb(urb); in usbtest_do_ioctl()
2587 urb = simple_alloc_urb(udev, dev->in_int_pipe, param->length, in usbtest_do_ioctl()
2589 if (!urb) { in usbtest_do_ioctl()
2594 retval = simple_io(dev, urb, param->iterations, 0, 0, "test26"); in usbtest_do_ioctl()
2595 simple_free_urb(urb); in usbtest_do_ioctl()