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()
350 static void simple_fill_buf(struct urb *urb) in simple_fill_buf() argument
353 u8 *buf = urb->transfer_buffer; in simple_fill_buf()
354 unsigned len = urb->transfer_buffer_length; in simple_fill_buf()
364 maxpacket = get_maxpacket(urb->dev, urb->pipe); in simple_fill_buf()
376 static int check_guard_bytes(struct usbtest_dev *tdev, struct urb *urb) in check_guard_bytes() argument
378 u8 *buf = urb->transfer_buffer; in check_guard_bytes()
392 static int simple_check_buf(struct usbtest_dev *tdev, struct urb *urb) in simple_check_buf() argument
396 u8 *buf = urb->transfer_buffer; in simple_check_buf()
397 unsigned len = urb->actual_length; in simple_check_buf()
398 unsigned maxpacket = get_maxpacket(urb->dev, urb->pipe); in simple_check_buf()
400 int ret = check_guard_bytes(tdev, urb); in simple_check_buf()
431 static void simple_free_urb(struct urb *urb) in simple_free_urb() argument
433 unsigned long offset = buffer_offset(urb->transfer_buffer); in simple_free_urb()
435 if (urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP) in simple_free_urb()
437 urb->dev, in simple_free_urb()
438 urb->transfer_buffer_length + offset, in simple_free_urb()
439 urb->transfer_buffer - offset, in simple_free_urb()
440 urb->transfer_dma - offset); in simple_free_urb()
442 kfree(urb->transfer_buffer - offset); in simple_free_urb()
443 usb_free_urb(urb); in simple_free_urb()
448 struct urb *urb, in simple_io() argument
455 struct usb_device *udev = urb->dev; in simple_io()
456 int max = urb->transfer_buffer_length; in simple_io()
461 urb->context = &completion; in simple_io()
464 if (usb_pipeout(urb->pipe)) { in simple_io()
465 simple_fill_buf(urb); in simple_io()
466 urb->transfer_flags |= URB_ZERO_PACKET; in simple_io()
468 retval = usb_submit_urb(urb, GFP_KERNEL); in simple_io()
474 usb_kill_urb(urb); in simple_io()
475 retval = (urb->status == -ENOENT ? in simple_io()
476 -ETIMEDOUT : urb->status); in simple_io()
478 retval = urb->status; in simple_io()
481 urb->dev = udev; in simple_io()
482 if (retval == 0 && usb_pipein(urb->pipe)) in simple_io()
483 retval = simple_check_buf(tdev, urb); in simple_io()
486 int len = urb->transfer_buffer_length; in simple_io()
492 urb->transfer_buffer_length = len; in simple_io()
497 urb->transfer_buffer_length = max; in simple_io()
1066 struct urb **urb; member
1079 static void ctrl_complete(struct urb *urb) in ctrl_complete() argument
1081 struct ctrl_ctx *ctx = urb->context; in ctrl_complete()
1084 int status = urb->status; in ctrl_complete()
1087 reqp = (struct usb_ctrlrequest *)urb->setup_packet; in ctrl_complete()
1141 urb->actual_length, in ctrl_complete()
1142 urb->transfer_buffer_length); in ctrl_complete()
1150 struct urb *u = ctx->urb[ in ctrl_complete()
1154 if (u == urb || !u->dev) in ctrl_complete()
1175 status = usb_submit_urb(urb, GFP_ATOMIC); in ctrl_complete()
1180 urb->dev = NULL; in ctrl_complete()
1184 urb->dev = NULL; in ctrl_complete()
1196 struct urb **urb; in test_ctrl_queue() local
1216 urb = kcalloc(param->sglen, sizeof(struct urb *), GFP_KERNEL); in test_ctrl_queue()
1217 if (!urb) in test_ctrl_queue()
1222 struct urb *u; in test_ctrl_queue()
1361 urb[i] = u = simple_alloc_urb(udev, pipe, len, 0); in test_ctrl_queue()
1378 context.urb = urb; in test_ctrl_queue()
1381 context.status = usb_submit_urb(urb[i], GFP_ATOMIC); in test_ctrl_queue()
1400 if (!urb[i]) in test_ctrl_queue()
1402 urb[i]->dev = udev; in test_ctrl_queue()
1403 kfree(urb[i]->setup_packet); in test_ctrl_queue()
1404 simple_free_urb(urb[i]); in test_ctrl_queue()
1406 kfree(urb); in test_ctrl_queue()
1414 static void unlink1_callback(struct urb *urb) in unlink1_callback() argument
1416 int status = urb->status; in unlink1_callback()
1420 status = usb_submit_urb(urb, GFP_ATOMIC); in unlink1_callback()
1422 urb->status = status; in unlink1_callback()
1423 complete(urb->context); in unlink1_callback()
1429 struct urb *urb; in unlink1() local
1434 urb = simple_alloc_urb(testdev_to_usbdev(dev), pipe, size, 0); in unlink1()
1435 if (!urb) in unlink1()
1437 urb->context = &completion; in unlink1()
1438 urb->complete = unlink1_callback; in unlink1()
1440 if (usb_pipeout(urb->pipe)) { in unlink1()
1441 simple_fill_buf(urb); in unlink1()
1442 urb->transfer_flags |= URB_ZERO_PACKET; in unlink1()
1451 retval = usb_submit_urb(urb, GFP_KERNEL); in unlink1()
1463 retval = usb_unlink_urb(urb); in unlink1()
1465 if (retval == 0 && usb_pipein(urb->pipe)) in unlink1()
1466 retval = simple_check_buf(dev, urb); in unlink1()
1492 usb_kill_urb(urb); in unlink1()
1495 retval = urb->status; in unlink1()
1496 simple_free_urb(urb); in unlink1()
1523 struct urb **urbs;
1526 static void unlink_queued_callback(struct urb *urb) in unlink_queued_callback() argument
1528 int status = urb->status; in unlink_queued_callback()
1529 struct queued_ctx *ctx = urb->context; in unlink_queued_callback()
1533 if (urb == ctx->urbs[ctx->num - 4] || urb == ctx->urbs[ctx->num - 2]) { in unlink_queued_callback()
1567 ctx.urbs = kcalloc(num, sizeof(struct urb *), GFP_KERNEL); in unlink_queued()
1621 static int verify_not_halted(struct usbtest_dev *tdev, int ep, struct urb *urb) in verify_not_halted() argument
1627 retval = usb_get_std_status(urb->dev, USB_RECIP_ENDPOINT, ep, &status); in verify_not_halted()
1637 retval = simple_io(tdev, urb, 1, 0, 0, __func__); in verify_not_halted()
1643 static int verify_halted(struct usbtest_dev *tdev, int ep, struct urb *urb) in verify_halted() argument
1649 retval = usb_get_std_status(urb->dev, USB_RECIP_ENDPOINT, ep, &status); in verify_halted()
1659 retval = simple_io(tdev, urb, 1, 0, -EPIPE, __func__); in verify_halted()
1662 retval = simple_io(tdev, urb, 1, 0, -EPIPE, "verify_still_halted"); in verify_halted()
1668 static int test_halt(struct usbtest_dev *tdev, int ep, struct urb *urb) in test_halt() argument
1673 retval = verify_not_halted(tdev, ep, urb); in test_halt()
1678 retval = usb_control_msg(urb->dev, usb_sndctrlpipe(urb->dev, 0), in test_halt()
1686 retval = verify_halted(tdev, ep, urb); in test_halt()
1691 ret = usb_clear_halt(urb->dev, urb->pipe); in test_halt()
1700 retval = usb_clear_halt(urb->dev, urb->pipe); in test_halt()
1705 retval = verify_not_halted(tdev, ep, urb); in test_halt()
1714 static int test_toggle_sync(struct usbtest_dev *tdev, int ep, struct urb *urb) in test_toggle_sync() argument
1719 retval = usb_clear_halt(urb->dev, urb->pipe); in test_toggle_sync()
1726 retval = simple_io(tdev, urb, 1, 0, 0, __func__); in test_toggle_sync()
1731 retval = usb_clear_halt(urb->dev, urb->pipe); in test_toggle_sync()
1738 retval = simple_io(tdev, urb, 1, 0, 0, __func__); in test_toggle_sync()
1747 struct urb *urb; in halt_simple() local
1751 urb = simple_alloc_urb(udev, 0, 1024, 0); in halt_simple()
1753 urb = simple_alloc_urb(udev, 0, 512, 0); in halt_simple()
1754 if (urb == NULL) in halt_simple()
1759 urb->pipe = dev->in_pipe; in halt_simple()
1760 retval = test_halt(dev, ep, urb); in halt_simple()
1767 urb->pipe = dev->out_pipe; in halt_simple()
1768 retval = test_halt(dev, ep, urb); in halt_simple()
1771 simple_free_urb(urb); in halt_simple()
1779 struct urb *urb; in toggle_sync_simple() local
1788 urb = simple_alloc_urb(udev, 0, 2 * maxp, 0); in toggle_sync_simple()
1789 if (urb == NULL) in toggle_sync_simple()
1792 urb->transfer_flags |= URB_ZERO_PACKET; in toggle_sync_simple()
1795 urb->pipe = dev->out_pipe; in toggle_sync_simple()
1796 retval = test_toggle_sync(dev, ep, urb); in toggle_sync_simple()
1798 simple_free_urb(urb); in toggle_sync_simple()
1918 static void complicated_callback(struct urb *urb) in complicated_callback() argument
1920 struct transfer_context *ctx = urb->context; in complicated_callback()
1926 ctx->packet_count += urb->number_of_packets; in complicated_callback()
1927 if (urb->error_count > 0) in complicated_callback()
1928 ctx->errors += urb->error_count; in complicated_callback()
1929 else if (urb->status != 0) in complicated_callback()
1930 ctx->errors += (ctx->is_iso ? urb->number_of_packets : 1); in complicated_callback()
1931 else if (urb->actual_length != urb->transfer_buffer_length) in complicated_callback()
1933 else if (check_guard_bytes(ctx->dev, urb) != 0) in complicated_callback()
1936 if (urb->status == 0 && ctx->count > (ctx->pending - 1) in complicated_callback()
1938 int status = usb_submit_urb(urb, GFP_ATOMIC); in complicated_callback()
1966 static struct urb *iso_alloc_urb( in iso_alloc_urb()
1974 struct urb *urb; in iso_alloc_urb() local
1983 urb = usb_alloc_urb(packets, GFP_KERNEL); in iso_alloc_urb()
1984 if (!urb) in iso_alloc_urb()
1985 return urb; in iso_alloc_urb()
1986 urb->dev = udev; in iso_alloc_urb()
1987 urb->pipe = pipe; in iso_alloc_urb()
1989 urb->number_of_packets = packets; in iso_alloc_urb()
1990 urb->transfer_buffer_length = bytes; in iso_alloc_urb()
1991 urb->transfer_buffer = usb_alloc_coherent(udev, bytes + offset, in iso_alloc_urb()
1993 &urb->transfer_dma); in iso_alloc_urb()
1994 if (!urb->transfer_buffer) { in iso_alloc_urb()
1995 usb_free_urb(urb); in iso_alloc_urb()
1999 memset(urb->transfer_buffer, GUARD_BYTE, offset); in iso_alloc_urb()
2000 urb->transfer_buffer += offset; in iso_alloc_urb()
2001 urb->transfer_dma += offset; in iso_alloc_urb()
2005 memset(urb->transfer_buffer, in iso_alloc_urb()
2006 usb_pipein(urb->pipe) ? GUARD_BYTE : 0, in iso_alloc_urb()
2011 urb->iso_frame_desc[i].length = min((unsigned) bytes, maxp); in iso_alloc_urb()
2012 bytes -= urb->iso_frame_desc[i].length; in iso_alloc_urb()
2014 urb->iso_frame_desc[i].offset = maxp * i; in iso_alloc_urb()
2017 urb->complete = complicated_callback; in iso_alloc_urb()
2019 urb->interval = 1 << (desc->bInterval - 1); in iso_alloc_urb()
2020 urb->transfer_flags = URB_ISO_ASAP | URB_NO_TRANSFER_DMA_MAP; in iso_alloc_urb()
2021 return urb; in iso_alloc_urb()
2033 struct urb *urbs[MAX_SGLEN]; in test_queue()
2139 struct urb *urb = usbtest_alloc_urb(testdev_to_usbdev(tdev), in test_unaligned_bulk() local
2142 if (!urb) in test_unaligned_bulk()
2145 retval = simple_io(tdev, urb, iterations, 0, 0, label); in test_unaligned_bulk()
2146 simple_free_urb(urb); in test_unaligned_bulk()
2156 struct urb *urb; in usbtest_do_ioctl() local
2189 urb = simple_alloc_urb(udev, dev->out_pipe, param->length, 0); in usbtest_do_ioctl()
2190 if (!urb) { in usbtest_do_ioctl()
2195 retval = simple_io(dev, urb, param->iterations, 0, 0, "test1"); in usbtest_do_ioctl()
2196 simple_free_urb(urb); in usbtest_do_ioctl()
2204 urb = simple_alloc_urb(udev, dev->in_pipe, param->length, 0); in usbtest_do_ioctl()
2205 if (!urb) { in usbtest_do_ioctl()
2210 retval = simple_io(dev, urb, param->iterations, 0, 0, "test2"); in usbtest_do_ioctl()
2211 simple_free_urb(urb); in usbtest_do_ioctl()
2219 urb = simple_alloc_urb(udev, dev->out_pipe, param->length, 0); in usbtest_do_ioctl()
2220 if (!urb) { in usbtest_do_ioctl()
2225 retval = simple_io(dev, urb, param->iterations, param->vary, in usbtest_do_ioctl()
2227 simple_free_urb(urb); in usbtest_do_ioctl()
2235 urb = simple_alloc_urb(udev, dev->in_pipe, param->length, 0); in usbtest_do_ioctl()
2236 if (!urb) { in usbtest_do_ioctl()
2241 retval = simple_io(dev, urb, param->iterations, param->vary, in usbtest_do_ioctl()
2243 simple_free_urb(urb); in usbtest_do_ioctl()
2543 urb = simple_alloc_urb(udev, dev->out_int_pipe, param->length, in usbtest_do_ioctl()
2545 if (!urb) { in usbtest_do_ioctl()
2550 retval = simple_io(dev, urb, param->iterations, 0, 0, "test25"); in usbtest_do_ioctl()
2551 simple_free_urb(urb); in usbtest_do_ioctl()
2559 urb = simple_alloc_urb(udev, dev->in_int_pipe, param->length, in usbtest_do_ioctl()
2561 if (!urb) { in usbtest_do_ioctl()
2566 retval = simple_io(dev, urb, param->iterations, 0, 0, "test26"); in usbtest_do_ioctl()
2567 simple_free_urb(urb); in usbtest_do_ioctl()