|
@@ -2369,6 +2369,22 @@ static int btusb_shutdown_intel(struct hci_dev *hdev)
|
|
|
struct sk_buff *skb;
|
|
|
long ret;
|
|
|
|
|
|
+ /* In the shutdown sequence where Bluetooth is turned off followed
|
|
|
+ * by WiFi being turned off, turning WiFi back on causes issue with
|
|
|
+ * the RF calibration.
|
|
|
+ *
|
|
|
+ * To ensure that any RF activity has been stopped, issue HCI Reset
|
|
|
+ * command to clear all ongoing activity including advertising,
|
|
|
+ * scanning etc.
|
|
|
+ */
|
|
|
+ skb = __hci_cmd_sync(hdev, HCI_OP_RESET, 0, NULL, HCI_INIT_TIMEOUT);
|
|
|
+ if (IS_ERR(skb)) {
|
|
|
+ ret = PTR_ERR(skb);
|
|
|
+ bt_dev_err(hdev, "HCI reset during shutdown failed");
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+ kfree_skb(skb);
|
|
|
+
|
|
|
/* Some platforms have an issue with BT LED when the interface is
|
|
|
* down or BT radio is turned off, which takes 5 seconds to BT LED
|
|
|
* goes off. This command turns off the BT LED immediately.
|