diff options
author | Andrei Emeltchenko <andrei.emeltchenko@intel.com> | 2012-10-31 09:46:32 -0400 |
---|---|---|
committer | Gustavo Padovan <gustavo.padovan@collabora.co.uk> | 2012-11-01 18:27:08 -0400 |
commit | 9eef6b3a9e38d5f8ad315b2a7db153392e6a77d6 (patch) | |
tree | 0838736d889c14c22e91fd6638dda10353588d7d /net/bluetooth | |
parent | 606e2a10a6d23e900dad0b098a09438a5f7e0495 (diff) |
Bluetooth: AMP: Process Disc Physical Link Complete evt
Add processing for HCI Disconnection Physical Link Complete Event.
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Diffstat (limited to 'net/bluetooth')
-rw-r--r-- | net/bluetooth/hci_event.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c index 07dce614f81a..bca71a8b1272 100644 --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c | |||
@@ -3765,6 +3765,28 @@ unlock: | |||
3765 | hci_dev_unlock(hdev); | 3765 | hci_dev_unlock(hdev); |
3766 | } | 3766 | } |
3767 | 3767 | ||
3768 | static void hci_disconn_phylink_complete_evt(struct hci_dev *hdev, | ||
3769 | struct sk_buff *skb) | ||
3770 | { | ||
3771 | struct hci_ev_disconn_phy_link_complete *ev = (void *) skb->data; | ||
3772 | struct hci_conn *hcon; | ||
3773 | |||
3774 | BT_DBG("%s status 0x%2.2x", hdev->name, ev->status); | ||
3775 | |||
3776 | if (ev->status) | ||
3777 | return; | ||
3778 | |||
3779 | hci_dev_lock(hdev); | ||
3780 | |||
3781 | hcon = hci_conn_hash_lookup_handle(hdev, ev->phy_handle); | ||
3782 | if (hcon) { | ||
3783 | hcon->state = BT_CLOSED; | ||
3784 | hci_conn_del(hcon); | ||
3785 | } | ||
3786 | |||
3787 | hci_dev_unlock(hdev); | ||
3788 | } | ||
3789 | |||
3768 | static void hci_le_conn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb) | 3790 | static void hci_le_conn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb) |
3769 | { | 3791 | { |
3770 | struct hci_ev_le_conn_complete *ev = (void *) skb->data; | 3792 | struct hci_ev_le_conn_complete *ev = (void *) skb->data; |
@@ -4104,6 +4126,10 @@ void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb) | |||
4104 | hci_disconn_loglink_complete_evt(hdev, skb); | 4126 | hci_disconn_loglink_complete_evt(hdev, skb); |
4105 | break; | 4127 | break; |
4106 | 4128 | ||
4129 | case HCI_EV_DISCONN_PHY_LINK_COMPLETE: | ||
4130 | hci_disconn_phylink_complete_evt(hdev, skb); | ||
4131 | break; | ||
4132 | |||
4107 | case HCI_EV_NUM_COMP_BLOCKS: | 4133 | case HCI_EV_NUM_COMP_BLOCKS: |
4108 | hci_num_comp_blocks_evt(hdev, skb); | 4134 | hci_num_comp_blocks_evt(hdev, skb); |
4109 | break; | 4135 | break; |