diff options
author | André Goddard Rosa <andre.goddard@gmail.com> | 2009-05-29 22:13:58 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-05-29 22:13:58 -0700 |
commit | 342a437ef625953e8bdeee3bc1605ccd27a38863 (patch) | |
tree | d27e11745942803b94bc459e601a1c3917a09361 /drivers | |
parent | 644233073458653e4b7fb474d9a8bdbbfd37739a (diff) | |
download | linux-3.10-342a437ef625953e8bdeee3bc1605ccd27a38863.tar.gz linux-3.10-342a437ef625953e8bdeee3bc1605ccd27a38863.tar.bz2 linux-3.10-342a437ef625953e8bdeee3bc1605ccd27a38863.zip |
usbnet: ratelimit warning messages invoked from callback handler
Warning messages coming from rtl8150 driver can flood the console
and make a DTV/set-top-box unable to decode video/audio frames.
'Pegasus' driver handles this situation similarly, preventing this
from happening there.
It happens with a low cost BCM MIPS embedded platform, whenever
timeout errors were coming from usbnet device, making platform
unusable for viewer watching.
Signed-off-by: André Goddard Rosa <andre.goddard@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/usb/rtl8150.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/net/usb/rtl8150.c b/drivers/net/usb/rtl8150.c index f9fb454ffa8..fcc6fa0905d 100644 --- a/drivers/net/usb/rtl8150.c +++ b/drivers/net/usb/rtl8150.c @@ -221,7 +221,8 @@ static void ctrl_callback(struct urb *urb) case -ENOENT: break; default: - dev_warn(&urb->dev->dev, "ctrl urb status %d\n", status); + if (printk_ratelimit()) + dev_warn(&urb->dev->dev, "ctrl urb status %d\n", status); } dev = urb->context; clear_bit(RX_REG_SET, &dev->flags); @@ -442,10 +443,12 @@ static void read_bulk_callback(struct urb *urb) case -ENOENT: return; /* the urb is in unlink state */ case -ETIME: - dev_warn(&urb->dev->dev, "may be reset is needed?..\n"); + if (printk_ratelimit()) + dev_warn(&urb->dev->dev, "may be reset is needed?..\n"); goto goon; default: - dev_warn(&urb->dev->dev, "Rx status %d\n", status); + if (printk_ratelimit()) + dev_warn(&urb->dev->dev, "Rx status %d\n", status); goto goon; } |