These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / net / bluetooth / a2mp.c
index 5a04eb1..5f123c3 100644 (file)
@@ -16,6 +16,7 @@
 #include <net/bluetooth/hci_core.h>
 #include <net/bluetooth/l2cap.h>
 
+#include "hci_request.h"
 #include "a2mp.h"
 #include "amp.h"
 
@@ -286,11 +287,21 @@ static int a2mp_change_notify(struct amp_mgr *mgr, struct sk_buff *skb,
        return 0;
 }
 
+static void read_local_amp_info_complete(struct hci_dev *hdev, u8 status,
+                                        u16 opcode)
+{
+       BT_DBG("%s status 0x%2.2x", hdev->name, status);
+
+       a2mp_send_getinfo_rsp(hdev);
+}
+
 static int a2mp_getinfo_req(struct amp_mgr *mgr, struct sk_buff *skb,
                            struct a2mp_cmd *hdr)
 {
        struct a2mp_info_req *req  = (void *) skb->data;
        struct hci_dev *hdev;
+       struct hci_request hreq;
+       int err = 0;
 
        if (le16_to_cpu(hdr->len) < sizeof(*req))
                return -EINVAL;
@@ -311,7 +322,11 @@ static int a2mp_getinfo_req(struct amp_mgr *mgr, struct sk_buff *skb,
        }
 
        set_bit(READ_LOC_AMP_INFO, &mgr->state);
-       hci_send_cmd(hdev, HCI_OP_READ_LOCAL_AMP_INFO, 0, NULL);
+       hci_req_init(&hreq, hdev);
+       hci_req_add(&hreq, HCI_OP_READ_LOCAL_AMP_INFO, 0, NULL);
+       err = hci_req_run(&hreq, read_local_amp_info_complete);
+       if (err < 0)
+               a2mp_send_getinfo_rsp(hdev);
 
 done:
        if (hdev)