Bluetooth: Translate additional address type correctly
authorMarcel Holtmann <marcel@holtmann.org>
Thu, 23 Jul 2020 12:38:56 +0000 (18:08 +0530)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 30 Jul 2020 07:34:42 +0000 (09:34 +0200)
When using controller based address resolution, then the new address
types 0x02 and 0x03 are used. These types need to be converted back into
either public address or random address types.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Sathish Narsimman <sathish.narasimman@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
include/net/bluetooth/hci.h
net/bluetooth/hci_core.c

index 1317dfd8f962baada8d7fb47bd84471bcfc6c27d..c36dccd6718e82e62a886400943a6ae609b913df 100644 (file)
@@ -2279,8 +2279,10 @@ struct hci_ev_le_conn_complete {
 #define LE_EXT_ADV_SCAN_RSP            0x0008
 #define LE_EXT_ADV_LEGACY_PDU          0x0010
 
-#define ADDR_LE_DEV_PUBLIC     0x00
-#define ADDR_LE_DEV_RANDOM     0x01
+#define ADDR_LE_DEV_PUBLIC             0x00
+#define ADDR_LE_DEV_RANDOM             0x01
+#define ADDR_LE_DEV_PUBLIC_RESOLVED    0x02
+#define ADDR_LE_DEV_RANDOM_RESOLVED    0x03
 
 #define HCI_EV_LE_ADVERTISING_REPORT   0x02
 struct hci_ev_le_advertising_info {
index 4ba23b821cbf4a4d0c7ac9be7fd3b89fd1a11761..3f89bd6398605c6ce31bcd4db5b0610895a99667 100644 (file)
@@ -3292,6 +3292,15 @@ struct hci_conn_params *hci_pend_le_action_lookup(struct list_head *list,
 {
        struct hci_conn_params *param;
 
+       switch (addr_type) {
+       case ADDR_LE_DEV_PUBLIC_RESOLVED:
+               addr_type = ADDR_LE_DEV_PUBLIC;
+               break;
+       case ADDR_LE_DEV_RANDOM_RESOLVED:
+               addr_type = ADDR_LE_DEV_RANDOM;
+               break;
+       }
+
        list_for_each_entry(param, list, action) {
                if (bacmp(&param->addr, addr) == 0 &&
                    param->addr_type == addr_type)