Bluetooth: mgmt: Add flags parameter to device_connected
authorJohan Hedberg <johan.hedberg@intel.com>
Thu, 23 Feb 2012 20:31:51 +0000 (22:31 +0200)
committerJohan Hedberg <johan.hedberg@intel.com>
Thu, 23 Feb 2012 20:39:17 +0000 (22:39 +0200)
This patch updates the Device Connected events to match the latest API
by adding a flags parameter to them.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
include/net/bluetooth/hci_core.h
include/net/bluetooth/mgmt.h
net/bluetooth/hci_event.c
net/bluetooth/mgmt.c

index 720bdc26b7e972f54f642c6b95705dd27fcc7376..facd7ed32b74c857701c0041cc27154e8c099e3a 100644 (file)
@@ -980,8 +980,8 @@ int mgmt_write_scan_failed(struct hci_dev *hdev, u8 scan, u8 status);
 int mgmt_new_link_key(struct hci_dev *hdev, struct link_key *key,
                                                                u8 persistent);
 int mgmt_device_connected(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 link_type,
-                                       u8 addr_type, u8 *name, u8 name_len,
-                                       u8 *dev_class);
+                                       u8 addr_type, u32 flags, u8 *name,
+                                       u8 name_len, u8 *dev_class);
 int mgmt_device_disconnected(struct hci_dev *hdev, bdaddr_t *bdaddr,
                                                u8 link_type, u8 addr_type);
 int mgmt_disconnect_failed(struct hci_dev *hdev, bdaddr_t *bdaddr,
index 09646f5ef36a02819bc63847a49d8526cb03fd6f..7aab53e6b8139176cf01daef91bf711a9ad5a258 100644 (file)
@@ -357,6 +357,7 @@ struct mgmt_ev_new_long_term_key {
 #define MGMT_EV_DEVICE_CONNECTED       0x000B
 struct mgmt_ev_device_connected {
        struct mgmt_addr_info addr;
+       __le32 flags;
        __le16 eir_len;
        __u8 eir[0];
 } __packed;
index 3d1eef0df2a315f654f1bfa9b0587175e803f03c..fb6543b60dec805307b537fc334e74a1a7ee2c94 100644 (file)
@@ -1368,7 +1368,7 @@ static void hci_check_pending_name(struct hci_dev *hdev, struct hci_conn *conn,
        struct inquiry_entry *e;
 
        if (conn && !test_and_set_bit(HCI_CONN_MGMT_CONNECTED, &conn->flags))
-               mgmt_device_connected(hdev, bdaddr, ACL_LINK, 0x00,
+               mgmt_device_connected(hdev, bdaddr, ACL_LINK, 0x00, 0,
                                        name, name_len, conn->dev_class);
 
        if (discov->state == DISCOVERY_STOPPED)
@@ -2104,7 +2104,7 @@ static inline void hci_remote_features_evt(struct hci_dev *hdev, struct sk_buff
                hci_send_cmd(hdev, HCI_OP_REMOTE_NAME_REQ, sizeof(cp), &cp);
        } else if (!test_and_set_bit(HCI_CONN_MGMT_CONNECTED, &conn->flags))
                mgmt_device_connected(hdev, &conn->dst, conn->type,
-                                               conn->dst_type, NULL, 0,
+                                               conn->dst_type, 0, NULL, 0,
                                                conn->dev_class);
 
        if (!hci_outgoing_auth_needed(hdev, conn)) {
@@ -2872,7 +2872,7 @@ static inline void hci_remote_ext_features_evt(struct hci_dev *hdev, struct sk_b
                hci_send_cmd(hdev, HCI_OP_REMOTE_NAME_REQ, sizeof(cp), &cp);
        } else if (!test_and_set_bit(HCI_CONN_MGMT_CONNECTED, &conn->flags))
                mgmt_device_connected(hdev, &conn->dst, conn->type,
-                                               conn->dst_type, NULL, 0,
+                                               conn->dst_type, 0, NULL, 0,
                                                conn->dev_class);
 
        if (!hci_outgoing_auth_needed(hdev, conn)) {
@@ -3282,7 +3282,7 @@ static inline void hci_le_conn_complete_evt(struct hci_dev *hdev, struct sk_buff
 
        if (!test_and_set_bit(HCI_CONN_MGMT_CONNECTED, &conn->flags))
                mgmt_device_connected(hdev, &ev->bdaddr, conn->type,
-                                               conn->dst_type, NULL, 0, 0);
+                                               conn->dst_type, 0, NULL, 0, 0);
 
        conn->sec_level = BT_SECURITY_LOW;
        conn->handle = __le16_to_cpu(ev->handle);
index 93f2c1348add2930ed631e4dba2d1f8b205210f5..79fe5757346381e2fa2ebae602cff8ffa3444d21 100644 (file)
@@ -3249,8 +3249,8 @@ int mgmt_new_ltk(struct hci_dev *hdev, struct smp_ltk *key, u8 persistent)
 }
 
 int mgmt_device_connected(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 link_type,
-                                       u8 addr_type, u8 *name, u8 name_len,
-                                       u8 *dev_class)
+                                       u8 addr_type, u32 flags, u8 *name,
+                                       u8 name_len, u8 *dev_class)
 {
        char buf[512];
        struct mgmt_ev_device_connected *ev = (void *) buf;
@@ -3259,6 +3259,8 @@ int mgmt_device_connected(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 link_type,
        bacpy(&ev->addr.bdaddr, bdaddr);
        ev->addr.type = link_to_mgmt(link_type, addr_type);
 
+       put_unaligned_le32(flags, &ev->flags);
+
        if (name_len > 0)
                eir_len = eir_append_data(ev->eir, 0, EIR_NAME_COMPLETE,
                                                                name, name_len);