2014-02-27 15:12:56

by Lukasz Rymanowski

[permalink] [raw]
Subject: [PATCH v2] Bluetooth: Fix response on confirm_name

According to mgmt-api.txt, in case of confirm name command,
cmd_complete should be always use as a response. Not command status
as it is now for failures.
Using command complete on failure is actually better as client might
be interested in device address for which confirm name failed.

Signed-off-by: Lukasz Rymanowski <[email protected]>
---
net/bluetooth/mgmt.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index 4c4912e..8b7a3c4 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -3627,15 +3627,17 @@ static int confirm_name(struct sock *sk, struct hci_dev *hdev, void *data,
hci_dev_lock(hdev);

if (!hci_discovery_active(hdev)) {
- err = cmd_status(sk, hdev->id, MGMT_OP_CONFIRM_NAME,
- MGMT_STATUS_FAILED);
+ err = cmd_complete(sk, hdev->id, MGMT_OP_CONFIRM_NAME,
+ MGMT_STATUS_FAILED, &cp->addr,
+ sizeof(cp->addr));
goto failed;
}

e = hci_inquiry_cache_lookup_unknown(hdev, &cp->addr.bdaddr);
if (!e) {
- err = cmd_status(sk, hdev->id, MGMT_OP_CONFIRM_NAME,
- MGMT_STATUS_INVALID_PARAMS);
+ err = cmd_complete(sk, hdev->id, MGMT_OP_CONFIRM_NAME,
+ MGMT_STATUS_INVALID_PARAMS, &cp->addr,
+ sizeof(cp->addr));
goto failed;
}

--
1.8.4



2014-02-27 15:52:47

by Lukasz Rymanowski

[permalink] [raw]
Subject: Re: [PATCH v2] Bluetooth: Fix response on confirm_name

Hi Marcel,

On 27 February 2014 16:47, Marcel Holtmann <[email protected]> wrote:
> Hi Lukasz,
>
>> According to mgmt-api.txt, in case of confirm name command,
>> cmd_complete should be always use as a response. Not command status
>> as it is now for failures.
>> Using command complete on failure is actually better as client might
>> be interested in device address for which confirm name failed.
>>
>> Signed-off-by: Lukasz Rymanowski <[email protected]>
>> ---
>> net/bluetooth/mgmt.c | 10 ++++++----
>> 1 file changed, 6 insertions(+), 4 deletions(-)
>>
>> diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
>> index 4c4912e..8b7a3c4 100644
>> --- a/net/bluetooth/mgmt.c
>> +++ b/net/bluetooth/mgmt.c
>> @@ -3627,15 +3627,17 @@ static int confirm_name(struct sock *sk, struct hci_dev *hdev, void *data,
>> hci_dev_lock(hdev);
>>
>> if (!hci_discovery_active(hdev)) {
>> - err = cmd_status(sk, hdev->id, MGMT_OP_CONFIRM_NAME,
>> - MGMT_STATUS_FAILED);
>> + err = cmd_complete(sk, hdev->id, MGMT_OP_CONFIRM_NAME,
>> + MGMT_STATUS_FAILED, &cp->addr,
>> + sizeof(cp->addr));
>
> you are testing me, right ;)
>

Yup, and you are doing just fine :)
btw, v3 is the one.

> Regards
>
> Marcel
>

BR
\Lukasz

2014-02-27 15:47:31

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH v2] Bluetooth: Fix response on confirm_name

Hi Lukasz,

> According to mgmt-api.txt, in case of confirm name command,
> cmd_complete should be always use as a response. Not command status
> as it is now for failures.
> Using command complete on failure is actually better as client might
> be interested in device address for which confirm name failed.
>
> Signed-off-by: Lukasz Rymanowski <[email protected]>
> ---
> net/bluetooth/mgmt.c | 10 ++++++----
> 1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
> index 4c4912e..8b7a3c4 100644
> --- a/net/bluetooth/mgmt.c
> +++ b/net/bluetooth/mgmt.c
> @@ -3627,15 +3627,17 @@ static int confirm_name(struct sock *sk, struct hci_dev *hdev, void *data,
> hci_dev_lock(hdev);
>
> if (!hci_discovery_active(hdev)) {
> - err = cmd_status(sk, hdev->id, MGMT_OP_CONFIRM_NAME,
> - MGMT_STATUS_FAILED);
> + err = cmd_complete(sk, hdev->id, MGMT_OP_CONFIRM_NAME,
> + MGMT_STATUS_FAILED, &cp->addr,
> + sizeof(cp->addr));

you are testing me, right ;)

Regards

Marcel