Bluetooth: Fix hci_le_conn_complete_evt
authorAndre Guedes <andre.guedes@openbossa.org>
Fri, 27 Jul 2012 18:10:11 +0000 (15:10 -0300)
committerGustavo Padovan <gustavo.padovan@collabora.co.uk>
Mon, 6 Aug 2012 18:05:10 +0000 (15:05 -0300)
We need to check the 'Role' parameter from the LE Connection
Complete Event in order to properly set 'out' and 'link_mode'
fields from hci_conn structure.

Signed-off-by: Andre Guedes <andre.guedes@openbossa.org>
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
include/net/bluetooth/hci.h
net/bluetooth/hci_event.c

index 7f19556624553c3aaa868d1bb96c1f84728b2fdc..23cf413e2acf3d72073c183fb2dc4dab3d16fa45 100644 (file)
@@ -1304,6 +1304,8 @@ struct hci_ev_num_comp_blocks {
 } __packed;
 
 /* Low energy meta events */
+#define LE_CONN_ROLE_MASTER    0x00
+
 #define HCI_EV_LE_CONN_COMPLETE                0x01
 struct hci_ev_le_conn_complete {
        __u8     status;
index e89d7f24136b058d2e506700c3148327f1a2f154..8b13cccd50cdd61576663c2bf3863a93e2d01f5f 100644 (file)
@@ -3368,6 +3368,11 @@ static void hci_le_conn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
                }
 
                conn->dst_type = ev->bdaddr_type;
+
+               if (ev->role == LE_CONN_ROLE_MASTER) {
+                       conn->out = true;
+                       conn->link_mode |= HCI_LM_MASTER;
+               }
        }
 
        if (!test_and_set_bit(HCI_CONN_MGMT_CONNECTED, &conn->flags))