tcp: enforce tcp_min_snd_mss in tcp_mtu_probing()
[pandora-kernel.git] / sound / usb / endpoint.c
index 81c6ede..5ebe8c4 100644 (file)
@@ -17,6 +17,7 @@
 
 #include <linux/gfp.h>
 #include <linux/init.h>
+#include <linux/ratelimit.h>
 #include <linux/usb.h>
 #include <linux/usb/audio.h>
 
@@ -457,9 +458,9 @@ static int retire_capture_urb(struct snd_usb_substream *subs,
        stride = runtime->frame_bits >> 3;
 
        for (i = 0; i < urb->number_of_packets; i++) {
-               cp = (unsigned char *)urb->transfer_buffer + urb->iso_frame_desc[i].offset;
-               if (urb->iso_frame_desc[i].status) {
-                       snd_printd(KERN_ERR "frame %d active: %d\n", i, urb->iso_frame_desc[i].status);
+               cp = (unsigned char *)urb->transfer_buffer + urb->iso_frame_desc[i].offset + subs->pkt_offset_adj;
+               if (urb->iso_frame_desc[i].status && printk_ratelimit()) {
+                       snd_printdd("frame %d active: %d\n", i, urb->iso_frame_desc[i].status);
                        // continue;
                }
                bytes = urb->iso_frame_desc[i].actual_length;
@@ -894,8 +895,10 @@ void snd_usb_init_substream(struct snd_usb_stream *as,
        subs->dev = as->chip->dev;
        subs->txfr_quirk = as->chip->txfr_quirk;
        subs->ops = audio_urb_ops[stream];
-       if (snd_usb_get_speed(subs->dev) >= USB_SPEED_HIGH)
+       subs->speed = snd_usb_get_speed(subs->dev);
+       if (subs->speed >= USB_SPEED_HIGH)
                subs->ops.prepare_sync = prepare_capture_sync_urb_hs;
+       subs->pkt_offset_adj = 0;
 
        snd_usb_set_pcm_ops(as->pcm, stream);