From: Steve Glendinning <steve.glendinning@shawell.net> Date: 2012-11-08 16:26:26
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 <steve.glendinning@shawell.net>
---
drivers/net/usb/usbnet.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
@@ -359,10 +359,12 @@ static enum skb_state defer_bh(struct usbnet *dev, struct sk_buff *skb,voidusbnet_defer_kevent(structusbnet*dev,intwork){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);
From: David Miller <davem@davemloft.net> Date: 2012-11-09 22:00:04
From: Steve Glendinning <steve.glendinning@shawell.net>
Date: Thu, 8 Nov 2012 16:26:21 +0000
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 <steve.glendinning@shawell.net>
From: Oliver Neukum <hidden> Date: 2012-11-12 07:11:09
On Thursday 08 November 2012 16:26:21 Steve Glendinning wrote:
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 <steve.glendinning@shawell.net>
From: Oliver Neukum <hidden> Date: 2012-11-12 07:16:21
On Thursday 08 November 2012 16:26:21 Steve Glendinning wrote:
There's an underlying problem in usbnet's kevent deferral
This is imported from schedule_work().
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.
All is not lost, as the flag is still set. How about starting a timer
in the failure case? It feels kind of dirty, but a solution with locks would
leave open a window to a race in any case.
Regards
Oliver