Bluetooth: Set filter policy for LE connection 77/208677/3
authorSudha Bheemanna <b.sudha@samsung.com>
Thu, 8 Sep 2016 05:51:06 +0000 (11:21 +0530)
committerAmit Purwar <amit.purwar@samsung.com>
Fri, 28 Jun 2019 04:15:04 +0000 (09:45 +0530)
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>
Signed-off-by: Amit Purwar <amit.purwar@samsung.com>
net/bluetooth/hci_conn.c
net/bluetooth/hci_event.c
net/bluetooth/hci_request.c

index dfad61295cab1b28c4d15f52ac7ef6d61a017ddb..44845bfd431d447bdcc63d9acdb140ef2e0654d0 100644 (file)
@@ -866,7 +866,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 = cp.scan_interval;
 
+#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);
index 6261613eb9ff57070be1831f69261e27c4159173..78ce5f6c994bfeb10e82605cf4bae3f814d7a7b8 100644 (file)
@@ -4978,6 +4978,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);
        }
 
index 845d2fbc70c7ebd715b4838f00fa8a5c5975bcfa..1e9b64977eaf10b2dedcecd076670b6530115410 100644 (file)
@@ -2213,7 +2213,11 @@ void __hci_abort_conn(struct hci_request *req, struct hci_conn *conn,
 
                break;
        case BT_CONNECT:
+#ifdef TIZEN_BT
+               if (conn->type == LE_LINK && bacmp(&conn->dst, BDADDR_ANY)) {
+#else
                if (conn->type == LE_LINK) {
+#endif
                        if (test_bit(HCI_CONN_SCANNING, &conn->flags))
                                break;
                        hci_req_add(req, HCI_OP_LE_CREATE_CONN_CANCEL,