Bluetooth: Set filter policy for LE connection 35/293135/1
authorSudha Bheemanna <b.sudha@samsung.com>
Thu, 8 Sep 2016 05:51:06 +0000 (11:21 +0530)
committerWootak Jung <wootak.jung@samsung.com>
Mon, 22 May 2023 01:03:49 +0000 (10:03 +0900)
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 e08c22803bba3d41438d4d35acadb79e765b18c8..40758220de69c849dbb1449b1779f1eae44cfe72 100644 (file)
@@ -940,7 +940,15 @@ static void hci_req_add_le_create_conn(struct hci_request *req,
                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);
index 2090d042b561b86406b80b932369a18562c14c6e..58c22f4428d7a4670ec49b47cb8b73f43a3fc846 100644 (file)
@@ -5413,6 +5413,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 f4e43d61ff3cd0d792ec4f1f39cfc210d2a5196c..c43e9e779f18c2a099c7fabf9c50fe0047e4b5ed 100644 (file)
@@ -2900,7 +2900,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,