aboutsummaryrefslogtreecommitdiffstats
path: root/net/bluetooth
diff options
context:
space:
mode:
authorAndrei Emeltchenko <andrei.emeltchenko@intel.com>2012-10-31 09:46:32 -0400
committerGustavo Padovan <gustavo.padovan@collabora.co.uk>2012-11-01 18:27:08 -0400
commit9eef6b3a9e38d5f8ad315b2a7db153392e6a77d6 (patch)
tree0838736d889c14c22e91fd6638dda10353588d7d /net/bluetooth
parent606e2a10a6d23e900dad0b098a09438a5f7e0495 (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.c26
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
3768static 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
3768static void hci_le_conn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb) 3790static 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;