|
@@ -1796,40 +1796,6 @@ static u8 hci_to_mgmt_reason(u8 err)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void adv_enable_complete(struct hci_dev *hdev, u8 status)
|
|
|
-{
|
|
|
- BT_DBG("%s status %u", hdev->name, status);
|
|
|
-
|
|
|
- /* Clear the advertising mgmt setting if we failed to re-enable it */
|
|
|
- if (status) {
|
|
|
- clear_bit(HCI_ADVERTISING, &hdev->dev_flags);
|
|
|
- mgmt_new_settings(hdev);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-static void reenable_advertising(struct hci_dev *hdev)
|
|
|
-{
|
|
|
- struct hci_request req;
|
|
|
- u8 enable = 0x01;
|
|
|
-
|
|
|
- if (hdev->conn_hash.le_num)
|
|
|
- return;
|
|
|
-
|
|
|
- if (!test_bit(HCI_ADVERTISING, &hdev->dev_flags))
|
|
|
- return;
|
|
|
-
|
|
|
- hci_req_init(&req, hdev);
|
|
|
- hci_req_add(&req, HCI_OP_LE_SET_ADV_ENABLE, sizeof(enable), &enable);
|
|
|
-
|
|
|
- /* If this fails we have no option but to let user space know
|
|
|
- * that we've disabled advertising.
|
|
|
- */
|
|
|
- if (hci_req_run(&req, adv_enable_complete) < 0) {
|
|
|
- clear_bit(HCI_ADVERTISING, &hdev->dev_flags);
|
|
|
- mgmt_new_settings(hdev);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
static void hci_disconn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
|
|
|
{
|
|
|
struct hci_ev_disconn_complete *ev = (void *) skb->data;
|
|
@@ -1878,7 +1844,7 @@ static void hci_disconn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
|
|
|
* is timed out due to Directed Advertising."
|
|
|
*/
|
|
|
if (type == LE_LINK)
|
|
|
- reenable_advertising(hdev);
|
|
|
+ mgmt_reenable_advertising(hdev);
|
|
|
}
|
|
|
|
|
|
unlock:
|