Hi Amitesh,

> Broadcom VSC uart_clock_setting is deprecated in
> newer controllers. Ignore error if the controller
> returns invalid or bad request error code.
> 
> Signed-off-by: Amitesh Chandra <amitesh.chan...@broadcom.com>
> Signed-off-by: Manoj Babulal <manoj.babu...@broadcom.com>
> ---
> drivers/bluetooth/hci_bcm.c | 15 +++++++++------
> 1 file changed, 9 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c
> index 680478f..d316788 100644
> --- a/drivers/bluetooth/hci_bcm.c
> +++ b/drivers/bluetooth/hci_bcm.c
> @@ -158,15 +158,18 @@ static int bcm_set_baudrate(struct hci_uart *hu, 
> unsigned int speed)
>               skb = __hci_cmd_sync(hdev, 0xfc45, 1, &clock, HCI_INIT_TIMEOUT);
>               if (IS_ERR(skb)) {
>                       int err = PTR_ERR(skb);
> -                     bt_dev_err(hdev, "BCM: failed to write clock (%d)",
> -                                err);
> -                     return err;
> +                     /* Ignore err if command is deprecated in controller */
> +                     if (err != -EBADRQC) {
> +                             bt_dev_err(hdev, "BCM: failed to write "
> +                                             "clock (%d)", err);
> +                             return err;
> +                     }
> +             } else {
> +                     kfree_skb(skb);
>               }
> -
> -             kfree_skb(skb);
>       }

So I really disliked try-and-error of HCI commands. Can we know up-front
somehow if the controller supports a command or not. It is a total waste of
time to send a command that might fail. So we better know this before
sending it.

Regards

Marcel

Reply via email to