ALSA: usb-audio - Avoid flood of frame-active debug messages
authorTakashi Iwai <tiwai@suse.de>
Mon, 9 Jan 2012 10:37:20 +0000 (11:37 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 26 Jan 2012 00:13:09 +0000 (16:13 -0800)
commit 80c8a2a372599e604b04a9c568952fe39cd1851d upstream.

With some buggy devices, the usb-audio driver may give "frame xxx active"
kernel messages too often.  Better to keep it as debug-only using
snd_printdd(), and also add the rate-limit for avoiding floods.

Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=738681

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
sound/usb/endpoint.c

index 81c6ede..08dcce5 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>
 
@@ -458,8 +459,8 @@ static int retire_capture_urb(struct snd_usb_substream *subs,
 
        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);
+               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;