Skip to content

Commit

Permalink
Bluetooth: Introduce hci_dev_do_reset helper function
Browse files Browse the repository at this point in the history
Split the hci_dev_reset ioctl handling into using hci_dev_do_reset
helper function. Similar to what has been done with hci_dev_do_open
and hci_dev_do_close.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
  • Loading branch information
Marcel Holtmann committed Jan 28, 2015
1 parent 8f502f8 commit 5c91249
Showing 1 changed file with 34 additions and 23 deletions.
57 changes: 34 additions & 23 deletions net/bluetooth/hci_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1719,32 +1719,14 @@ int hci_dev_close(__u16 dev)
return err;
}

int hci_dev_reset(__u16 dev)
static int hci_dev_do_reset(struct hci_dev *hdev)
{
struct hci_dev *hdev;
int ret = 0;
int ret;

hdev = hci_dev_get(dev);
if (!hdev)
return -ENODEV;
BT_DBG("%s %p", hdev->name, hdev);

hci_req_lock(hdev);

if (!test_bit(HCI_UP, &hdev->flags)) {
ret = -ENETDOWN;
goto done;
}

if (test_bit(HCI_USER_CHANNEL, &hdev->dev_flags)) {
ret = -EBUSY;
goto done;
}

if (test_bit(HCI_UNCONFIGURED, &hdev->dev_flags)) {
ret = -EOPNOTSUPP;
goto done;
}

/* Drop queues */
skb_queue_purge(&hdev->rx_q);
skb_queue_purge(&hdev->cmd_q);
Expand All @@ -1767,12 +1749,41 @@ int hci_dev_reset(__u16 dev)

ret = __hci_req_sync(hdev, hci_reset_req, 0, HCI_INIT_TIMEOUT);

done:
hci_req_unlock(hdev);
hci_dev_put(hdev);
return ret;
}

int hci_dev_reset(__u16 dev)
{
struct hci_dev *hdev;
int err;

hdev = hci_dev_get(dev);
if (!hdev)
return -ENODEV;

if (!test_bit(HCI_UP, &hdev->flags)) {
err = -ENETDOWN;
goto done;
}

if (test_bit(HCI_USER_CHANNEL, &hdev->dev_flags)) {
err = -EBUSY;
goto done;
}

if (test_bit(HCI_UNCONFIGURED, &hdev->dev_flags)) {
err = -EOPNOTSUPP;
goto done;
}

err = hci_dev_do_reset(hdev);

done:
hci_dev_put(hdev);
return err;
}

int hci_dev_reset_stat(__u16 dev)
{
struct hci_dev *hdev;
Expand Down

0 comments on commit 5c91249

Please sign in to comment.