On 2012-09-17 11:08, Hans de Goede wrote: > Hi, > > On 09/15/2012 06:27 PM, Jan Kiszka wrote: >> From: Jan Kiszka <jan.kis...@siemens.com> >> >> This follows the logic of host-linux: If a 2.0 device has no ISO >> endpoint and no interrupt endpoint with a packet size > 64, we can >> attach it also to an 1.1 host controller. In case the redir server does >> not report endpoint sizes, play safe and remove the 1.1 compatibility as >> well. >> >> Signed-off-by: Jan Kiszka <jan.kis...@siemens.com> > > Interesting thanks for the patch. I like the approach you took (simple > code), > but unfortunately it won't work, if you look at usbredir_device_connect(), > where you do the dev->dev.speedmask |= USB_SPEED_MASK_FULL, it also > actually attaches the device to the controller, from which point on the > guest will see the device. > > What happens on the wire is that the usbredir-host sends (in order): > -ep_info + interface_info > -device_connect message > > So your clearing of the speed-mask will never trigger, unless ep-info > gets repeated later (which it does under certain circumstances).
Hmm, what a pity... > > I suggest instead changing the code to set a "fullspeed_compatible" flag > in struct USBRedirDevice from usbredir_device_disconnect(), clear that > flag from usbredir_ep_info and use it to add to the mask in > usbredir_device_connect(). OK. > > ### > > Another issue is what happens if a device "grows" incompatible endpoints > after being attached, ie a webcam could have no isoc endpoints in alt > setting 0, and then grow an isoc endpoint on a set_interface. So we > would need a check for a device becoming not fullspeed compat while > being attached at fullspeed in usbredir_ep_info(), and then call > usbredir_reject_device() when this happens. ...and this patch started so simple. OK. > > Although not pretty I'm ok with this, since I actually want to add > similar code to allow usb-3 (superspeed) devices like a usb-3 usb-stick > to work with ehci or uhci controllers :) Great, that would have been my next question, but I don't have hardware for that around yet. BTW, I'm facing several incompatibilities with passed-through CDC/ACM devices (e.g. a Galaxy S2), independent of my patch. Both host-linux and redir doesn't allow to use them properly but show different symptoms. Need to analyze and report once time permits. Jan
signature.asc
Description: OpenPGP digital signature