From 991ee82715845141497b29fa6f918739c6a4b47e Mon Sep 17 00:00:00 2001 From: Beomho Seo Date: Thu, 15 May 2014 12:37:20 +0900 Subject: WORKAROUND: Bluetooth: add hci event notification WORKAROUND: Temporary workaround for bluetooth enable. For specific hci events, operations are needed. So this patch adds event notification and its notifier registration. Change-Id: I6f8fe0b3b90c12d7f4fe35823d25b9fbdcd98d06 Signed-off-by: Beomho Seo Signed-off-by: Seung-Woo Kim --- net/bluetooth/hci_core.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'net/bluetooth/hci_core.c') diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index 7c88f5f8359..14f56e5031b 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c @@ -49,10 +49,25 @@ DEFINE_RWLOCK(hci_cb_list_lock); static DEFINE_IDA(hci_index_ida); /* ---- HCI notifications ---- */ +static ATOMIC_NOTIFIER_HEAD(hci_notifier); + +int hci_register_notifier(struct notifier_block *nb) +{ + return atomic_notifier_chain_register(&hci_notifier, nb); +} + +int hci_unregister_notifier(struct notifier_block *nb) +{ + return atomic_notifier_chain_unregister(&hci_notifier, nb); +} static void hci_notify(struct hci_dev *hdev, int event) { hci_sock_dev_event(hdev, event); + + if (event == HCI_DEV_REG || event == HCI_DEV_UNREG + || event == HCI_DEV_WRITE) + atomic_notifier_call_chain(&hci_notifier, event, hdev); } /* ---- HCI requests ---- */ @@ -2593,6 +2608,8 @@ static int hci_send_frame(struct sk_buff *skb) /* Get rid of skb owner, prior to sending to the driver. */ skb_orphan(skb); + hci_notify(hdev, HCI_DEV_WRITE); + return hdev->send(skb); } -- cgit v1.2.3