Skip to content

Commit

Permalink
[media] imon: rate-limit send_packet spew
Browse files Browse the repository at this point in the history
There are folks with flaky imon hardware out there that doesn't always
respond to requests to write to their displays for some reason, which
can flood logs quickly when something like lcdproc is trying to
constantly update the display, so lets rate-limit all that error spew.

Signed-off-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Jarod Wilson authored and Mauro Carvalho Chehab committed Aug 6, 2011
1 parent d59a7b1 commit 47a09b0
Showing 1 changed file with 14 additions and 12 deletions.
26 changes: 14 additions & 12 deletions drivers/media/rc/imon.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/uaccess.h>
#include <linux/ratelimit.h>

#include <linux/input.h>
#include <linux/usb.h>
Expand Down Expand Up @@ -516,19 +517,19 @@ static int send_packet(struct imon_context *ictx)
if (retval) {
ictx->tx.busy = false;
smp_rmb(); /* ensure later readers know we're not busy */
pr_err("error submitting urb(%d)\n", retval);
pr_err_ratelimited("error submitting urb(%d)\n", retval);
} else {
/* Wait for transmission to complete (or abort) */
mutex_unlock(&ictx->lock);
retval = wait_for_completion_interruptible(
&ictx->tx.finished);
if (retval)
pr_err("task interrupted\n");
pr_err_ratelimited("task interrupted\n");
mutex_lock(&ictx->lock);

retval = ictx->tx.status;
if (retval)
pr_err("packet tx failed (%d)\n", retval);
pr_err_ratelimited("packet tx failed (%d)\n", retval);
}

kfree(control_req);
Expand Down Expand Up @@ -830,20 +831,20 @@ static ssize_t vfd_write(struct file *file, const char *buf,

ictx = file->private_data;
if (!ictx) {
pr_err("no context for device\n");
pr_err_ratelimited("no context for device\n");
return -ENODEV;
}

mutex_lock(&ictx->lock);

if (!ictx->dev_present_intf0) {
pr_err("no iMON device present\n");
pr_err_ratelimited("no iMON device present\n");
retval = -ENODEV;
goto exit;
}

if (n_bytes <= 0 || n_bytes > 32) {
pr_err("invalid payload size\n");
pr_err_ratelimited("invalid payload size\n");
retval = -EINVAL;
goto exit;
}
Expand All @@ -869,7 +870,7 @@ static ssize_t vfd_write(struct file *file, const char *buf,

retval = send_packet(ictx);
if (retval) {
pr_err("send packet failed for packet #%d\n", seq / 2);
pr_err_ratelimited("send packet #%d failed\n", seq / 2);
goto exit;
} else {
seq += 2;
Expand All @@ -883,7 +884,7 @@ static ssize_t vfd_write(struct file *file, const char *buf,
ictx->usb_tx_buf[7] = (unsigned char) seq;
retval = send_packet(ictx);
if (retval)
pr_err("send packet failed for packet #%d\n", seq / 2);
pr_err_ratelimited("send packet #%d failed\n", seq / 2);

exit:
mutex_unlock(&ictx->lock);
Expand Down Expand Up @@ -912,20 +913,21 @@ static ssize_t lcd_write(struct file *file, const char *buf,

ictx = file->private_data;
if (!ictx) {
pr_err("no context for device\n");
pr_err_ratelimited("no context for device\n");
return -ENODEV;
}

mutex_lock(&ictx->lock);

if (!ictx->display_supported) {
pr_err("no iMON display present\n");
pr_err_ratelimited("no iMON display present\n");
retval = -ENODEV;
goto exit;
}

if (n_bytes != 8) {
pr_err("invalid payload size: %d (expected 8)\n", (int)n_bytes);
pr_err_ratelimited("invalid payload size: %d (expected 8)\n",
(int)n_bytes);
retval = -EINVAL;
goto exit;
}
Expand All @@ -937,7 +939,7 @@ static ssize_t lcd_write(struct file *file, const char *buf,

retval = send_packet(ictx);
if (retval) {
pr_err("send packet failed!\n");
pr_err_ratelimited("send packet failed!\n");
goto exit;
} else {
dev_dbg(ictx->dev, "%s: write %d bytes to LCD\n",
Expand Down

0 comments on commit 47a09b0

Please sign in to comment.