Skip to content

Commit 00c4bfd

Browse files
steveglenpopcornmix
authored andcommitted
usbnet: ratelimit kevent may have been dropped warnings
when something goes wrong, a flood of these messages can be generated by usbnet (thousands per second). This doesn't generally *help* the condition so this patch ratelimits the rate of their generation. There's an underlying problem in usbnet's kevent deferral mechanism which needs fixing, specifically that events *can* get dropped and not handled. This patch doesn't address this, but just mitigates fallout caused by the current implemention. Signed-off-by: Steve Glendinning <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 4b61ead commit 00c4bfd

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

drivers/net/usb/usbnet.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -325,10 +325,12 @@ static enum skb_state defer_bh(struct usbnet *dev, struct sk_buff *skb,
325325
void usbnet_defer_kevent (struct usbnet *dev, int work)
326326
{
327327
set_bit (work, &dev->flags);
328-
if (!schedule_work (&dev->kevent))
329-
netdev_err(dev->net, "kevent %d may have been dropped\n", work);
330-
else
328+
if (!schedule_work (&dev->kevent)) {
329+
if (net_ratelimit())
330+
netdev_err(dev->net, "kevent %d may have been dropped\n", work);
331+
} else {
331332
netdev_dbg(dev->net, "kevent %d scheduled\n", work);
333+
}
332334
}
333335
EXPORT_SYMBOL_GPL(usbnet_defer_kevent);
334336

0 commit comments

Comments
 (0)