Bluetooth: Use hci_disconnect for immediate disconnection from SMP
authorJohan Hedberg <johan.hedberg@intel.com>
Mon, 18 Aug 2014 17:33:29 +0000 (20:33 +0300)
committerMarcel Holtmann <marcel@holtmann.org>
Mon, 8 Sep 2014 17:07:54 +0000 (19:07 +0200)
commit1e91c29eb60c031f4297d1a58125d0bd37691348
treefe779db5481f98eb8d4aa281dfdd93d0a6538672
parente31fb86005a01b7df8427b09d0158da28d0c773a
Bluetooth: Use hci_disconnect for immediate disconnection from SMP

Relying on the l2cap_conn_del procedure (triggered through the
l2cap_conn_shutdown API) to get the connection disconnected is not
reliable as it depends on all users releasing (through hci_conn_drop)
and that there's at least one user (so hci_conn_drop is called at least
one time).

A much simpler and more reliable solution is to call hci_disconnect()
directly from the SMP code when we want to disconnect. One side-effect
this has is that it prevents any SMP Failure PDU from being sent before
the disconnection, however neither one of the scenarios where
l2cap_conn_shutdown was used really requires this.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/smp.c