Bluetooth: hci_sync: Remove remaining dependencies of hci_request
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Mon, 1 Jul 2024 20:52:57 +0000 (16:52 -0400)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Mon, 15 Jul 2024 14:11:33 +0000 (10:11 -0400)
This removes the dependencies of hci_req_init and hci_request_cancel_all
from hci_sync.c.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
include/net/bluetooth/hci_sync.h
net/bluetooth/hci_request.h
net/bluetooth/hci_sync.c

index a8d88247ac89a9705a6a8cce543c4864f066f4cb..75e052909b5fbf9ac32e4831705950e6a25933fa 100644 (file)
@@ -8,6 +8,23 @@
 #define UINT_PTR(_handle)              ((void *)((uintptr_t)_handle))
 #define PTR_UINT(_ptr)                 ((uintptr_t)((void *)_ptr))
 
+#define HCI_REQ_DONE     0
+#define HCI_REQ_PEND     1
+#define HCI_REQ_CANCELED  2
+
+#define hci_req_sync_lock(hdev)   mutex_lock(&hdev->req_lock)
+#define hci_req_sync_unlock(hdev) mutex_unlock(&hdev->req_lock)
+
+struct hci_request {
+       struct hci_dev          *hdev;
+       struct sk_buff_head     cmd_q;
+
+       /* If something goes wrong when building the HCI request, the error
+        * value is stored in this field.
+        */
+       int                     err;
+};
+
 typedef int (*hci_cmd_sync_work_func_t)(struct hci_dev *hdev, void *data);
 typedef void (*hci_cmd_sync_work_destroy_t)(struct hci_dev *hdev, void *data,
                                            int err);
index c91f2838f54243ac25d500e95a3967283b87d82c..b730da4a8b4768d47e3446a525eb6a269c221e7b 100644 (file)
 
 #include <asm/unaligned.h>
 
-#define HCI_REQ_DONE     0
-#define HCI_REQ_PEND     1
-#define HCI_REQ_CANCELED  2
-
-#define hci_req_sync_lock(hdev)   mutex_lock(&hdev->req_lock)
-#define hci_req_sync_unlock(hdev) mutex_unlock(&hdev->req_lock)
-
-struct hci_request {
-       struct hci_dev          *hdev;
-       struct sk_buff_head     cmd_q;
-
-       /* If something goes wrong when building the HCI request, the error
-        * value is stored in this field.
-        */
-       int                     err;
-};
-
 void hci_req_init(struct hci_request *req, struct hci_dev *hdev);
 void hci_req_purge(struct hci_request *req);
 bool hci_req_status_pend(struct hci_dev *hdev);
index 63548c4cc1ac3b06ea5d5eef2cc56f2e090c73e1..cd2ed16da8a466c3f03f99254790a76e041a2c42 100644 (file)
@@ -12,7 +12,6 @@
 #include <net/bluetooth/hci_core.h>
 #include <net/bluetooth/mgmt.h>
 
-#include "hci_request.h"
 #include "hci_codec.h"
 #include "hci_debugfs.h"
 #include "smp.h"
@@ -146,6 +145,13 @@ static int hci_cmd_sync_run(struct hci_request *req)
        return 0;
 }
 
+static void hci_request_init(struct hci_request *req, struct hci_dev *hdev)
+{
+       skb_queue_head_init(&req->cmd_q);
+       req->hdev = hdev;
+       req->err = 0;
+}
+
 /* This function requires the caller holds hdev->req_lock. */
 struct sk_buff *__hci_cmd_sync_sk(struct hci_dev *hdev, u16 opcode, u32 plen,
                                  const void *param, u8 event, u32 timeout,
@@ -157,7 +163,7 @@ struct sk_buff *__hci_cmd_sync_sk(struct hci_dev *hdev, u16 opcode, u32 plen,
 
        bt_dev_dbg(hdev, "Opcode 0x%4.4x", opcode);
 
-       hci_req_init(&req, hdev);
+       hci_request_init(&req, hdev);
 
        hci_cmd_sync_add(&req, opcode, plen, param, event, sk);
 
@@ -5056,7 +5062,9 @@ int hci_dev_close_sync(struct hci_dev *hdev)
        cancel_delayed_work(&hdev->ncmd_timer);
        cancel_delayed_work(&hdev->le_scan_disable);
 
-       hci_request_cancel_all(hdev);
+       hci_cmd_sync_cancel_sync(hdev, ENODEV);
+
+       cancel_interleave_scan(hdev);
 
        if (hdev->adv_instance_timeout) {
                cancel_delayed_work_sync(&hdev->adv_instance_expire);