Lines Matching refs:urb

20 static void complicated_callback(struct urb *urb);
232 static void simple_callback(struct urb *urb) in simple_callback() argument
234 complete(urb->context); in simple_callback()
237 static struct urb *usbtest_alloc_urb( in usbtest_alloc_urb()
246 struct urb *urb; in usbtest_alloc_urb() local
248 urb = usb_alloc_urb(0, GFP_KERNEL); in usbtest_alloc_urb()
249 if (!urb) in usbtest_alloc_urb()
250 return urb; in usbtest_alloc_urb()
253 usb_fill_int_urb(urb, udev, pipe, NULL, bytes, complete_fn, in usbtest_alloc_urb()
256 usb_fill_bulk_urb(urb, udev, pipe, NULL, bytes, complete_fn, in usbtest_alloc_urb()
259 urb->interval = (udev->speed == USB_SPEED_HIGH) in usbtest_alloc_urb()
262 urb->transfer_flags = transfer_flags; in usbtest_alloc_urb()
264 urb->transfer_flags |= URB_SHORT_NOT_OK; in usbtest_alloc_urb()
266 if (urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP) in usbtest_alloc_urb()
267 urb->transfer_buffer = usb_alloc_coherent(udev, bytes + offset, in usbtest_alloc_urb()
268 GFP_KERNEL, &urb->transfer_dma); in usbtest_alloc_urb()
270 urb->transfer_buffer = kmalloc(bytes + offset, GFP_KERNEL); in usbtest_alloc_urb()
272 if (!urb->transfer_buffer) { in usbtest_alloc_urb()
273 usb_free_urb(urb); in usbtest_alloc_urb()
280 memset(urb->transfer_buffer, GUARD_BYTE, offset); in usbtest_alloc_urb()
281 urb->transfer_buffer += offset; in usbtest_alloc_urb()
282 if (urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP) in usbtest_alloc_urb()
283 urb->transfer_dma += offset; in usbtest_alloc_urb()
288 memset(urb->transfer_buffer, in usbtest_alloc_urb()
289 usb_pipein(urb->pipe) ? GUARD_BYTE : 0, in usbtest_alloc_urb()
291 return urb; in usbtest_alloc_urb()
294 static struct urb *simple_alloc_urb( in simple_alloc_urb()
304 static struct urb *complicated_alloc_urb( in complicated_alloc_urb()
327 static void simple_fill_buf(struct urb *urb) in simple_fill_buf() argument
330 u8 *buf = urb->transfer_buffer; in simple_fill_buf()
331 unsigned len = urb->transfer_buffer_length; in simple_fill_buf()
341 maxpacket = get_maxpacket(urb->dev, urb->pipe); in simple_fill_buf()
353 static int check_guard_bytes(struct usbtest_dev *tdev, struct urb *urb) in check_guard_bytes() argument
355 u8 *buf = urb->transfer_buffer; in check_guard_bytes()
369 static int simple_check_buf(struct usbtest_dev *tdev, struct urb *urb) in simple_check_buf() argument
373 u8 *buf = urb->transfer_buffer; in simple_check_buf()
374 unsigned len = urb->actual_length; in simple_check_buf()
375 unsigned maxpacket = get_maxpacket(urb->dev, urb->pipe); in simple_check_buf()
377 int ret = check_guard_bytes(tdev, urb); in simple_check_buf()
408 static void simple_free_urb(struct urb *urb) in simple_free_urb() argument
410 unsigned long offset = buffer_offset(urb->transfer_buffer); in simple_free_urb()
412 if (urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP) in simple_free_urb()
414 urb->dev, in simple_free_urb()
415 urb->transfer_buffer_length + offset, in simple_free_urb()
416 urb->transfer_buffer - offset, in simple_free_urb()
417 urb->transfer_dma - offset); in simple_free_urb()
419 kfree(urb->transfer_buffer - offset); in simple_free_urb()
420 usb_free_urb(urb); in simple_free_urb()
425 struct urb *urb, in simple_io() argument
432 struct usb_device *udev = urb->dev; in simple_io()
433 int max = urb->transfer_buffer_length; in simple_io()
438 urb->context = &completion; in simple_io()
441 if (usb_pipeout(urb->pipe)) { in simple_io()
442 simple_fill_buf(urb); in simple_io()
443 urb->transfer_flags |= URB_ZERO_PACKET; in simple_io()
445 retval = usb_submit_urb(urb, GFP_KERNEL); in simple_io()
451 usb_kill_urb(urb); in simple_io()
452 retval = (urb->status == -ENOENT ? in simple_io()
453 -ETIMEDOUT : urb->status); in simple_io()
455 retval = urb->status; in simple_io()
458 urb->dev = udev; in simple_io()
459 if (retval == 0 && usb_pipein(urb->pipe)) in simple_io()
460 retval = simple_check_buf(tdev, urb); in simple_io()
463 int len = urb->transfer_buffer_length; in simple_io()
469 urb->transfer_buffer_length = len; in simple_io()
474 urb->transfer_buffer_length = max; in simple_io()
1034 struct urb **urb; member
1047 static void ctrl_complete(struct urb *urb) in ctrl_complete() argument
1049 struct ctrl_ctx *ctx = urb->context; in ctrl_complete()
1052 int status = urb->status; in ctrl_complete()
1054 reqp = (struct usb_ctrlrequest *)urb->setup_packet; in ctrl_complete()
1108 urb->actual_length, in ctrl_complete()
1109 urb->transfer_buffer_length); in ctrl_complete()
1117 struct urb *u = ctx->urb[ in ctrl_complete()
1121 if (u == urb || !u->dev) in ctrl_complete()
1142 status = usb_submit_urb(urb, GFP_ATOMIC); in ctrl_complete()
1147 urb->dev = NULL; in ctrl_complete()
1151 urb->dev = NULL; in ctrl_complete()
1163 struct urb **urb; in test_ctrl_queue() local
1183 urb = kcalloc(param->sglen, sizeof(struct urb *), GFP_KERNEL); in test_ctrl_queue()
1184 if (!urb) in test_ctrl_queue()
1189 struct urb *u; in test_ctrl_queue()
1328 urb[i] = u = simple_alloc_urb(udev, pipe, len, 0); in test_ctrl_queue()
1345 context.urb = urb; in test_ctrl_queue()
1348 context.status = usb_submit_urb(urb[i], GFP_ATOMIC); in test_ctrl_queue()
1367 if (!urb[i]) in test_ctrl_queue()
1369 urb[i]->dev = udev; in test_ctrl_queue()
1370 kfree(urb[i]->setup_packet); in test_ctrl_queue()
1371 simple_free_urb(urb[i]); in test_ctrl_queue()
1373 kfree(urb); in test_ctrl_queue()
1381 static void unlink1_callback(struct urb *urb) in unlink1_callback() argument
1383 int status = urb->status; in unlink1_callback()
1387 status = usb_submit_urb(urb, GFP_ATOMIC); in unlink1_callback()
1389 urb->status = status; in unlink1_callback()
1390 complete(urb->context); in unlink1_callback()
1396 struct urb *urb; in unlink1() local
1401 urb = simple_alloc_urb(testdev_to_usbdev(dev), pipe, size, 0); in unlink1()
1402 if (!urb) in unlink1()
1404 urb->context = &completion; in unlink1()
1405 urb->complete = unlink1_callback; in unlink1()
1407 if (usb_pipeout(urb->pipe)) { in unlink1()
1408 simple_fill_buf(urb); in unlink1()
1409 urb->transfer_flags |= URB_ZERO_PACKET; in unlink1()
1418 retval = usb_submit_urb(urb, GFP_KERNEL); in unlink1()
1430 retval = usb_unlink_urb(urb); in unlink1()
1432 if (retval == 0 && usb_pipein(urb->pipe)) in unlink1()
1433 retval = simple_check_buf(dev, urb); in unlink1()
1459 usb_kill_urb(urb); in unlink1()
1462 retval = urb->status; in unlink1()
1463 simple_free_urb(urb); in unlink1()
1490 struct urb **urbs;
1493 static void unlink_queued_callback(struct urb *urb) in unlink_queued_callback() argument
1495 int status = urb->status; in unlink_queued_callback()
1496 struct queued_ctx *ctx = urb->context; in unlink_queued_callback()
1500 if (urb == ctx->urbs[ctx->num - 4] || urb == ctx->urbs[ctx->num - 2]) { in unlink_queued_callback()
1534 ctx.urbs = kcalloc(num, sizeof(struct urb *), GFP_KERNEL); in unlink_queued()
1588 static int verify_not_halted(struct usbtest_dev *tdev, int ep, struct urb *urb) in verify_not_halted() argument
1594 retval = usb_get_status(urb->dev, USB_RECIP_ENDPOINT, ep, &status); in verify_not_halted()
1604 retval = simple_io(tdev, urb, 1, 0, 0, __func__); in verify_not_halted()
1610 static int verify_halted(struct usbtest_dev *tdev, int ep, struct urb *urb) in verify_halted() argument
1616 retval = usb_get_status(urb->dev, USB_RECIP_ENDPOINT, ep, &status); in verify_halted()
1626 retval = simple_io(tdev, urb, 1, 0, -EPIPE, __func__); in verify_halted()
1629 retval = simple_io(tdev, urb, 1, 0, -EPIPE, "verify_still_halted"); in verify_halted()
1635 static int test_halt(struct usbtest_dev *tdev, int ep, struct urb *urb) in test_halt() argument
1640 retval = verify_not_halted(tdev, ep, urb); in test_halt()
1645 retval = usb_control_msg(urb->dev, usb_sndctrlpipe(urb->dev, 0), in test_halt()
1653 retval = verify_halted(tdev, ep, urb); in test_halt()
1658 ret = usb_clear_halt(urb->dev, urb->pipe); in test_halt()
1667 retval = usb_clear_halt(urb->dev, urb->pipe); in test_halt()
1672 retval = verify_not_halted(tdev, ep, urb); in test_halt()
1685 struct urb *urb; in halt_simple() local
1689 urb = simple_alloc_urb(udev, 0, 1024, 0); in halt_simple()
1691 urb = simple_alloc_urb(udev, 0, 512, 0); in halt_simple()
1692 if (urb == NULL) in halt_simple()
1697 urb->pipe = dev->in_pipe; in halt_simple()
1698 retval = test_halt(dev, ep, urb); in halt_simple()
1705 urb->pipe = dev->out_pipe; in halt_simple()
1706 retval = test_halt(dev, ep, urb); in halt_simple()
1709 simple_free_urb(urb); in halt_simple()
1829 static void complicated_callback(struct urb *urb) in complicated_callback() argument
1831 struct transfer_context *ctx = urb->context; in complicated_callback()
1836 ctx->packet_count += urb->number_of_packets; in complicated_callback()
1837 if (urb->error_count > 0) in complicated_callback()
1838 ctx->errors += urb->error_count; in complicated_callback()
1839 else if (urb->status != 0) in complicated_callback()
1840 ctx->errors += (ctx->is_iso ? urb->number_of_packets : 1); in complicated_callback()
1841 else if (urb->actual_length != urb->transfer_buffer_length) in complicated_callback()
1843 else if (check_guard_bytes(ctx->dev, urb) != 0) in complicated_callback()
1846 if (urb->status == 0 && ctx->count > (ctx->pending - 1) in complicated_callback()
1848 int status = usb_submit_urb(urb, GFP_ATOMIC); in complicated_callback()
1876 static struct urb *iso_alloc_urb( in iso_alloc_urb()
1884 struct urb *urb; in iso_alloc_urb() local
1893 urb = usb_alloc_urb(packets, GFP_KERNEL); in iso_alloc_urb()
1894 if (!urb) in iso_alloc_urb()
1895 return urb; in iso_alloc_urb()
1896 urb->dev = udev; in iso_alloc_urb()
1897 urb->pipe = pipe; in iso_alloc_urb()
1899 urb->number_of_packets = packets; in iso_alloc_urb()
1900 urb->transfer_buffer_length = bytes; in iso_alloc_urb()
1901 urb->transfer_buffer = usb_alloc_coherent(udev, bytes + offset, in iso_alloc_urb()
1903 &urb->transfer_dma); in iso_alloc_urb()
1904 if (!urb->transfer_buffer) { in iso_alloc_urb()
1905 usb_free_urb(urb); in iso_alloc_urb()
1909 memset(urb->transfer_buffer, GUARD_BYTE, offset); in iso_alloc_urb()
1910 urb->transfer_buffer += offset; in iso_alloc_urb()
1911 urb->transfer_dma += offset; in iso_alloc_urb()
1915 memset(urb->transfer_buffer, in iso_alloc_urb()
1916 usb_pipein(urb->pipe) ? GUARD_BYTE : 0, in iso_alloc_urb()
1921 urb->iso_frame_desc[i].length = min((unsigned) bytes, maxp); in iso_alloc_urb()
1922 bytes -= urb->iso_frame_desc[i].length; in iso_alloc_urb()
1924 urb->iso_frame_desc[i].offset = maxp * i; in iso_alloc_urb()
1927 urb->complete = complicated_callback; in iso_alloc_urb()
1929 urb->interval = 1 << (desc->bInterval - 1); in iso_alloc_urb()
1930 urb->transfer_flags = URB_ISO_ASAP | URB_NO_TRANSFER_DMA_MAP; in iso_alloc_urb()
1931 return urb; in iso_alloc_urb()
1943 struct urb *urbs[param->sglen]; in test_queue()
2043 struct urb *urb = usbtest_alloc_urb(testdev_to_usbdev(tdev), in test_unaligned_bulk() local
2046 if (!urb) in test_unaligned_bulk()
2049 retval = simple_io(tdev, urb, iterations, 0, 0, label); in test_unaligned_bulk()
2050 simple_free_urb(urb); in test_unaligned_bulk()
2084 struct urb *urb; in usbtest_ioctl() local
2153 urb = simple_alloc_urb(udev, dev->out_pipe, param->length, 0); in usbtest_ioctl()
2154 if (!urb) { in usbtest_ioctl()
2159 retval = simple_io(dev, urb, param->iterations, 0, 0, "test1"); in usbtest_ioctl()
2160 simple_free_urb(urb); in usbtest_ioctl()
2168 urb = simple_alloc_urb(udev, dev->in_pipe, param->length, 0); in usbtest_ioctl()
2169 if (!urb) { in usbtest_ioctl()
2174 retval = simple_io(dev, urb, param->iterations, 0, 0, "test2"); in usbtest_ioctl()
2175 simple_free_urb(urb); in usbtest_ioctl()
2183 urb = simple_alloc_urb(udev, dev->out_pipe, param->length, 0); in usbtest_ioctl()
2184 if (!urb) { in usbtest_ioctl()
2189 retval = simple_io(dev, urb, param->iterations, param->vary, in usbtest_ioctl()
2191 simple_free_urb(urb); in usbtest_ioctl()
2199 urb = simple_alloc_urb(udev, dev->in_pipe, param->length, 0); in usbtest_ioctl()
2200 if (!urb) { in usbtest_ioctl()
2205 retval = simple_io(dev, urb, param->iterations, param->vary, in usbtest_ioctl()
2207 simple_free_urb(urb); in usbtest_ioctl()
2507 urb = simple_alloc_urb(udev, dev->out_int_pipe, param->length, in usbtest_ioctl()
2509 if (!urb) { in usbtest_ioctl()
2514 retval = simple_io(dev, urb, param->iterations, 0, 0, "test25"); in usbtest_ioctl()
2515 simple_free_urb(urb); in usbtest_ioctl()
2523 urb = simple_alloc_urb(udev, dev->in_int_pipe, param->length, in usbtest_ioctl()
2525 if (!urb) { in usbtest_ioctl()
2530 retval = simple_io(dev, urb, param->iterations, 0, 0, "test26"); in usbtest_ioctl()
2531 simple_free_urb(urb); in usbtest_ioctl()