From c51e6e1ca4117a4ee80b6d75c8ad84dfb798f9bd Mon Sep 17 00:00:00 2001 From: Sudha Bheemanna Date: Thu, 8 Sep 2016 11:21:06 +0530 Subject: [PATCH] Bluetooth: Set filter policy for LE connection This patch sets the filter policy to a default value 0x01 during LE auto connection if the destination address is not set. And it updates the destination address once the LE connection complete event is recieved during LE auto connection. And for it checks valid destination address before cancelling LE connection when connection timeout occurs. Signed-off-by: Sudha Bheemanna [squash patches, LE connection policy, set dest address and check dest address before cancelling connection] Signed-off-by: Seung-Woo Kim Signed-off-by: Amit Purwar Signed-off-by: Wootak Jung Signed-off-by: Jaehoon Chung Change-Id: I288d4e323e3c39fcef5215b071c7e55af9638702 --- net/bluetooth/hci_event.c | 4 ++++ net/bluetooth/hci_sync.c | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c index 1e4a886a9d02..a76e5bfbd7ba 100644 --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c @@ -5827,6 +5827,10 @@ static void le_conn_complete_evt(struct hci_dev *hdev, u8 status, } } } else { +#ifdef TIZEN_BT + /* LE auto connect */ + bacpy(&conn->dst, bdaddr); +#endif cancel_delayed_work(&conn->le_conn_timeout); } diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c index 815e69f6cce8..a168ea6b9d63 100644 --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c @@ -5271,7 +5271,11 @@ static int hci_le_connect_cancel_sync(struct hci_dev *hdev, static int hci_connect_cancel_sync(struct hci_dev *hdev, struct hci_conn *conn, u8 reason) { +#ifdef TIZEN_BT + if (conn->type == LE_LINK && bacmp(&conn->dst, BDADDR_ANY)) +#else if (conn->type == LE_LINK) +#endif return hci_le_connect_cancel_sync(hdev, conn, reason); if (conn->type == ISO_LINK) { @@ -6299,7 +6303,15 @@ int hci_le_create_conn_sync(struct hci_dev *hdev, struct hci_conn *conn) cp.scan_interval = cpu_to_le16(hdev->le_scan_int_connect); cp.scan_window = cpu_to_le16(hdev->le_scan_window_connect); +#ifdef TIZEN_BT + /* LE auto connect */ + if (!bacmp(&conn->dst, BDADDR_ANY)) + cp.filter_policy = 0x1; + else + bacpy(&cp.peer_addr, &conn->dst); +#else bacpy(&cp.peer_addr, &conn->dst); +#endif cp.peer_addr_type = conn->dst_type; cp.own_address_type = own_addr_type; cp.conn_interval_min = cpu_to_le16(conn->le_conn_min_interval); -- 2.34.1