Bluetooth: Add status parameter to mgmt_disconnect response
Since disconnecting may fail the status needs to be communicated to user space. This also updates the implementation to match the latest mgmt API specification. Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
This commit is contained in:

committed by
Gustavo F. Padovan

parent
a8a1d19e9d
commit
37d9ef76c2
@@ -2128,6 +2128,7 @@ static void disconnect_rsp(struct pending_cmd *cmd, void *data)
|
||||
struct mgmt_rp_disconnect rp;
|
||||
|
||||
bacpy(&rp.bdaddr, &cp->bdaddr);
|
||||
rp.status = 0;
|
||||
|
||||
cmd_complete(cmd->sk, cmd->index, MGMT_OP_DISCONNECT, &rp, sizeof(rp));
|
||||
|
||||
@@ -2176,7 +2177,7 @@ int mgmt_disconnected(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 link_type,
|
||||
return err;
|
||||
}
|
||||
|
||||
int mgmt_disconnect_failed(struct hci_dev *hdev)
|
||||
int mgmt_disconnect_failed(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 status)
|
||||
{
|
||||
struct pending_cmd *cmd;
|
||||
int err;
|
||||
@@ -2185,7 +2186,17 @@ int mgmt_disconnect_failed(struct hci_dev *hdev)
|
||||
if (!cmd)
|
||||
return -ENOENT;
|
||||
|
||||
err = cmd_status(cmd->sk, hdev->id, MGMT_OP_DISCONNECT, EIO);
|
||||
if (bdaddr) {
|
||||
struct mgmt_rp_disconnect rp;
|
||||
|
||||
bacpy(&rp.bdaddr, bdaddr);
|
||||
rp.status = status;
|
||||
|
||||
err = cmd_complete(cmd->sk, cmd->index, MGMT_OP_DISCONNECT,
|
||||
&rp, sizeof(rp));
|
||||
} else
|
||||
err = cmd_status(cmd->sk, hdev->id, MGMT_OP_DISCONNECT,
|
||||
status);
|
||||
|
||||
mgmt_pending_remove(cmd);
|
||||
|
||||
|
Reference in New Issue
Block a user