Some CSR chips require more time for HCI reset command to complete.
Too short timeout caused next command being sent before reset
complete event resulting in
[23101.792031] hci_cmd_timer: hci0 command tx timeout
[23102.792046] hci_cmd_timer: hci0 command tx timeout
after pluging in dongle and non functional bt.
Signed-off-by: Szymon Janc <[email protected]>
---
include/net/bluetooth/hci.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index be30aab..12a527c 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -121,7 +121,7 @@ enum {
#define HCI_PAIRING_TIMEOUT (60000) /* 60 seconds */
#define HCI_IDLE_TIMEOUT (6000) /* 6 seconds */
#define HCI_INIT_TIMEOUT (10000) /* 10 seconds */
-#define HCI_CMD_TIMEOUT (1000) /* 1 seconds */
+#define HCI_CMD_TIMEOUT (3000) /* 3 seconds */
/* HCI data types */
#define HCI_COMMAND_PKT 0x01
--
1.7.5.4
Hi Peter,
> Respectfully, I disagree that this is the correct fix for this problem.
>
> After an HCI_Reset, *no* hci commands should be issued until after the
> *successful* Command Complete is received. IMHO, the current code
> suffers two defects:
> - it doesn't wait for Command Complete after the Reset command is sent
> - it ignores the result code from that Command Complete
>
> I believe the proper fix is to _loop_ over the HCI_Reset until a
> successful Command Complete is received.
Yes, You've got a point.. I've already prepared and tested a proper fix and
will send it shortly.
Thanks for advice!
--
Szymon K. Janc
[email protected] // GG: 1383435
Hi Szymon,
On Wed, 2011-07-20 at 15:12 -0400, Szymon Janc wrote:
> Some CSR chips require more time for HCI reset command to complete.
> Too short timeout caused next command being sent before reset
> complete event resulting in
> [23101.792031] hci_cmd_timer: hci0 command tx timeout
> [23102.792046] hci_cmd_timer: hci0 command tx timeout
> after pluging in dongle and non functional bt.
>
> Signed-off-by: Szymon Janc <[email protected]>
> ---
> include/net/bluetooth/hci.h | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
> index be30aab..12a527c 100644
> --- a/include/net/bluetooth/hci.h
> +++ b/include/net/bluetooth/hci.h
> @@ -121,7 +121,7 @@ enum {
> #define HCI_PAIRING_TIMEOUT (60000) /* 60 seconds */
> #define HCI_IDLE_TIMEOUT (6000) /* 6 seconds */
> #define HCI_INIT_TIMEOUT (10000) /* 10 seconds */
> -#define HCI_CMD_TIMEOUT (1000) /* 1 seconds */
> +#define HCI_CMD_TIMEOUT (3000) /* 3 seconds */
>
> /* HCI data types */
> #define HCI_COMMAND_PKT 0x01
Respectfully, I disagree that this is the correct fix for this problem.
After an HCI_Reset, *no* hci commands should be issued until after the
*successful* Command Complete is received. IMHO, the current code
suffers two defects:
- it doesn't wait for Command Complete after the Reset command is sent
- it ignores the result code from that Command Complete
I believe the proper fix is to _loop_ over the HCI_Reset until a
successful Command Complete is received.
Regards,
Peter