Bluetooth: Add hci_request support for hci_update_background_scan
Many places using hci_update_background_scan() try to synchronize whatever they're doing with the help of hci_request callbacks. However, since the hci_update_background_scan() function hasn't so far accepted a hci_request pointer any commands triggered by it have been left out by the synchronization. This patch modifies the API in a similar way as was done for hci_update_page_scan, i.e. there's a variant that takes a hci_request and another one that takes a hci_dev. Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:

committed by
Marcel Holtmann

parent
0857dd3bed
commit
2cf22218b0
@@ -2228,9 +2228,8 @@ static void le_enable_complete(struct hci_dev *hdev, u8 status)
|
||||
hci_req_init(&req, hdev);
|
||||
update_adv_data(&req);
|
||||
update_scan_rsp_data(&req);
|
||||
__hci_update_background_scan(&req);
|
||||
hci_req_run(&req, NULL);
|
||||
|
||||
hci_update_background_scan(hdev);
|
||||
}
|
||||
|
||||
unlock:
|
||||
@@ -6038,8 +6037,9 @@ void mgmt_index_removed(struct hci_dev *hdev)
|
||||
}
|
||||
|
||||
/* This function requires the caller holds hdev->lock */
|
||||
static void restart_le_actions(struct hci_dev *hdev)
|
||||
static void restart_le_actions(struct hci_request *req)
|
||||
{
|
||||
struct hci_dev *hdev = req->hdev;
|
||||
struct hci_conn_params *p;
|
||||
|
||||
list_for_each_entry(p, &hdev->le_conn_params, list) {
|
||||
@@ -6061,7 +6061,7 @@ static void restart_le_actions(struct hci_dev *hdev)
|
||||
}
|
||||
}
|
||||
|
||||
hci_update_background_scan(hdev);
|
||||
__hci_update_background_scan(req);
|
||||
}
|
||||
|
||||
static void powered_complete(struct hci_dev *hdev, u8 status)
|
||||
@@ -6072,8 +6072,6 @@ static void powered_complete(struct hci_dev *hdev, u8 status)
|
||||
|
||||
hci_dev_lock(hdev);
|
||||
|
||||
restart_le_actions(hdev);
|
||||
|
||||
mgmt_pending_foreach(MGMT_OP_SET_POWERED, hdev, settings_rsp, &match);
|
||||
|
||||
new_settings(hdev, match.sk);
|
||||
@@ -6131,6 +6129,8 @@ static int powered_update_hci(struct hci_dev *hdev)
|
||||
|
||||
if (test_bit(HCI_ADVERTISING, &hdev->dev_flags))
|
||||
enable_advertising(&req);
|
||||
|
||||
restart_le_actions(&req);
|
||||
}
|
||||
|
||||
link_sec = test_bit(HCI_LINK_SECURITY, &hdev->dev_flags);
|
||||
|
Reference in New Issue
Block a user