1. 12 Mar, 2020 1 commit
    • Joseph Hwang's avatar
      Bluetooth: clean up connection in hci_cs_disconnect · b8d29052
      Joseph Hwang authored
      In bluetooth core specification 4.2,
      Vol 2, Part E, 7.8.9 LE Set Advertise Enable Command, it says
      
          The Controller shall continue advertising until ...
          or until a connection is created or ...
          In these cases, advertising is then disabled.
      
      Hence, advertising would be disabled before a connection is
      established. In current kernel implementation, advertising would
      be re-enabled when all connections are terminated.
      
      The correct disconnection flow looks like
      
        < HCI Command: Disconnect
      
        > HCI Event: Command Status
            Status: Success
      
        > HCI Event: Disconnect Complete
            Status: Success
      
      Specifically, the last Disconnect Complete Event would trigger a
      callback function hci_event.c:hci_disconn_complete_evt() to
      cleanup the connection and re-enable advertising when proper.
      
      However, sometimes, there might occur an exception in the controller
      when disconnection is being executed. The disconnection flow might
      then look like
      
        < HCI Command: Disconnect
      
        > HCI Event: Command Status
            Status: Unknown Connection Identifier
      
        Note that "> HCI Event: Disconnect Complete" is missing when such an
      exception occurs. This would result in advertising staying disabled
      forever since the connection in question is not cleaned up correctly.
      
      To fix the controller exception issue, we need to do some connection
      cleanup when the disconnect command status indicates an error.
      Signed-off-by: default avatarJoseph Hwang <josephsih@chromium.org>
      Signed-off-by: default avatarManish Mandlik <mmandlik@google.com>
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      b8d29052
  2. 11 Mar, 2020 9 commits
  3. 08 Mar, 2020 7 commits
  4. 07 Mar, 2020 1 commit
  5. 04 Mar, 2020 4 commits
  6. 01 Mar, 2020 1 commit
  7. 28 Feb, 2020 13 commits
  8. 19 Feb, 2020 2 commits
  9. 18 Feb, 2020 2 commits