linux/drivers/usb/storage
Bjørn Mork 0b520a5db2 USB: storage: fix Huawei mode switching regression
commit ab4b71644a upstream.

This reverts commit 200e0d99 ("USB: storage: optimize to match the
Huawei USB storage devices and support new switch command" and the
followup bugfix commit cd060956 ("USB: storage: properly handle
the endian issues of idProduct").

The commit effectively added a large number of Huawei devices to
the deprecated usb-storage mode switching logic.  Many of these
devices have been in use and supported by the userspace
usb_modeswitch utility for years.  Forcing the switching inside
the kernel causes a number of regressions as a result of ignoring
existing onfigurations, and also completely takes away the ability
to configure mode switching per device/system/user.

Known regressions caused by this:
 - Some of the devices support multiple modes, using different
  switching commands.  There are existing configurations taking
  advantage of this.

 - There is a real use case for disabling mode switching and
  instead mounting the exposed storage device. This becomes
  impossible with switching logic inside the usb-storage driver.

 - At least on device fail as a result of the usb-storage switching
  command, becoming completely unswitchable. This is possibly a
  firmware bug, but still a regression because the device work as
  expected using usb_modeswitch defaults.

In-kernel mode switching was deprecated years ago with the
development of the more user friendly userspace alternatives. The
existing list of devices in usb-storage was only kept to prevent
breaking already working systems.  The long term plan is to remove
the list, not to add to it. Ref:
http://permalink.gmane.org/gmane.linux.usb.general/28543

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Cc: <fangxiaozhi@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-03-20 13:04:58 -07:00
..
alauda.c usb: Disable dynamic id of USB storage subdrivers 2012-01-24 14:31:03 -08:00
cypress_atacb.c usb: Disable dynamic id of USB storage subdrivers 2012-01-24 14:31:03 -08:00
datafab.c usb: Disable dynamic id of USB storage subdrivers 2012-01-24 14:31:03 -08:00
debug.c
debug.h
ene_ub6250.c usb/storage: redefine US_BULK_FLAG_IN and use it 2012-02-28 11:07:42 -08:00
freecom.c usb: Disable dynamic id of USB storage subdrivers 2012-01-24 14:31:03 -08:00
initializers.c USB: storage: fix Huawei mode switching regression 2013-03-20 13:04:58 -07:00
initializers.h USB: storage: fix Huawei mode switching regression 2013-03-20 13:04:58 -07:00
isd200.c usb: Disable dynamic id of USB storage subdrivers 2012-01-24 14:31:03 -08:00
jumpshot.c usb: Disable dynamic id of USB storage subdrivers 2012-01-24 14:31:03 -08:00
karma.c usb: Disable dynamic id of USB storage subdrivers 2012-01-24 14:31:03 -08:00
Kconfig USB: mark uas driver as BROKEN 2012-12-17 10:37:45 -08:00
libusual.c usb-storage: prepare for subdriver separation 2009-03-24 16:20:34 -07:00
Makefile Merge branch 'staging-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 2011-03-16 15:19:35 -07:00
onetouch.c usb: Disable dynamic id of USB storage subdrivers 2012-01-24 14:31:03 -08:00
option_ms.c usb: Add module.h to drivers/usb consumers who really use it. 2011-10-31 19:31:25 -04:00
option_ms.h USB: unusual dev for Option N.V. ZeroCD modems 2009-01-07 10:00:09 -08:00
protocol.c usb-storage: Accept 8020i-protocol commands longer than 12 bytes 2011-11-14 17:05:03 -08:00
protocol.h USB: usb-storage: merge ATAPI and QIC-157 protocol routines 2009-01-07 09:59:57 -08:00
realtek_cr.c usb/storage: redefine US_BULK_FLAG_IN and use it 2012-02-28 11:07:42 -08:00
scsiglue.c SCSI & usb-storage: add try_rc_10_first flag 2012-07-16 09:04:10 -07:00
scsiglue.h
sddr09.c usb: Disable dynamic id of USB storage subdrivers 2012-01-24 14:31:03 -08:00
sddr55.c usb: Disable dynamic id of USB storage subdrivers 2012-01-24 14:31:03 -08:00
shuttle_usbat.c usb: Disable dynamic id of USB storage subdrivers 2012-01-24 14:31:03 -08:00
sierra_ms.c usb: Add module.h to drivers/usb consumers who really use it. 2011-10-31 19:31:25 -04:00
sierra_ms.h USB Storage Sierra: TRU-Install feature update 2008-08-13 17:32:51 -07:00
transport.c usb/storage: redefine US_BULK_FLAG_IN and use it 2012-02-28 11:07:42 -08:00
transport.h usb/storage: a couple defines from drivers/usb/storage/transport.h to include/linux/usb/storage.h 2012-02-28 11:05:18 -08:00
uas.c Revert "usb/uas: make sure data urb is gone if we receive status before that" 2012-08-09 08:31:29 -07:00
unusual_alauda.h USB: storage: Use USB_ prefix instead of US_ prefix 2010-10-22 10:21:49 -07:00
unusual_cypress.h USB: usb-storage: unusual_devs update for Super TOP SATA bridge 2013-02-28 06:59:07 -08:00
unusual_datafab.h USB: storage: Use USB_ prefix instead of US_ prefix 2010-10-22 10:21:49 -07:00
unusual_devs.h USB: storage: fix Huawei mode switching regression 2013-03-20 13:04:58 -07:00
unusual_ene_ub6250.h Staging: Merge ENE UB6250 SD card codes from keucr to drivers/usb/storage 2011-03-07 13:40:59 -08:00
unusual_freecom.h USB: storage: Use USB_ prefix instead of US_ prefix 2010-10-22 10:21:49 -07:00
unusual_isd200.h USB: storage: Use USB_ prefix instead of US_ prefix 2010-10-22 10:21:49 -07:00
unusual_jumpshot.h USB: storage: Use USB_ prefix instead of US_ prefix 2010-10-22 10:21:49 -07:00
unusual_karma.h USB: storage: Use USB_ prefix instead of US_ prefix 2010-10-22 10:21:49 -07:00
unusual_onetouch.h USB: storage: Use USB_ prefix instead of US_ prefix 2010-10-22 10:21:49 -07:00
unusual_realtek.h usb-storage: fix up the unusual_realtek device list 2011-05-17 11:56:28 -07:00
unusual_sddr09.h USB: storage: Use USB_ prefix instead of US_ prefix 2010-10-22 10:21:49 -07:00
unusual_sddr55.h USB: storage: Use USB_ prefix instead of US_ prefix 2010-10-22 10:21:49 -07:00
unusual_usbat.h USB: storage: Use USB_ prefix instead of US_ prefix 2010-10-22 10:21:49 -07:00
usb.c USB: storage: Define a new macro for USB storage match rules 2013-02-11 08:47:20 -08:00
usb.h usb-storage: fix freezing of the scanning thread 2012-02-21 16:29:15 -08:00
usual-tables.c USB: storage: Define a new macro for USB storage match rules 2013-02-11 08:47:20 -08:00