Bluetooth: Fix local name setting for LE-only controllers
authorJohan Hedberg <johan.hedberg@intel.com>
Fri, 15 Mar 2013 22:07:02 +0000 (17:07 -0500)
committerGustavo Padovan <gustavo.padovan@collabora.co.uk>
Mon, 18 Mar 2013 17:02:05 +0000 (14:02 -0300)
This patch fixes the mgmt_set_local_name command to send the appropriate
HCI commands based on BR/EDR support and LE support. Local name and EIR
data should only be sent for BR/EDR capable controllers whereas an
update to the AD should only happen for LE capable controllers.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
net/bluetooth/mgmt.c

index 1d50841..28e5975 100644 (file)
@@ -2433,8 +2433,15 @@ static int set_local_name(struct sock *sk, struct hci_dev *hdev, void *data,
        memcpy(hdev->dev_name, cp->name, sizeof(hdev->dev_name));
 
        hci_req_init(&req, hdev);
-       update_name(&req);
-       update_eir(&req);
+
+       if (lmp_bredr_capable(hdev)) {
+               update_name(&req);
+               update_eir(&req);
+       }
+
+       if (lmp_le_capable(hdev))
+               hci_update_ad(&req);
+
        err = hci_req_run(&req, set_name_complete);
        if (err < 0)
                mgmt_pending_remove(cmd);