usb-linux: Get the alt. setting from sysfs rather then asking the dev
commitc43831fb47e4ee51967870c7b5deb08789b0874c
authorHans de Goede <hdegoede@redhat.com>
Wed, 24 Nov 2010 11:57:59 +0000 (24 12:57 +0100)
committerGerd Hoffmann <kraxel@redhat.com>
Wed, 4 May 2011 10:25:24 +0000 (4 12:25 +0200)
tree148a7edf64a65a4a9b89ebe79df246ae775bc4a6
parented3a328db9d9a027092edc2c17348068e3271cef
usb-linux: Get the alt. setting from sysfs rather then asking the dev

At least one device I have lies when receiving a USB_REQ_GET_INTERFACE,
always returning 0 even if the alternate setting is different. This is
likely caused because in practice this control message is never used as
the operating system's usb stack knows which alternate setting it has
told the device to get into, and thus this ctrl message does not get
tested by device manufacturers.

When usb_fs_type == USB_FS_SYS, the active alt. setting can be read directly
from sysfs, which allows using this device through qemu's usb redirection.
More in general it seems a good idea to not send needless control msg's to
devices, esp. as the code in question is called every time a set_interface
is done. Which happens multiple times during virtual machine startup, and
when device drivers are activating the usb device.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
usb-linux.c