static int hci_dev_do_close(struct hci_dev *hdev) { ... /* Reset device */ skb_queue_purge(&hdev->cmd_q); atomic_set(&hdev->cmd_cnt, 1); if (!test_bit(HCI_RAW, &hdev->flags) && test_bit(HCI_QUIRK_NO_RESET, &hdev->quirks)) { set_bit(HCI_INIT, &hdev->flags); __hci_request(hdev, hci_reset_req, 0, msecs_to_jiffies(250)); clear_bit(HCI_INIT, &hdev->flags); } ... } I guess the condition should be as following: if (!test_bit(HCI_RAW, &hdev->flags) && *! *test_bit(HCI_QUIRK_NO_RESET, &hdev->quirks)) it means the code should sent HCI_RESET, only if both of the following conditions are met: 1. HCI_RAW is NOT set; 2. HCI_QUIRK_NO_RESET is *NOT* set. thanks! Bluefrog2012 -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html