Steps to reproduce:
1.Connect run(4) device
2.Suspend laptop
3.Disconnect run(4)
4.Resume laptop
Interface is "UP,RUNNING", while driver fills dmesg with "device
timeout" messages. If some device is connected to the port which
was used by run, run0 detaches (this signals uhub to do its work,
I think).
I can guess from looking on other usb wifi drivers that this is not
exclusive to run.
Here's my idea on how to fix it: make usb re-explore bus on resume.
Index: usb.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/usb.c,v
retrieving revision 1.78
diff -u -p -r1.78 usb.c
--- usb.c 18 Sep 2011 23:24:12 -0000 1.78
+++ usb.c 30 Nov 2011 02:47:34 -0000
@@ -769,6 +769,10 @@ usb_activate(struct device *self, int ac
}
}
break;
+ case DVACT_RESUME:
+ /* find out if something changed */
+ usb_needs_explore(dev, 0);
+ break;
}
return (rv);
}
--
Alexander Polakov | plhk.ru