Bluetooth: Fix sending unnecessary HCI_LE_Host_Enable
authorJohan Hedberg <johan.hedberg@intel.com>
Wed, 24 Oct 2012 21:09:53 +0000 (00:09 +0300)
committerGustavo Padovan <gustavo.padovan@collabora.co.uk>
Thu, 1 Nov 2012 22:27:00 +0000 (20:27 -0200)
This patch fixes sending an unnecessary HCI_LE_Host_Enable command if
the command has already been sent as part of the default HCI init
sequence.

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

index bcf7690a23cb57256decaead43f600f89ac46676..1a304e2d5a74ca65302d16a518a928220e2dce64 100644 (file)
@@ -2926,8 +2926,14 @@ int mgmt_powered(struct hci_dev *hdev, u8 powered)
                        cp.le = 1;
                        cp.simul = !!lmp_le_br_capable(hdev);
 
-                       hci_send_cmd(hdev, HCI_OP_WRITE_LE_HOST_SUPPORTED,
-                                    sizeof(cp), &cp);
+                       /* Check first if we already have the right
+                        * host state (host features set)
+                        */
+                       if (cp.le != !!lmp_host_le_capable(hdev) ||
+                           cp.simul != !!lmp_host_le_br_capable(hdev))
+                               hci_send_cmd(hdev,
+                                            HCI_OP_WRITE_LE_HOST_SUPPORTED,
+                                            sizeof(cp), &cp);
                }
 
                if (lmp_bredr_capable(hdev)) {