Using usb_fill_int_urb() helps to find code which initializes an URB. A grep for members of the struct (like ->complete) reveal lots of other things, too. Cc: Antti Palosaari <crope@xxxxxx> Cc: Mauro Carvalho Chehab <mchehab@xxxxxxxxxx> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> --- drivers/media/usb/dvb-usb-v2/usb_urb.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/drivers/media/usb/dvb-usb-v2/usb_urb.c b/drivers/media/usb/dvb-usb-v2/usb_urb.c index b0499f95ec45..e5e0bf96bad2 100644 --- a/drivers/media/usb/dvb-usb-v2/usb_urb.c +++ b/drivers/media/usb/dvb-usb-v2/usb_urb.c @@ -180,18 +180,17 @@ static int usb_urb_alloc_isoc_urbs(struct usb_data_stream *stream) } urb = stream->urb_list[i]; + usb_fill_int_urb(urb, stream->udev, + usb_rcvisocpipe(stream->udev, + stream->props.endpoint), + stream->buf_list[i], + stream->props.u.isoc.framesize * + stream->props.u.isoc.framesperurb, + usb_urb_complete, stream, + stream->props.u.isoc.interval); - urb->dev = stream->udev; - urb->context = stream; - urb->complete = usb_urb_complete; - urb->pipe = usb_rcvisocpipe(stream->udev, - stream->props.endpoint); urb->transfer_flags = URB_ISO_ASAP | URB_FREE_BUFFER; - urb->interval = stream->props.u.isoc.interval; urb->number_of_packets = stream->props.u.isoc.framesperurb; - urb->transfer_buffer_length = stream->props.u.isoc.framesize * - stream->props.u.isoc.framesperurb; - urb->transfer_buffer = stream->buf_list[i]; for (j = 0; j < stream->props.u.isoc.framesperurb; j++) { urb->iso_frame_desc[j].offset = frame_offset; -- 2.17.1