From patchwork Thu Nov 8 16:26:21 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steve Glendinning X-Patchwork-Id: 197855 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 1C2152C0193 for ; Fri, 9 Nov 2012 04:29:04 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756314Ab2KHQ01 (ORCPT ); Thu, 8 Nov 2012 11:26:27 -0500 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 Received: from ivana.shawell.net (unknown [10.0.20.109]) by drevil.shawell.net (Postfix) with ESMTP id C1B3E67A21; Thu, 8 Nov 2012 16:26:22 +0000 (GMT) From: Steve Glendinning To: oneukum@suse.de Cc: netdev@vger.kernel.org, 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> X-Mailer: git-send-email 1.7.10.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org 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 Acked-by: Oliver Neukum --- 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);