]> Pileus Git - ~andy/linux/commitdiff
Bluetooth: Handle EIR tags for Device ID
authorMarcel Holtmann <marcel@holtmann.org>
Mon, 12 Mar 2012 02:32:12 +0000 (19:32 -0700)
committerGustavo Padovan <gustavo@padovan.org>
Wed, 9 May 2012 03:41:30 +0000 (00:41 -0300)
The Device ID information can be provided via Extended Inquiry Data
as well. If a valid source is present, then include it.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
include/net/bluetooth/hci_core.h
net/bluetooth/mgmt.c

index ce09bf1592e23ecfbde6838230c4fe8ffb2bceec..c8e24a9b176c96de7a1939af4fd963247b740ac3 100644 (file)
@@ -159,6 +159,10 @@ struct hci_dev {
        __u16           voice_setting;
        __u8            io_capability;
        __s8            inq_tx_power;
+       __u16           devid_source;
+       __u16           devid_vendor;
+       __u16           devid_product;
+       __u16           devid_version;
 
        __u16           pkt_type;
        __u16           esco_type;
index 02b89e299ff8d561fdbd0878edbe5993a83b0fbb..1da458d9b5ca8fe7af991bceaacf9b403a0ee272 100644 (file)
@@ -488,6 +488,19 @@ static void create_eir(struct hci_dev *hdev, u8 *data)
                ptr += 3;
        }
 
+       if (hdev->devid_source > 0) {
+               ptr[0] = 9;
+               ptr[1] = EIR_DEVICE_ID;
+
+               put_unaligned_le16(hdev->devid_source, ptr + 2);
+               put_unaligned_le16(hdev->devid_vendor, ptr + 4);
+               put_unaligned_le16(hdev->devid_product, ptr + 6);
+               put_unaligned_le16(hdev->devid_version, ptr + 8);
+
+               eir_len += 10;
+               ptr += 10;
+       }
+
        memset(uuid16_list, 0, sizeof(uuid16_list));
 
        /* Group all UUID16 types */