summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorSudha Bheemanna <b.sudha@samsung.com>2016-09-08 11:21:06 +0530
committerSeung-Woo Kim <sw0312.kim@samsung.com>2016-12-14 13:53:16 +0900
commitbfb2d61eeee235c0b8c8787a3bc43bfd565b8596 (patch)
tree8bc2a4d5e16cb1f1846bb686154dbe3a79833cd1 /net
parent963f8315cd63ff4424f37ef581e933b0b0a415d1 (diff)
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. Change-Id: I9877556c0b0ab4826f5f4934ead4d85b7837036d Signed-off-by: Sudha Bheemanna <b.sudha@samsung.com> [squash patches, LE connection policy, set dest address and check dest address before cancelling connection] Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
Diffstat (limited to 'net')
-rw-r--r--net/bluetooth/hci_conn.c13
-rw-r--r--net/bluetooth/hci_event.c4
2 files changed, 17 insertions, 0 deletions
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
index 0a6ac44f5cfe..24a1965b1d23 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -359,7 +359,12 @@ static void hci_conn_timeout(struct work_struct *work)
if (conn->out) {
if (conn->type == ACL_LINK)
hci_acl_create_connection_cancel(conn);
+#ifdef TIZEN_BT
+ else if (conn->type == LE_LINK &&
+ bacmp(&conn->dst, BDADDR_ANY))
+#else
else if (conn->type == LE_LINK)
+#endif
hci_le_create_connection_cancel(conn);
} else if (conn->type == SCO_LINK || conn->type == ESCO_LINK) {
hci_reject_sco(conn);
@@ -691,7 +696,15 @@ static void hci_req_add_le_create_conn(struct hci_request *req,
cp.scan_interval = cpu_to_le16(hdev->le_scan_interval);
cp.scan_window = cpu_to_le16(hdev->le_scan_window);
+#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);
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index 697a140b4302..1a63bceb8c69 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -4637,6 +4637,10 @@ static void hci_le_conn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
}
}
} else {
+#ifdef TIZEN_BT
+ /* LE auto connect */
+ bacpy(&conn->dst, &ev->bdaddr);
+#endif
cancel_delayed_work(&conn->le_conn_timeout);
}