Cleanup patches for LL Privacy work
Subsystems (2)
Marcel Holtmann
maintainercover 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(-)
Signature · 1 line
2.25.2
Marcel Holtmann
maintainerPATCH 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.
--- include/net/bluetooth/hci.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
include/net/bluetooth/hci.h +1 -3
@@ -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
Signature · 1 line
2.25.2
Marcel Holtmann
maintainerPATCH 2/4 Bluetooth: Use extra variable to make code more readable
In reply to Marcel HoltmannWhen starting active scanning for discovery the whitelist is not needed to be used. So the filter_policy is 0x00. To make the core more readable use a variable name instead of just setting 0 as paramter.
--- net/bluetooth/hci_request.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
net/bluetooth/hci_request.c +3 -1
@@ -2723,6 +2723,8 @@ static int active_scan(struct hci_request *req, unsigned long opt)uint16_t interval = opt;struct hci_dev *hdev = req->hdev;u8 own_addr_type; +/* White list is not used for discovery */ +u8 filter_policy =0x00 ;int err;BT_DBG ("%s" , hdev->name);
@@ -2744,7 +2746,7 @@ static int active_scan(struct hci_request *req, unsigned long opt) own_addr_type =ADDR_LE_DEV_PUBLIC ;hci_req_start_scan (req,LE_SCAN_ACTIVE , interval,DISCOV_LE_SCAN_WIN , - own_addr_type,0 ); + own_addr_type, filter_policy);return 0 ; }
Signature · 1 line
2.25.2
Marcel Holtmann
maintainerPATCH 3/4 Bluetooth: Enable LE Enhanced Connection Complete event.
In reply to Marcel HoltmannIn 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.
--- include/net/bluetooth/hci.h | 1 + net/bluetooth/hci_core.c | 8 ++++++++ 2 files changed, 9 insertions(+)
include/net/bluetooth/hci.h +1 -0
@@ -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
net/bluetooth/hci_core.c +8 -0
@@ -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. */
Signature · 1 line
2.25.2
Marcel Holtmann
maintainerPATCH 4/4 Bluetooth: Clear HCI_LL_RPA_RESOLUTION flag on reset
In reply to Marcel HoltmannWhen the controller is being reset or power cycled, then the flag HCI_LL_RPA_RESOLUTION which indicates if controller based address resolution is active needs to be also reset.
--- include/net/bluetooth/hci_core.h | 1 + 1 file changed, 1 insertion(+)
include/net/bluetooth/hci_core.h +1 -0
@@ -645,6 +645,7 @@ extern struct mutex hci_cb_list_lock;do { \hci_dev_clear_flag (hdev,HCI_LE_SCAN ); \hci_dev_clear_flag (hdev,HCI_LE_ADV ); \ +hci_dev_clear_flag (hdev,HCI_LL_RPA_RESOLUTION );\hci_dev_clear_flag (hdev,HCI_PERIODIC_INQ ); \ }while (0 )
Signature · 1 line
2.25.2
Re: [PATCH 3/4] Bluetooth: Enable LE Enhanced Connection Complete event.
In reply to Marcel HoltmannHi Marcel
Quoted 43 lines · Marcel Holtmann
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(+)include/net/bluetooth/hci.h +1
-0@@ -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 0x08net/bluetooth/hci_core.c +8
-1@@ -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. */ --
Quoted 2 lines
2.25.2
I see LE Enhanced Connection complete event is enabled here.
Regards
Sathish N
Marcel Holtmann
maintainerRe: [PATCH 3/4] Bluetooth: Enable LE Enhanced Connection Complete event.
Hi Sathish,
Quoted 46 lines
Quoted 42 lines
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(+)include/net/bluetooth/hci.h +1
-0@@ -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 0x08net/bluetooth/hci_core.c +8
-1@@ -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. */ --Quoted 2 lines
2.25.2
Quoted 1 line
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
Hi Marcel,
Quoted 9 lines · Marcel Holtmann
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: ClearHCI_LL_RPA_RESOLUTIONflag on reset
Quoted 5 lines
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