diff mbox series

[BlueZ,v1,1/1] LE Create Connection command timeout increased to 20 secs from 4 secs

Message ID 20240318123712.9729-2-mahesh.talewad@nxp.com
State New
Headers show
Series LE Create Connection command timeout changed to 20 secs | expand

Commit Message

Mahesh Talewad March 18, 2024, 12:37 p.m. UTC
- As per specs LE Connection timeout is 20 secs but in implementation,
   it was 4 secs. Hence increased this timeout to 20 Secs.

Signed-off-by: Mahesh Talewad <mahesh.talewad@nxp.com>
---
 net/bluetooth/hci_event.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Luiz Augusto von Dentz March 20, 2024, 9:50 a.m. UTC | #1
Hi Mahesh,

On Mon, Mar 18, 2024 at 12:37 PM Mahesh Talewad <mahesh.talewad@nxp.com> wrote:
>
>  - As per specs LE Connection timeout is 20 secs but in implementation,
>    it was 4 secs. Hence increased this timeout to 20 Secs.
>
> Signed-off-by: Mahesh Talewad <mahesh.talewad@nxp.com>
> ---
>  net/bluetooth/hci_event.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
> index 4ae224824012..06fe5f6b9546 100644
> --- a/net/bluetooth/hci_event.c
> +++ b/net/bluetooth/hci_event.c
> @@ -6067,7 +6067,7 @@ static struct hci_conn *check_pending_le_conn(struct hci_dev *hdev,
>         }
>
>         conn = hci_connect_le(hdev, addr, addr_type, addr_resolved,
> -                             BT_SECURITY_LOW, hdev->def_le_autoconnect_timeout,
> +                             BT_SECURITY_LOW, HCI_LE_CONN_TIMEOUT,
>                               HCI_ROLE_MASTER);
>         if (!IS_ERR(conn)) {
>                 /* If HCI_AUTO_CONN_EXPLICIT is set, conn is already owned
> --
> 2.34.1

Afaik this is on purpose since it is the autoconnect procedure, rather
than user initiate connection, so are you running into a problem if
the timeout is different?
Mahesh Talewad March 20, 2024, 10:56 a.m. UTC | #2
Hi Luiz,

Yes, its auto connect scenario.
While running connect disconnect in a loop on one of the chip, we are getting issue with this default timeout . Hence we increased this timeout value to standard LE timeout i.e 20s.
Kindly let us know, is there any timeout explicitly defined for the autoconnect in the spec.

Thanks and regards,
Mahesh Vithal Talewad

-----Original Message-----
From: Luiz Augusto von Dentz <luiz.dentz@gmail.com> 
Sent: Wednesday, March 20, 2024 3:21 PM
To: Mahesh Talewad <mahesh.talewad@nxp.com>
Cc: linux-bluetooth@vger.kernel.org; Devyani Godbole <devyani.godbole@nxp.com>; Sarveshwar Bajaj <sarveshwar.bajaj@nxp.com>
Subject: [EXT] Re: [PATCH BlueZ v1 1/1] LE Create Connection command timeout increased to 20 secs from 4 secs

Caution: This is an external email. Please take care when clicking links or opening attachments. When in doubt, report the message using the 'Report this email' button


Hi Mahesh,

On Mon, Mar 18, 2024 at 12:37 PM Mahesh Talewad <mahesh.talewad@nxp.com> wrote:
>
>  - As per specs LE Connection timeout is 20 secs but in implementation,
>    it was 4 secs. Hence increased this timeout to 20 Secs.
>
> Signed-off-by: Mahesh Talewad <mahesh.talewad@nxp.com>
> ---
>  net/bluetooth/hci_event.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c 
> index 4ae224824012..06fe5f6b9546 100644
> --- a/net/bluetooth/hci_event.c
> +++ b/net/bluetooth/hci_event.c
> @@ -6067,7 +6067,7 @@ static struct hci_conn *check_pending_le_conn(struct hci_dev *hdev,
>         }
>
>         conn = hci_connect_le(hdev, addr, addr_type, addr_resolved,
> -                             BT_SECURITY_LOW, hdev->def_le_autoconnect_timeout,
> +                             BT_SECURITY_LOW, HCI_LE_CONN_TIMEOUT,
>                               HCI_ROLE_MASTER);
>         if (!IS_ERR(conn)) {
>                 /* If HCI_AUTO_CONN_EXPLICIT is set, conn is already 
> owned
> --
> 2.34.1

Afaik this is on purpose since it is the autoconnect procedure, rather than user initiate connection, so are you running into a problem if the timeout is different?

--
Luiz Augusto von Dentz
Luiz Augusto von Dentz March 20, 2024, 11:42 a.m. UTC | #3
Hi Mahesh,

On Wed, Mar 20, 2024 at 10:56 AM Mahesh Talewad <mahesh.talewad@nxp.com> wrote:
>
> Hi Luiz,
>
> Yes, its auto connect scenario.
> While running connect disconnect in a loop on one of the chip, we are getting issue with this default timeout . Hence we increased this timeout value to standard LE timeout i.e 20s.
> Kindly let us know, is there any timeout explicitly defined for the autoconnect in the spec.

What exactly is the issue though, or are you saying it is a controller
issue because the attempts are too closely together when the timeout
is just 4 seconds, note that you are just working around the problem
because users can bypass the default when set via conn->conn_timeout.

> Thanks and regards,
> Mahesh Vithal Talewad
>
> -----Original Message-----
> From: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
> Sent: Wednesday, March 20, 2024 3:21 PM
> To: Mahesh Talewad <mahesh.talewad@nxp.com>
> Cc: linux-bluetooth@vger.kernel.org; Devyani Godbole <devyani.godbole@nxp.com>; Sarveshwar Bajaj <sarveshwar.bajaj@nxp.com>
> Subject: [EXT] Re: [PATCH BlueZ v1 1/1] LE Create Connection command timeout increased to 20 secs from 4 secs
>
> Caution: This is an external email. Please take care when clicking links or opening attachments. When in doubt, report the message using the 'Report this email' button
>
>
> Hi Mahesh,
>
> On Mon, Mar 18, 2024 at 12:37 PM Mahesh Talewad <mahesh.talewad@nxp.com> wrote:
> >
> >  - As per specs LE Connection timeout is 20 secs but in implementation,
> >    it was 4 secs. Hence increased this timeout to 20 Secs.
> >
> > Signed-off-by: Mahesh Talewad <mahesh.talewad@nxp.com>
> > ---
> >  net/bluetooth/hci_event.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
> > index 4ae224824012..06fe5f6b9546 100644
> > --- a/net/bluetooth/hci_event.c
> > +++ b/net/bluetooth/hci_event.c
> > @@ -6067,7 +6067,7 @@ static struct hci_conn *check_pending_le_conn(struct hci_dev *hdev,
> >         }
> >
> >         conn = hci_connect_le(hdev, addr, addr_type, addr_resolved,
> > -                             BT_SECURITY_LOW, hdev->def_le_autoconnect_timeout,
> > +                             BT_SECURITY_LOW, HCI_LE_CONN_TIMEOUT,
> >                               HCI_ROLE_MASTER);
> >         if (!IS_ERR(conn)) {
> >                 /* If HCI_AUTO_CONN_EXPLICIT is set, conn is already
> > owned
> > --
> > 2.34.1
>
> Afaik this is on purpose since it is the autoconnect procedure, rather than user initiate connection, so are you running into a problem if the timeout is different?
>
> --
> Luiz Augusto von Dentz
Mahesh Talewad April 22, 2024, 9:01 a.m. UTC | #4
Hi Luiz,

On our DUT, we can see that the host issues create connection cancel command after 4-sec if there is no connection complete event for LE create connection cmd.
As per core spec v5.3 section 7.8.5, advertisement interval range is -

Advertising_Interval_Min
Default : 0x0800(1.28s)
Time Range: 20ms to 10.24s

Advertising_Interval_Max
Default : 0x0800(1.28s)
Time Range: 20ms to 10.24s

If the remote device is using adv interval of > 4 sec, it is difficult to make a connection with the current timeout value.
Also, with the default interval of 1.28 sec, we will get only 3 chances to capture the adv packets with the 4 sec window.
Hence we want to increase this timeout to 20sec.
Note: In Android this timeout value is 29 secs.
Does setting via 'conn->conn_timeout' mean setting 'Autoconnecttimeout=value' in main.conf file?

Thanks and regards,
Mahesh Vithal Talewad

-----Original Message-----
From: Luiz Augusto von Dentz <luiz.dentz@gmail.com> 
Sent: Wednesday, March 20, 2024 5:13 PM
To: Mahesh Talewad <mahesh.talewad@nxp.com>
Cc: linux-bluetooth@vger.kernel.org; Devyani Godbole <devyani.godbole@nxp.com>; Sarveshwar Bajaj <sarveshwar.bajaj@nxp.com>
Subject: Re: [EXT] Re: [PATCH BlueZ v1 1/1] LE Create Connection command timeout increased to 20 secs from 4 secs

Caution: This is an external email. Please take care when clicking links or opening attachments. When in doubt, report the message using the 'Report this email' button


Hi Mahesh,

On Wed, Mar 20, 2024 at 10:56 AM Mahesh Talewad <mahesh.talewad@nxp.com> wrote:
>
> Hi Luiz,
>
> Yes, its auto connect scenario.
> While running connect disconnect in a loop on one of the chip, we are getting issue with this default timeout . Hence we increased this timeout value to standard LE timeout i.e 20s.
> Kindly let us know, is there any timeout explicitly defined for the autoconnect in the spec.

What exactly is the issue though, or are you saying it is a controller issue because the attempts are too closely together when the timeout is just 4 seconds, note that you are just working around the problem because users can bypass the default when set via conn->conn_timeout.

> Thanks and regards,
> Mahesh Vithal Talewad
>
> -----Original Message-----
> From: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
> Sent: Wednesday, March 20, 2024 3:21 PM
> To: Mahesh Talewad <mahesh.talewad@nxp.com>
> Cc: linux-bluetooth@vger.kernel.org; Devyani Godbole 
> <devyani.godbole@nxp.com>; Sarveshwar Bajaj <sarveshwar.bajaj@nxp.com>
> Subject: [EXT] Re: [PATCH BlueZ v1 1/1] LE Create Connection command 
> timeout increased to 20 secs from 4 secs
>
> Caution: This is an external email. Please take care when clicking 
> links or opening attachments. When in doubt, report the message using 
> the 'Report this email' button
>
>
> Hi Mahesh,
>
> On Mon, Mar 18, 2024 at 12:37 PM Mahesh Talewad <mahesh.talewad@nxp.com> wrote:
> >
> >  - As per specs LE Connection timeout is 20 secs but in implementation,
> >    it was 4 secs. Hence increased this timeout to 20 Secs.
> >
> > Signed-off-by: Mahesh Talewad <mahesh.talewad@nxp.com>
> > ---
> >  net/bluetooth/hci_event.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c 
> > index 4ae224824012..06fe5f6b9546 100644
> > --- a/net/bluetooth/hci_event.c
> > +++ b/net/bluetooth/hci_event.c
> > @@ -6067,7 +6067,7 @@ static struct hci_conn *check_pending_le_conn(struct hci_dev *hdev,
> >         }
> >
> >         conn = hci_connect_le(hdev, addr, addr_type, addr_resolved,
> > -                             BT_SECURITY_LOW, hdev->def_le_autoconnect_timeout,
> > +                             BT_SECURITY_LOW, HCI_LE_CONN_TIMEOUT,
> >                               HCI_ROLE_MASTER);
> >         if (!IS_ERR(conn)) {
> >                 /* If HCI_AUTO_CONN_EXPLICIT is set, conn is already 
> > owned
> > --
> > 2.34.1
>
> Afaik this is on purpose since it is the autoconnect procedure, rather than user initiate connection, so are you running into a problem if the timeout is different?
>
> --
> Luiz Augusto von Dentz



--
Luiz Augusto von Dentz
Mahesh Talewad April 24, 2024, 1:49 p.m. UTC | #5
Hi Luiz,

We tried with - 6093f28402aa6342890fc3adb6be355f804b719d - with this as well issue is observed.

Thanks and regards,
Mahesh Vithal Talewad

-----Original Message-----
From: Mahesh Talewad 
Sent: Monday, April 22, 2024 2:31 PM
To: 'Luiz Augusto von Dentz' <luiz.dentz@gmail.com>
Cc: linux-bluetooth@vger.kernel.org; Devyani Godbole <devyani.godbole@nxp.com>; Sarveshwar Bajaj <sarveshwar.bajaj@nxp.com>
Subject: RE: [EXT] Re: [PATCH BlueZ v1 1/1] LE Create Connection command timeout increased to 20 secs from 4 secs

Hi Luiz,

On our DUT, we can see that the host issues create connection cancel command after 4-sec if there is no connection complete event for LE create connection cmd.
As per core spec v5.3 section 7.8.5, advertisement interval range is -

Advertising_Interval_Min
Default : 0x0800(1.28s)
Time Range: 20ms to 10.24s

Advertising_Interval_Max
Default : 0x0800(1.28s)
Time Range: 20ms to 10.24s

If the remote device is using adv interval of > 4 sec, it is difficult to make a connection with the current timeout value.
Also, with the default interval of 1.28 sec, we will get only 3 chances to capture the adv packets with the 4 sec window.
Hence we want to increase this timeout to 20sec.
Note: In Android this timeout value is 29 secs.
Does setting via 'conn->conn_timeout' mean setting 'Autoconnecttimeout=value' in main.conf file?

Thanks and regards,
Mahesh Vithal Talewad

-----Original Message-----
From: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
Sent: Wednesday, March 20, 2024 5:13 PM
To: Mahesh Talewad <mahesh.talewad@nxp.com>
Cc: linux-bluetooth@vger.kernel.org; Devyani Godbole <devyani.godbole@nxp.com>; Sarveshwar Bajaj <sarveshwar.bajaj@nxp.com>
Subject: Re: [EXT] Re: [PATCH BlueZ v1 1/1] LE Create Connection command timeout increased to 20 secs from 4 secs

Caution: This is an external email. Please take care when clicking links or opening attachments. When in doubt, report the message using the 'Report this email' button


Hi Mahesh,

On Wed, Mar 20, 2024 at 10:56 AM Mahesh Talewad <mahesh.talewad@nxp.com> wrote:
>
> Hi Luiz,
>
> Yes, its auto connect scenario.
> While running connect disconnect in a loop on one of the chip, we are getting issue with this default timeout . Hence we increased this timeout value to standard LE timeout i.e 20s.
> Kindly let us know, is there any timeout explicitly defined for the autoconnect in the spec.

What exactly is the issue though, or are you saying it is a controller issue because the attempts are too closely together when the timeout is just 4 seconds, note that you are just working around the problem because users can bypass the default when set via conn->conn_timeout.

> Thanks and regards,
> Mahesh Vithal Talewad
>
> -----Original Message-----
> From: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
> Sent: Wednesday, March 20, 2024 3:21 PM
> To: Mahesh Talewad <mahesh.talewad@nxp.com>
> Cc: linux-bluetooth@vger.kernel.org; Devyani Godbole 
> <devyani.godbole@nxp.com>; Sarveshwar Bajaj <sarveshwar.bajaj@nxp.com>
> Subject: [EXT] Re: [PATCH BlueZ v1 1/1] LE Create Connection command 
> timeout increased to 20 secs from 4 secs
>
> Caution: This is an external email. Please take care when clicking 
> links or opening attachments. When in doubt, report the message using 
> the 'Report this email' button
>
>
> Hi Mahesh,
>
> On Mon, Mar 18, 2024 at 12:37 PM Mahesh Talewad <mahesh.talewad@nxp.com> wrote:
> >
> >  - As per specs LE Connection timeout is 20 secs but in implementation,
> >    it was 4 secs. Hence increased this timeout to 20 Secs.
> >
> > Signed-off-by: Mahesh Talewad <mahesh.talewad@nxp.com>
> > ---
> >  net/bluetooth/hci_event.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c 
> > index 4ae224824012..06fe5f6b9546 100644
> > --- a/net/bluetooth/hci_event.c
> > +++ b/net/bluetooth/hci_event.c
> > @@ -6067,7 +6067,7 @@ static struct hci_conn *check_pending_le_conn(struct hci_dev *hdev,
> >         }
> >
> >         conn = hci_connect_le(hdev, addr, addr_type, addr_resolved,
> > -                             BT_SECURITY_LOW, hdev->def_le_autoconnect_timeout,
> > +                             BT_SECURITY_LOW, HCI_LE_CONN_TIMEOUT,
> >                               HCI_ROLE_MASTER);
> >         if (!IS_ERR(conn)) {
> >                 /* If HCI_AUTO_CONN_EXPLICIT is set, conn is already 
> > owned
> > --
> > 2.34.1
>
> Afaik this is on purpose since it is the autoconnect procedure, rather than user initiate connection, so are you running into a problem if the timeout is different?
>
> --
> Luiz Augusto von Dentz



--
Luiz Augusto von Dentz
Luiz Augusto von Dentz April 24, 2024, 7:31 p.m. UTC | #6
Hi Mahesh,

On Wed, Apr 24, 2024 at 9:49 AM Mahesh Talewad <mahesh.talewad@nxp.com> wrote:
>
> Hi Luiz,
>
> We tried with - 6093f28402aa6342890fc3adb6be355f804b719d - with this as well issue is observed.

The lets do something like:

diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index 5c12761cbc0e..fbf0a6263dae 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -456,7 +456,6 @@ enum {
 #define HCI_AUTO_OFF_TIMEOUT   msecs_to_jiffies(2000)  /* 2 seconds */
 #define HCI_ACL_CONN_TIMEOUT   msecs_to_jiffies(20000) /* 20 seconds */
 #define HCI_LE_CONN_TIMEOUT    msecs_to_jiffies(20000) /* 20 seconds */
-#define HCI_LE_AUTOCONN_TIMEOUT        msecs_to_jiffies(4000)  /* 4 seconds */

 /* HCI data types */
 #define HCI_COMMAND_PKT                0x01
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index 99b4e68075f4..651e5105fdd5 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -2556,7 +2556,7 @@ struct hci_dev *hci_alloc_dev_priv(int sizeof_priv)
        hdev->le_rx_def_phys = HCI_LE_SET_PHY_1M;
        hdev->le_num_of_adv_sets = HCI_MAX_ADV_INSTANCES;
        hdev->def_multi_adv_rotation_duration = HCI_DEFAULT_ADV_DURATION;
-       hdev->def_le_autoconnect_timeout = HCI_LE_AUTOCONN_TIMEOUT;
+       hdev->def_le_autoconnect_timeout = HCI_LE_CONN_TIMEOUT;
        hdev->min_le_tx_power = HCI_TX_POWER_INVALID;
        hdev->max_le_tx_power = HCI_TX_POWER_INVALID;
diff mbox series

Patch

diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index 4ae224824012..06fe5f6b9546 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -6067,7 +6067,7 @@  static struct hci_conn *check_pending_le_conn(struct hci_dev *hdev,
 	}
 
 	conn = hci_connect_le(hdev, addr, addr_type, addr_resolved,
-			      BT_SECURITY_LOW, hdev->def_le_autoconnect_timeout,
+			      BT_SECURITY_LOW, HCI_LE_CONN_TIMEOUT,
 			      HCI_ROLE_MASTER);
 	if (!IS_ERR(conn)) {
 		/* If HCI_AUTO_CONN_EXPLICIT is set, conn is already owned