|
@@ -74,6 +74,11 @@ static void hci_cc_periodic_inq(struct hci_dev *hdev, struct sk_buff *skb)
|
|
|
__u8 status = *((__u8 *) skb->data);
|
|
|
|
|
|
BT_DBG("%s status 0x%x", hdev->name, status);
|
|
|
+
|
|
|
+ if (status)
|
|
|
+ return;
|
|
|
+
|
|
|
+ set_bit(HCI_PERIODIC_INQ, &hdev->dev_flags);
|
|
|
}
|
|
|
|
|
|
static void hci_cc_exit_periodic_inq(struct hci_dev *hdev, struct sk_buff *skb)
|
|
@@ -85,6 +90,8 @@ static void hci_cc_exit_periodic_inq(struct hci_dev *hdev, struct sk_buff *skb)
|
|
|
if (status)
|
|
|
return;
|
|
|
|
|
|
+ clear_bit(HCI_PERIODIC_INQ, &hdev->dev_flags);
|
|
|
+
|
|
|
hci_conn_check_pending(hdev);
|
|
|
}
|
|
|
|
|
@@ -199,7 +206,8 @@ static void hci_cc_reset(struct hci_dev *hdev, struct sk_buff *skb)
|
|
|
hci_req_complete(hdev, HCI_OP_RESET, status);
|
|
|
|
|
|
/* Reset all non-persistent flags */
|
|
|
- hdev->dev_flags &= ~(BIT(HCI_LE_SCAN) | BIT(HCI_PENDING_CLASS));
|
|
|
+ hdev->dev_flags &= ~(BIT(HCI_LE_SCAN) | BIT(HCI_PENDING_CLASS) |
|
|
|
+ BIT(HCI_PERIODIC_INQ));
|
|
|
|
|
|
hdev->discovery.state = DISCOVERY_STOPPED;
|
|
|
}
|