Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
[deliverable/linux.git] / net / bluetooth / hci_conn.c
index 32575b49f4a0c2218ef8a084888bc8469ba92306..bf9f8a801a2e998bfe69bb5ca4daef061fbf83b1 100644 (file)
@@ -719,6 +719,13 @@ done:
        hci_dev_unlock(hdev);
 }
 
+static bool conn_use_rpa(struct hci_conn *conn)
+{
+       struct hci_dev *hdev = conn->hdev;
+
+       return hci_dev_test_flag(hdev, HCI_PRIVACY);
+}
+
 static void hci_req_add_le_create_conn(struct hci_request *req,
                                       struct hci_conn *conn)
 {
@@ -726,14 +733,15 @@ static void hci_req_add_le_create_conn(struct hci_request *req,
        struct hci_dev *hdev = conn->hdev;
        u8 own_addr_type;
 
-       memset(&cp, 0, sizeof(cp));
-
        /* Update random address, but set require_privacy to false so
         * that we never connect with an non-resolvable address.
         */
-       if (hci_update_random_address(req, false, &own_addr_type))
+       if (hci_update_random_address(req, false, conn_use_rpa(conn),
+                                     &own_addr_type))
                return;
 
+       memset(&cp, 0, sizeof(cp));
+
        /* Set window to be the same value as the interval to enable
         * continuous scanning.
         */
@@ -774,7 +782,8 @@ static void hci_req_directed_advertising(struct hci_request *req,
        /* Set require_privacy to false so that the remote device has a
         * chance of identifying us.
         */
-       if (hci_update_random_address(req, false, &own_addr_type) < 0)
+       if (hci_update_random_address(req, false, conn_use_rpa(conn),
+                                     &own_addr_type) < 0)
                return;
 
        memset(&cp, 0, sizeof(cp));
This page took 0.024397 seconds and 5 git commands to generate.