Thread (1 message) 1 message, 1 author, 2013-01-24

Re: [RFC] net: usbnet: prevent buggy devices from killing us

From: Bjørn Mork <hidden>
Date: 2013-01-24 13:42:09

Oliver Neukum [off-list ref] writes:
On Thursday 24 January 2013 13:47:40 Bjørn Mork wrote:
quoted
Oliver Neukum [off-list ref] writes:
quoted
On Thursday 24 January 2013 12:22:54 Bjørn Mork wrote:
quoted
Sorry for being daft, but how do I code the "20 among the last 30" part
there?
Just by agreeing that you can live with false negatives but not false positives

if (++counter > 30) {
	counter = bogus = 0;
} else {
	if (is_bogus(packet)
		bogus++;
	if (bogus > counter/2)
Should probably be something like bogus > counter/2 + 10
right
quoted
quoted
		throttle();
}
So, add two new counters to struct usbnet for this?  That seems a little
overkill to me, but I don't see how else to implement anything like that.
Memory is cheap.
OK
quoted
It is still not completely clear to me how the throttling/unthrottling
should be done.  It tested with static counters (to avoid having to
rebuild everything for this test) and a new EVENT_RX_THROTTLE flag.
Still on top of my previous patch just for safety while testing, as I am
fed up of having to reboot all the time :-)

Doing the flag test in rx_submit seems simpler than trying to track all
the places this is called.  Still checking the dev->done.qlen to be able
to unthrottle.
Ideally we would do some error handling. Does the device keep spewing
zero packets for all eternity?
Yes. The only way to get rid of the bug once it has triggered seems to
be powering the device off/on.  So unthrottling is not important for
this device.  But I guess it will be for other devices with more
temporary problems.



Bjørn
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help