Bluetooth: Add 'dst_type' field to struct hci_conn
authorAndre Guedes <andre.guedes@openbossa.org>
Tue, 31 May 2011 17:20:54 +0000 (14:20 -0300)
committermgross <mark.gross@intel.com>
Wed, 9 Nov 2011 20:10:21 +0000 (12:10 -0800)
This patch adds a new field (dst_type) to the struct hci_conn which
holds the type of the destination address (bdaddr_t dst). This
approach is needed in order to use the struct hci_conn as an
abstraction of LE connections in HCI Layer. For non-LE this field
is ignored.

This patch also set properly the 'dst_type' field after initializing
LE hci_conn structures.

Change-Id: I1e363bb6de263fdb1fe976a5a16ed5debc9b8c0c
Signed-off-by: Andre Guedes <andre.guedes@openbossa.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
include/net/bluetooth/hci_core.h
net/bluetooth/hci_event.c

index 90a921c..924e172 100644 (file)
@@ -224,6 +224,7 @@ struct hci_conn {
        spinlock_t      lock;
 
        bdaddr_t        dst;
+       __u8            dst_type;
        __u16           handle;
        __u16           state;
        __u8            mode;
index a60c17b..4ad9ac3 100644 (file)
@@ -1235,10 +1235,12 @@ static void hci_cs_le_create_conn(struct hci_dev *hdev, __u8 status)
        } else {
                if (!conn) {
                        conn = hci_conn_add(hdev, LE_LINK, 0, &cp->peer_addr);
-                       if (conn)
+                       if (conn) {
+                               conn->dst_type = cp->peer_addr_type;
                                conn->out = 1;
-                       else
+                       } else {
                                BT_ERR("No memory for new connection");
+                       }
                }
        }
 
@@ -2697,6 +2699,8 @@ static inline void hci_le_conn_complete_evt(struct hci_dev *hdev, struct sk_buff
                        hci_dev_unlock(hdev);
                        return;
                }
+
+               conn->dst_type = ev->bdaddr_type;
        }
 
        if (ev->status) {