2020-04-09 06:06:29

by Marcel Holtmann

[permalink] [raw]
Subject: [PATCH 0/4] Cleanup patches for LL Privacy work

These are are few cleanup patches before the LL Privacy work can
continue.

Marcel Holtmann (4):
Bluetooth: Sort list of LE features constants
Bluetooth: Use extra variable to make code more readable
Bluetooth: Enable LE Enhanced Connection Complete event.
Bluetooth: Clear HCI_LL_RPA_RESOLUTION flag on reset

include/net/bluetooth/hci.h | 5 ++---
include/net/bluetooth/hci_core.h | 1 +
net/bluetooth/hci_core.c | 8 ++++++++
net/bluetooth/hci_request.c | 4 +++-
4 files changed, 14 insertions(+), 4 deletions(-)

--
2.25.2


2020-04-09 06:08:40

by Marcel Holtmann

[permalink] [raw]
Subject: [PATCH 1/4] Bluetooth: Sort list of LE features constants

The list of LE features constants has gotten a bit confused. It lost the
order and gained duplicated. Clean this up.

Signed-off-by: Marcel Holtmann <[email protected]>
---
include/net/bluetooth/hci.h | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index f4e8e2a0b7c1..ff42d05b3e72 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -460,12 +460,10 @@ enum {
#define HCI_LE_SLAVE_FEATURES 0x08
#define HCI_LE_PING 0x10
#define HCI_LE_DATA_LEN_EXT 0x20
-#define HCI_LE_PHY_2M 0x01
-#define HCI_LE_PHY_CODED 0x08
-#define HCI_LE_EXT_ADV 0x10
#define HCI_LE_EXT_SCAN_POLICY 0x80
#define HCI_LE_PHY_2M 0x01
#define HCI_LE_PHY_CODED 0x08
+#define HCI_LE_EXT_ADV 0x10
#define HCI_LE_CHAN_SEL_ALG2 0x40
#define HCI_LE_CIS_MASTER 0x10
#define HCI_LE_CIS_SLAVE 0x20
--
2.25.2

2020-04-09 06:08:41

by Marcel Holtmann

[permalink] [raw]
Subject: [PATCH 3/4] Bluetooth: Enable LE Enhanced Connection Complete event.

In case LL Privacy is supported by the controller, it is also a good
idea to use the LE Enhanced Connection Complete event for getting all
information about the new connection and its addresses.

Signed-off-by: Marcel Holtmann <[email protected]>
---
include/net/bluetooth/hci.h | 1 +
net/bluetooth/hci_core.c | 8 ++++++++
2 files changed, 9 insertions(+)

diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index ff42d05b3e72..1da8cec8e210 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -460,6 +460,7 @@ enum {
#define HCI_LE_SLAVE_FEATURES 0x08
#define HCI_LE_PING 0x10
#define HCI_LE_DATA_LEN_EXT 0x20
+#define HCI_LE_LL_PRIVACY 0x40
#define HCI_LE_EXT_SCAN_POLICY 0x80
#define HCI_LE_PHY_2M 0x01
#define HCI_LE_PHY_CODED 0x08
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index 589c4085499c..0d726d59a492 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -638,6 +638,14 @@ static int hci_init3_req(struct hci_request *req, unsigned long opt)
if (hdev->le_features[0] & HCI_LE_DATA_LEN_EXT)
events[0] |= 0x40; /* LE Data Length Change */

+ /* If the controller supports LL Privacy feature, enable
+ * the corresponding event.
+ */
+ if (hdev->le_features[0] & HCI_LE_LL_PRIVACY)
+ events[1] |= 0x02; /* LE Enhanced Connection
+ * Complete
+ */
+
/* If the controller supports Extended Scanner Filter
* Policies, enable the correspondig event.
*/
--
2.25.2

2020-04-14 14:35:37

by Sathish Narasimman

[permalink] [raw]
Subject: Re: [PATCH 3/4] Bluetooth: Enable LE Enhanced Connection Complete event.

Hi Marcel

On Thu, Apr 9, 2020 at 11:38 AM Marcel Holtmann <[email protected]> wrote:
>
> In case LL Privacy is supported by the controller, it is also a good
> idea to use the LE Enhanced Connection Complete event for getting all
> information about the new connection and its addresses.
>
> Signed-off-by: Marcel Holtmann <[email protected]>
> ---
> include/net/bluetooth/hci.h | 1 +
> net/bluetooth/hci_core.c | 8 ++++++++
> 2 files changed, 9 insertions(+)
>
> diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
> index ff42d05b3e72..1da8cec8e210 100644
> --- a/include/net/bluetooth/hci.h
> +++ b/include/net/bluetooth/hci.h
> @@ -460,6 +460,7 @@ enum {
> #define HCI_LE_SLAVE_FEATURES 0x08
> #define HCI_LE_PING 0x10
> #define HCI_LE_DATA_LEN_EXT 0x20
> +#define HCI_LE_LL_PRIVACY 0x40
> #define HCI_LE_EXT_SCAN_POLICY 0x80
> #define HCI_LE_PHY_2M 0x01
> #define HCI_LE_PHY_CODED 0x08
> diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
> index 589c4085499c..0d726d59a492 100644
> --- a/net/bluetooth/hci_core.c
> +++ b/net/bluetooth/hci_core.c
> @@ -638,6 +638,14 @@ static int hci_init3_req(struct hci_request *req, unsigned long opt)
> if (hdev->le_features[0] & HCI_LE_DATA_LEN_EXT)
> events[0] |= 0x40; /* LE Data Length Change */
>
> + /* If the controller supports LL Privacy feature, enable
> + * the corresponding event.
> + */
> + if (hdev->le_features[0] & HCI_LE_LL_PRIVACY)
> + events[1] |= 0x02; /* LE Enhanced Connection
> + * Complete
> + */
> +
> /* If the controller supports Extended Scanner Filter
> * Policies, enable the correspondig event.
> */
> --
> 2.25.2
>
https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git/tree/net/bluetooth/hci_core.c#n717

I see LE Enhanced Connection complete event is enabled here.

Regards
Sathish N

2020-04-15 17:07:17

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH 3/4] Bluetooth: Enable LE Enhanced Connection Complete event.

Hi Sathish,

>> In case LL Privacy is supported by the controller, it is also a good
>> idea to use the LE Enhanced Connection Complete event for getting all
>> information about the new connection and its addresses.
>>
>> Signed-off-by: Marcel Holtmann <[email protected]>
>> ---
>> include/net/bluetooth/hci.h | 1 +
>> net/bluetooth/hci_core.c | 8 ++++++++
>> 2 files changed, 9 insertions(+)
>>
>> diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
>> index ff42d05b3e72..1da8cec8e210 100644
>> --- a/include/net/bluetooth/hci.h
>> +++ b/include/net/bluetooth/hci.h
>> @@ -460,6 +460,7 @@ enum {
>> #define HCI_LE_SLAVE_FEATURES 0x08
>> #define HCI_LE_PING 0x10
>> #define HCI_LE_DATA_LEN_EXT 0x20
>> +#define HCI_LE_LL_PRIVACY 0x40
>> #define HCI_LE_EXT_SCAN_POLICY 0x80
>> #define HCI_LE_PHY_2M 0x01
>> #define HCI_LE_PHY_CODED 0x08
>> diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
>> index 589c4085499c..0d726d59a492 100644
>> --- a/net/bluetooth/hci_core.c
>> +++ b/net/bluetooth/hci_core.c
>> @@ -638,6 +638,14 @@ static int hci_init3_req(struct hci_request *req, unsigned long opt)
>> if (hdev->le_features[0] & HCI_LE_DATA_LEN_EXT)
>> events[0] |= 0x40; /* LE Data Length Change */
>>
>> + /* If the controller supports LL Privacy feature, enable
>> + * the corresponding event.
>> + */
>> + if (hdev->le_features[0] & HCI_LE_LL_PRIVACY)
>> + events[1] |= 0x02; /* LE Enhanced Connection
>> + * Complete
>> + */
>> +
>> /* If the controller supports Extended Scanner Filter
>> * Policies, enable the correspondig event.
>> */
>> --
>> 2.25.2
>>
> https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git/tree/net/bluetooth/hci_core.c#n717
>
> I see LE Enhanced Connection complete event is enabled here.

I see. However LE Enhanced Connection complete event has been added for LL Privacy and not for Extended Advertising. The current setting of the event needs to be removed. If you look at the difference on what the event is adding compared to the legacy one, you see it is only about RPAs.

Regards

Marcel

2020-04-16 00:06:32

by Johan Hedberg

[permalink] [raw]
Subject: Re: [PATCH 0/4] Cleanup patches for LL Privacy work

Hi Marcel,

On Thu, Apr 09, 2020, Marcel Holtmann wrote:
> These are are few cleanup patches before the LL Privacy work can
> continue.
>
> Marcel Holtmann (4):
> Bluetooth: Sort list of LE features constants
> Bluetooth: Use extra variable to make code more readable
> Bluetooth: Enable LE Enhanced Connection Complete event.
> Bluetooth: Clear HCI_LL_RPA_RESOLUTION flag on reset
>
> include/net/bluetooth/hci.h | 5 ++---
> include/net/bluetooth/hci_core.h | 1 +
> net/bluetooth/hci_core.c | 8 ++++++++
> net/bluetooth/hci_request.c | 4 +++-
> 4 files changed, 14 insertions(+), 4 deletions(-)

All patches in this set have been applied to bluetooth-next. Thanks.

Johan