aboutsummaryrefslogtreecommitdiffstats
path: root/net/bluetooth/hci_event.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2012-02-22 12:38:01 -0500
committerJohan Hedberg <johan.hedberg@intel.com>2012-02-23 06:07:00 -0500
commit7f9a903c57bb42b9f7ad8fb7867859d3252229ab (patch)
treecea86dd5bd33b78387a0b888a4ed789346824002 /net/bluetooth/hci_event.c
parent955638ecec9431788e291fc99f34c42124071abe (diff)
Bluetooth: Send management event for class of device changes
Currently there are no events to other management sockets if the class of device got changed. So make sure they are sent. Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Diffstat (limited to 'net/bluetooth/hci_event.c')
-rw-r--r--net/bluetooth/hci_event.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index e44e3fd6862..c79ffb95555 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -350,14 +350,19 @@ static void hci_cc_write_class_of_dev(struct hci_dev *hdev, struct sk_buff *skb)
350 350
351 BT_DBG("%s status 0x%x", hdev->name, status); 351 BT_DBG("%s status 0x%x", hdev->name, status);
352 352
353 if (status)
354 return;
355
356 sent = hci_sent_cmd_data(hdev, HCI_OP_WRITE_CLASS_OF_DEV); 353 sent = hci_sent_cmd_data(hdev, HCI_OP_WRITE_CLASS_OF_DEV);
357 if (!sent) 354 if (!sent)
358 return; 355 return;
359 356
360 memcpy(hdev->dev_class, sent, 3); 357 hci_dev_lock(hdev);
358
359 if (status == 0)
360 memcpy(hdev->dev_class, sent, 3);
361
362 if (test_bit(HCI_MGMT, &hdev->dev_flags))
363 mgmt_set_class_of_dev_complete(hdev, sent, status);
364
365 hci_dev_unlock(hdev);
361} 366}
362 367
363static void hci_cc_read_voice_setting(struct hci_dev *hdev, struct sk_buff *skb) 368static void hci_cc_read_voice_setting(struct hci_dev *hdev, struct sk_buff *skb)