• Marcel Holtmann's avatar
    Bluetooth: Fix endless loop with HCI_QUIRK_RESET_ON_CLOSE · 3a6afbd2
    Marcel Holtmann authored
    Really early versions of the Bluetooth specification were unclear
    with the behavior of HCI Reset for USB devices. They assumed that
    also an USB reset needs to be issued. Later Bluetooth specifications
    cleared this out and it is safe to call HCI Reset without affecting
    the transport.
    
    For old devices that misbehave, the HCI_QUIRK_RESET_ON_CLOSE quirk
    was introduced to postpone the HCI Reset until the device was no
    longer in use.
    
    One of these devices is the Digianswer BPA-105 Bluetooth Protocol
    Analyzer. The only problem now is that with the quirk set, the
    HCI Reset is also executed at the end of the setup phase. So the
    controller gets configured and then it disconnects from the USB
    bus, connects again, gets configured and of course disconnects
    again. This game goes on forever.
    
    For devices that need HCI_QUIRK_RESET_ON_CLOSE it is important
    that the HCI Reset is not executed after the setup phase. In
    specific when HCI_AUTO_OFF is set, do not call HCI Reset when
    closing the device.
    Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
    Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
    3a6afbd2
hci_core.c 80.5 KB