Bluetooth: Set filter policy for LE connection
authorSudha Bheemanna <b.sudha@samsung.com>
Thu, 8 Sep 2016 05:51:06 +0000 (11:21 +0530)
committerWootak Jung <wootak.jung@samsung.com>
Wed, 14 Jun 2023 05:01:50 +0000 (14:01 +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>
Signed-off-by: Wootak Jung <wootak.jung@samsung.com>
net/bluetooth/hci_event.c
net/bluetooth/hci_sync.c

index a958080a5cd9635b9fff2ddb48397cd584138dbb..313d7d1cd6aa2c6b1afc2cdcb305d0846d0b341c 100644 (file)
@@ -6000,6 +6000,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 3c50b3920a5e9dbde26b50ff9fab5c112d9252b1..39af0cfc5443944b6f23741e0f997bc0dc091a96 100644 (file)
@@ -5092,7 +5092,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)
 {
+#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);
 
        if (hdev->hci_ver < BLUETOOTH_VER_1_2)
@@ -6053,7 +6057,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);