Commit 1b0336bb36f88976f1210a65b62f6a3e9578ee7b

Authored by Marcel Holtmann
1 parent 384943ec1b

Bluetooth: Don't use hci_acl_connect_cancel() for incoming connections

The connection setup phase takes around 2 seconds or longer and in
that time it is possible that the need for an ACL connection is no
longer present. If that happens then, the connection attempt will
be canceled.

This only applies to outgoing connections, but currently it can also
be triggered by incoming connection. Don't call hci_acl_connect_cancel()
on incoming connection since these have to be either accepted or rejected
in this state. Once they are successfully connected they need to be
fully disconnected anyway.

Also remove the wrong hci_acl_disconn() call for SCO and eSCO links
since at this stage they can't be disconnected either, because the
connection handle is still unknown.

Based on a report by Johan Hedberg <johan.hedberg@nokia.com>

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Tested-by: Johan Hedberg <johan.hedberg@nokia.com>

Showing 1 changed file with 1 additions and 3 deletions Side-by-side Diff

net/bluetooth/hci_conn.c
... ... @@ -171,10 +171,8 @@
171 171 switch (conn->state) {
172 172 case BT_CONNECT:
173 173 case BT_CONNECT2:
174   - if (conn->type == ACL_LINK)
  174 + if (conn->type == ACL_LINK && conn->out)
175 175 hci_acl_connect_cancel(conn);
176   - else
177   - hci_acl_disconn(conn, 0x13);
178 176 break;
179 177 case BT_CONFIG:
180 178 case BT_CONNECTED: