Bluetooth: Introduce hci_dev_do_reset helper function
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>
This commit is contained in:
		
							parent
							
								
									8f502f847a
								
							
						
					
					
						commit
						5c912495b7
					
				| @ -1719,32 +1719,14 @@ done: | ||||
| 	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); | ||||
| @ -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; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user