aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sound/usb/caiaq/audio.c6
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 }