From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steve Glendinning Subject: [PATCH] usbnet: ratelimit kevent may have been dropped warnings Date: Thu, 8 Nov 2012 16:26:21 +0000 Message-ID: <1352391981-15692-1-git-send-email-steve.glendinning@shawell.net> Cc: netdev@vger.kernel.org, Steve Glendinning To: oneukum@suse.de Return-path: Received: from cust23-dsl91-135-1.idnet.net ([91.135.1.23]:44637 "EHLO drevil.shawell.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756289Ab2KHQ00 (ORCPT ); Thu, 8 Nov 2012 11:26:26 -0500 Sender: netdev-owner@vger.kernel.org List-ID: 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 --- drivers/net/usb/usbnet.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c index 5bf7717..3565e6d 100644 --- a/drivers/net/usb/usbnet.c +++ b/drivers/net/usb/usbnet.c @@ -359,10 +359,12 @@ static enum skb_state defer_bh(struct usbnet *dev, struct sk_buff *skb, void usbnet_defer_kevent (struct usbnet *dev, int work) { set_bit (work, &dev->flags); - if (!schedule_work (&dev->kevent)) - netdev_err(dev->net, "kevent %d may have been dropped\n", work); - else + if (!schedule_work (&dev->kevent)) { + if (net_ratelimit()) + netdev_err(dev->net, "kevent %d may have been dropped\n", work); + } else { netdev_dbg(dev->net, "kevent %d scheduled\n", work); + } } EXPORT_SYMBOL_GPL(usbnet_defer_kevent); -- 1.7.10.4