Skip to content

Commit

Permalink
Bluetooth: Add opcode to error message
Browse files Browse the repository at this point in the history
Sometimes HCI command sending timeouts and gives error message without
specifying which command causes error. Patch makes sure that opcode
is printed to help debugging.

Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
  • Loading branch information
Andrei Emeltchenko authored and Gustavo Padovan committed Jun 12, 2012
1 parent 5f246e8 commit bda4f23
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions net/bluetooth/hci_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1366,11 +1366,19 @@ int hci_remove_ltk(struct hci_dev *hdev, bdaddr_t *bdaddr)
}

/* HCI command timer function */
static void hci_cmd_timer(unsigned long arg)
static void hci_cmd_timeout(unsigned long arg)
{
struct hci_dev *hdev = (void *) arg;

BT_ERR("%s command tx timeout", hdev->name);
if (hdev->sent_cmd) {
struct hci_command_hdr *sent = (void *) hdev->sent_cmd->data;
u16 opcode = __le16_to_cpu(sent->opcode);

BT_ERR("%s command 0x%4.4x tx timeout", hdev->name, opcode);
} else {
BT_ERR("%s command tx timeout", hdev->name);
}

atomic_set(&hdev->cmd_cnt, 1);
queue_work(hdev->workqueue, &hdev->cmd_work);
}
Expand Down Expand Up @@ -1668,7 +1676,7 @@ struct hci_dev *hci_alloc_dev(void)

init_waitqueue_head(&hdev->req_wait_q);

setup_timer(&hdev->cmd_timer, hci_cmd_timer, (unsigned long) hdev);
setup_timer(&hdev->cmd_timer, hci_cmd_timeout, (unsigned long) hdev);

hci_init_sysfs(hdev);
discovery_init(hdev);
Expand Down

0 comments on commit bda4f23

Please sign in to comment.