|
@@ -514,6 +514,21 @@ struct hci_dev *hci_get_route(bdaddr_t *dst, bdaddr_t *src)
|
|
}
|
|
}
|
|
EXPORT_SYMBOL(hci_get_route);
|
|
EXPORT_SYMBOL(hci_get_route);
|
|
|
|
|
|
|
|
+/* This function requires the caller holds hdev->lock */
|
|
|
|
+static void le_conn_failed(struct hci_conn *conn, u8 status)
|
|
|
|
+{
|
|
|
|
+ struct hci_dev *hdev = conn->hdev;
|
|
|
|
+
|
|
|
|
+ conn->state = BT_CLOSED;
|
|
|
|
+
|
|
|
|
+ mgmt_connect_failed(hdev, &conn->dst, conn->type, conn->dst_type,
|
|
|
|
+ status);
|
|
|
|
+
|
|
|
|
+ hci_proto_connect_cfm(conn, status);
|
|
|
|
+
|
|
|
|
+ hci_conn_del(conn);
|
|
|
|
+}
|
|
|
|
+
|
|
static void create_le_conn_complete(struct hci_dev *hdev, u8 status)
|
|
static void create_le_conn_complete(struct hci_dev *hdev, u8 status)
|
|
{
|
|
{
|
|
struct hci_conn *conn;
|
|
struct hci_conn *conn;
|
|
@@ -530,14 +545,7 @@ static void create_le_conn_complete(struct hci_dev *hdev, u8 status)
|
|
if (!conn)
|
|
if (!conn)
|
|
goto done;
|
|
goto done;
|
|
|
|
|
|
- conn->state = BT_CLOSED;
|
|
|
|
-
|
|
|
|
- mgmt_connect_failed(hdev, &conn->dst, conn->type, conn->dst_type,
|
|
|
|
- status);
|
|
|
|
-
|
|
|
|
- hci_proto_connect_cfm(conn, status);
|
|
|
|
-
|
|
|
|
- hci_conn_del(conn);
|
|
|
|
|
|
+ le_conn_failed(conn, status);
|
|
|
|
|
|
done:
|
|
done:
|
|
hci_dev_unlock(hdev);
|
|
hci_dev_unlock(hdev);
|