Bluetooth: hci_sync: Add hci_le_create_conn_sync
This adds hci_le_create_conn_sync and make hci_le_connect use it instead of queueing multiple commands which may conflict with the likes of hci_update_passive_scan which uses hci_cmd_sync_queue. Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
committed by
Marcel Holtmann
parent
fee645033e
commit
8e8b92ee60
@@ -818,56 +818,6 @@ static void cancel_adv_timeout(struct hci_dev *hdev)
|
||||
}
|
||||
}
|
||||
|
||||
/* This function requires the caller holds hdev->lock */
|
||||
void __hci_req_pause_adv_instances(struct hci_request *req)
|
||||
{
|
||||
bt_dev_dbg(req->hdev, "Pausing advertising instances");
|
||||
|
||||
/* Call to disable any advertisements active on the controller.
|
||||
* This will succeed even if no advertisements are configured.
|
||||
*/
|
||||
__hci_req_disable_advertising(req);
|
||||
|
||||
/* If we are using software rotation, pause the loop */
|
||||
if (!ext_adv_capable(req->hdev))
|
||||
cancel_adv_timeout(req->hdev);
|
||||
}
|
||||
|
||||
/* This function requires the caller holds hdev->lock */
|
||||
static void __hci_req_resume_adv_instances(struct hci_request *req)
|
||||
{
|
||||
struct adv_info *adv;
|
||||
|
||||
bt_dev_dbg(req->hdev, "Resuming advertising instances");
|
||||
|
||||
if (ext_adv_capable(req->hdev)) {
|
||||
/* Call for each tracked instance to be re-enabled */
|
||||
list_for_each_entry(adv, &req->hdev->adv_instances, list) {
|
||||
__hci_req_enable_ext_advertising(req,
|
||||
adv->instance);
|
||||
}
|
||||
|
||||
} else {
|
||||
/* Schedule for most recent instance to be restarted and begin
|
||||
* the software rotation loop
|
||||
*/
|
||||
__hci_req_schedule_adv_instance(req,
|
||||
req->hdev->cur_adv_instance,
|
||||
true);
|
||||
}
|
||||
}
|
||||
|
||||
/* This function requires the caller holds hdev->lock */
|
||||
int hci_req_resume_adv_instances(struct hci_dev *hdev)
|
||||
{
|
||||
struct hci_request req;
|
||||
|
||||
hci_req_init(&req, hdev);
|
||||
__hci_req_resume_adv_instances(&req);
|
||||
|
||||
return hci_req_run(&req, NULL);
|
||||
}
|
||||
|
||||
static bool adv_cur_instance_is_scannable(struct hci_dev *hdev)
|
||||
{
|
||||
return hci_adv_instance_is_scannable(hdev, hdev->cur_adv_instance);
|
||||
|
||||
Reference in New Issue
Block a user