diff options
| -rw-r--r-- | sound/usb/caiaq/audio.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sound/usb/caiaq/audio.c b/sound/usb/caiaq/audio.c index d0d493ca28ae..aa52b3e13bb5 100644 --- a/sound/usb/caiaq/audio.c +++ b/sound/usb/caiaq/audio.c | |||
| @@ -614,6 +614,7 @@ static void read_completed(struct urb *urb) | |||
| 614 | struct snd_usb_caiaqdev *dev; | 614 | struct snd_usb_caiaqdev *dev; |
| 615 | struct urb *out; | 615 | struct urb *out; |
| 616 | int frame, len, send_it = 0, outframe = 0; | 616 | int frame, len, send_it = 0, outframe = 0; |
| 617 | size_t offset = 0; | ||
| 617 | 618 | ||
| 618 | if (urb->status || !info) | 619 | if (urb->status || !info) |
| 619 | return; | 620 | return; |
| @@ -634,7 +635,8 @@ static void read_completed(struct urb *urb) | |||
| 634 | len = urb->iso_frame_desc[outframe].actual_length; | 635 | len = urb->iso_frame_desc[outframe].actual_length; |
| 635 | out->iso_frame_desc[outframe].length = len; | 636 | out->iso_frame_desc[outframe].length = len; |
| 636 | out->iso_frame_desc[outframe].actual_length = 0; | 637 | out->iso_frame_desc[outframe].actual_length = 0; |
| 637 | out->iso_frame_desc[outframe].offset = BYTES_PER_FRAME * frame; | 638 | out->iso_frame_desc[outframe].offset = offset; |
| 639 | offset += len; | ||
| 638 | 640 | ||
| 639 | if (len > 0) { | 641 | if (len > 0) { |
| 640 | spin_lock(&dev->spinlock); | 642 | spin_lock(&dev->spinlock); |
| @@ -650,7 +652,7 @@ static void read_completed(struct urb *urb) | |||
| 650 | } | 652 | } |
| 651 | 653 | ||
| 652 | if (send_it) { | 654 | if (send_it) { |
| 653 | out->number_of_packets = FRAMES_PER_URB; | 655 | out->number_of_packets = outframe; |
| 654 | out->transfer_flags = URB_ISO_ASAP; | 656 | out->transfer_flags = URB_ISO_ASAP; |
| 655 | usb_submit_urb(out, GFP_ATOMIC); | 657 | usb_submit_urb(out, GFP_ATOMIC); |
| 656 | } | 658 | } |
