Do not unnecessarily clear halt condition on bulk output endpoint.

It has been observed that some dongles (e.g. Huawei EC156/EC1561) may
fail to switch to the modem mode if mist clears the halt condition on
the bulk output endpoint after the USB message is successfully sent.
This CL modifies mist not to unnecessarily clear the halt condition on
the bulk output endpoint.

BUG=chromium:313588
TEST=Tested the following:
1. Build and run unit tests.
2. Verify on daisy_spring and peppy that mist reliably switches the
   Huawei EC156/EC1561 (and other supported dongles) from the mass
   storage mode to the modem mode.

(cherry picked from commit c013ae9044f5c4ee6a0f3e63ace80c8a8526e533)

Change-Id: I9464fad8f6d844efc1a427c61f2173c99480bd38
Reviewed-on: https://chromium-review.googlesource.com/178321
Reviewed-by: Ben Chan <benchan@chromium.org>
Commit-Queue: Ben Chan <benchan@chromium.org>
Tested-by: Ben Chan <benchan@chromium.org>
1 file changed
tree: b9a359156be3a502bfd9b21da7166a778e9ea253
  1. proto/
  2. 51-mist.rules
  3. common.mk
  4. config_loader.cc
  5. config_loader.h
  6. config_loader_unittest.cc
  7. context.cc
  8. context.h
  9. default.conf
  10. event_dispatcher.cc
  11. event_dispatcher.h
  12. event_dispatcher_unittest.cc
  13. LICENSE
  14. main.cc
  15. Makefile
  16. metrics.cc
  17. metrics.h
  18. mist.cc
  19. mist.gyp
  20. mist.h
  21. mock_config_loader.cc
  22. mock_config_loader.h
  23. mock_context.cc
  24. mock_context.h
  25. mock_udev.cc
  26. mock_udev.h
  27. mock_udev_device.cc
  28. mock_udev_device.h
  29. mock_udev_enumerate.cc
  30. mock_udev_enumerate.h
  31. mock_udev_list_entry.cc
  32. mock_udev_list_entry.h
  33. mock_udev_monitor.cc
  34. mock_udev_monitor.h
  35. mock_usb_device_event_observer.cc
  36. mock_usb_device_event_observer.h
  37. OWNERS
  38. README
  39. testrunner.cc
  40. udev.cc
  41. udev.h
  42. udev_device.cc
  43. udev_device.h
  44. udev_enumerate.cc
  45. udev_enumerate.h
  46. udev_list_entry.cc
  47. udev_list_entry.h
  48. udev_monitor.cc
  49. udev_monitor.h
  50. usb_bulk_transfer.cc
  51. usb_bulk_transfer.h
  52. usb_config_descriptor.cc
  53. usb_config_descriptor.h
  54. usb_config_descriptor_unittest.cc
  55. usb_constants.cc
  56. usb_constants.h
  57. usb_constants_unittest.cc
  58. usb_device.cc
  59. usb_device.h
  60. usb_device_descriptor.cc
  61. usb_device_descriptor.h
  62. usb_device_descriptor_unittest.cc
  63. usb_device_event_notifier.cc
  64. usb_device_event_notifier.h
  65. usb_device_event_notifier_unittest.cc
  66. usb_device_event_observer.h
  67. usb_endpoint_descriptor.cc
  68. usb_endpoint_descriptor.h
  69. usb_endpoint_descriptor_unittest.cc
  70. usb_error.cc
  71. usb_error.h
  72. usb_error_unittest.cc
  73. usb_interface.cc
  74. usb_interface.h
  75. usb_interface_descriptor.cc
  76. usb_interface_descriptor.h
  77. usb_interface_descriptor_unittest.cc
  78. usb_manager.cc
  79. usb_manager.h
  80. usb_modem_one_shot_switcher.cc
  81. usb_modem_one_shot_switcher.h
  82. usb_modem_switch_context.cc
  83. usb_modem_switch_context.h
  84. usb_modem_switch_context_unittest.cc
  85. usb_modem_switch_operation.cc
  86. usb_modem_switch_operation.h
  87. usb_modem_switcher.cc
  88. usb_modem_switcher.h
  89. usb_transfer.cc
  90. usb_transfer.h
  91. usb_transfer_unittest.cc