diff options
author | Sudha Bheemanna <b.sudha@samsung.com> | 2016-09-08 11:21:06 +0530 |
---|---|---|
committer | Seung-Woo Kim <sw0312.kim@samsung.com> | 2016-12-14 13:53:16 +0900 |
commit | bfb2d61eeee235c0b8c8787a3bc43bfd565b8596 (patch) | |
tree | 8bc2a4d5e16cb1f1846bb686154dbe3a79833cd1 /net | |
parent | 963f8315cd63ff4424f37ef581e933b0b0a415d1 (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.c | 13 | ||||
-rw-r--r-- | net/bluetooth/hci_event.c | 4 |
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); } |