2021-04-05 22:40:17

by Sathish Narasimman

[permalink] [raw]
Subject: [Bluez PATCH] btmgmt: Add support to enable LL privacy

If the Bluetooth controller supports LL privacy this command will be
used to test the same.
"sudo btmgmt power off"
"sudo btmgmt llprivacy on"
"sudo btmgmt power on"

Signed-off-by: Sathish Narasimman <[email protected]>
---
tools/btmgmt.c | 38 ++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)

diff --git a/tools/btmgmt.c b/tools/btmgmt.c
index 93d244ff8ec8..4a53c3768fe9 100644
--- a/tools/btmgmt.c
+++ b/tools/btmgmt.c
@@ -2261,6 +2261,42 @@ static void cmd_bredr(int argc, char **argv)
cmd_setting(MGMT_OP_SET_BREDR, argc, argv);
}

+static void ll_rpa_resoln_rsp(uint8_t status, uint16_t len, const void *param,
+ void *user_data)
+{
+ if (status != 0)
+ error("Could not set LL RPA resolution with status 0x%02x (%s)",
+ status, mgmt_errstr(status));
+ else
+ print("LL RPA Resolution successfully set");
+
+ bt_shell_noninteractive_quit(EXIT_SUCCESS);
+}
+
+static void cmd_set_ll_rpa_resoln(int argc, char **argv)
+{
+ /* 15c0a148-c273-11ea-b3de-0242ac130004 */
+ static const uint8_t rpa_resolution_uuid[16] = {
+ 0x04, 0x00, 0x13, 0xac, 0x42, 0x02, 0xde, 0xb3,
+ 0xea, 0x11, 0x73, 0xc2, 0x48, 0xa1, 0xc0, 0x15,
+ };
+ struct mgmt_cp_set_exp_feature cp;
+ uint16_t index;
+
+ memset(&cp, 0, sizeof(cp));
+ memcpy(cp.uuid, rpa_resolution_uuid, 16);
+
+ index = mgmt_index;
+ if (index == MGMT_INDEX_NONE)
+ index = 0;
+
+ if (parse_setting(argc, argv, &cp.action) == false)
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+
+ mgmt_send(mgmt, MGMT_OP_SET_EXP_FEATURE, index,
+ sizeof(cp), &cp, ll_rpa_resoln_rsp, NULL, NULL);
+}
+
static void cmd_privacy(int argc, char **argv)
{
struct mgmt_cp_set_privacy cp;
@@ -5243,6 +5279,8 @@ static const struct bt_shell_menu main_menu = {
cmd_bredr, "Toggle BR/EDR support", },
{ "privacy", "<on/off>",
cmd_privacy, "Toggle privacy support" },
+ { "llprivacy", "<on/off>",
+ cmd_set_ll_rpa_resoln, "Toggle LL privacy support" },
{ "class", "<major> <minor>",
cmd_class, "Set device major/minor class" },
{ "disconnect", "[-t type] <remote address>",
--
2.17.1


2021-04-05 23:01:00

by bluez.test.bot

[permalink] [raw]
Subject: RE: [Bluez] btmgmt: Add support to enable LL privacy

This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=460883

---Test result---

##############################
Test: CheckPatch - PASS

##############################
Test: CheckGitLint - PASS

##############################
Test: CheckBuild: Setup ELL - PASS

##############################
Test: CheckBuild: Setup - PASS

##############################
Test: CheckBuild - PASS

##############################
Test: MakeCheck - PASS

##############################
Test: CheckBuild w/external ell - PASS



---
Regards,
Linux Bluetooth

2021-04-06 14:06:37

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [Bluez PATCH] btmgmt: Add support to enable LL privacy

Hi Luiz,

>> If the Bluetooth controller supports LL privacy this command will be
>> used to test the same.
>> "sudo btmgmt power off"
>> "sudo btmgmt llprivacy on"
>> "sudo btmgmt power on"
>>
>> Signed-off-by: Sathish Narasimman <[email protected]>
>> ---
>> tools/btmgmt.c | 38 ++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 38 insertions(+)
>>
>> diff --git a/tools/btmgmt.c b/tools/btmgmt.c
>> index 93d244ff8ec8..4a53c3768fe9 100644
>> --- a/tools/btmgmt.c
>> +++ b/tools/btmgmt.c
>> @@ -2261,6 +2261,42 @@ static void cmd_bredr(int argc, char **argv)
>> cmd_setting(MGMT_OP_SET_BREDR, argc, argv);
>> }
>>
>> +static void ll_rpa_resoln_rsp(uint8_t status, uint16_t len, const void *param,
>> + void *user_data)
>> +{
>> + if (status != 0)
>> + error("Could not set LL RPA resolution with status 0x%02x (%s)",
>> + status, mgmt_errstr(status));
>> + else
>> + print("LL RPA Resolution successfully set");
>> +
>> + bt_shell_noninteractive_quit(EXIT_SUCCESS);
>> +}
>> +
>> +static void cmd_set_ll_rpa_resoln(int argc, char **argv)
>> +{
>> + /* 15c0a148-c273-11ea-b3de-0242ac130004 */
>> + static const uint8_t rpa_resolution_uuid[16] = {
>> + 0x04, 0x00, 0x13, 0xac, 0x42, 0x02, 0xde, 0xb3,
>> + 0xea, 0x11, 0x73, 0xc2, 0x48, 0xa1, 0xc0, 0x15,
>> + };
>> + struct mgmt_cp_set_exp_feature cp;
>> + uint16_t index;
>> +
>> + memset(&cp, 0, sizeof(cp));
>> + memcpy(cp.uuid, rpa_resolution_uuid, 16);
>> +
>> + index = mgmt_index;
>> + if (index == MGMT_INDEX_NONE)
>> + index = 0;
>> +
>> + if (parse_setting(argc, argv, &cp.action) == false)
>> + return bt_shell_noninteractive_quit(EXIT_FAILURE);
>> +
>> + mgmt_send(mgmt, MGMT_OP_SET_EXP_FEATURE, index,
>> + sizeof(cp), &cp, ll_rpa_resoln_rsp, NULL, NULL);
>> +}
>> +
>> static void cmd_privacy(int argc, char **argv)
>> {
>> struct mgmt_cp_set_privacy cp;
>> @@ -5243,6 +5279,8 @@ static const struct bt_shell_menu main_menu = {
>> cmd_bredr, "Toggle BR/EDR support", },
>> { "privacy", "<on/off>",
>> cmd_privacy, "Toggle privacy support" },
>> + { "llprivacy", "<on/off>",
>> + cmd_set_ll_rpa_resoln, "Toggle LL privacy support" },
>
> Let's have it as a parameter of privacy command <on/off/ll> so when a
> user enters ll it enables link-layer privacy.

please don’t. The privacy setting means that we start using RPAs.

Also what is wrong with exp-privacy command that I already added.

Regards

Marcel

2021-04-06 14:56:56

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: Re: [Bluez PATCH] btmgmt: Add support to enable LL privacy

Hi Sathish,

On Mon, Apr 5, 2021 at 3:40 PM Sathish Narasimman
<[email protected]> wrote:
>
> If the Bluetooth controller supports LL privacy this command will be
> used to test the same.
> "sudo btmgmt power off"
> "sudo btmgmt llprivacy on"
> "sudo btmgmt power on"
>
> Signed-off-by: Sathish Narasimman <[email protected]>
> ---
> tools/btmgmt.c | 38 ++++++++++++++++++++++++++++++++++++++
> 1 file changed, 38 insertions(+)
>
> diff --git a/tools/btmgmt.c b/tools/btmgmt.c
> index 93d244ff8ec8..4a53c3768fe9 100644
> --- a/tools/btmgmt.c
> +++ b/tools/btmgmt.c
> @@ -2261,6 +2261,42 @@ static void cmd_bredr(int argc, char **argv)
> cmd_setting(MGMT_OP_SET_BREDR, argc, argv);
> }
>
> +static void ll_rpa_resoln_rsp(uint8_t status, uint16_t len, const void *param,
> + void *user_data)
> +{
> + if (status != 0)
> + error("Could not set LL RPA resolution with status 0x%02x (%s)",
> + status, mgmt_errstr(status));
> + else
> + print("LL RPA Resolution successfully set");
> +
> + bt_shell_noninteractive_quit(EXIT_SUCCESS);
> +}
> +
> +static void cmd_set_ll_rpa_resoln(int argc, char **argv)
> +{
> + /* 15c0a148-c273-11ea-b3de-0242ac130004 */
> + static const uint8_t rpa_resolution_uuid[16] = {
> + 0x04, 0x00, 0x13, 0xac, 0x42, 0x02, 0xde, 0xb3,
> + 0xea, 0x11, 0x73, 0xc2, 0x48, 0xa1, 0xc0, 0x15,
> + };
> + struct mgmt_cp_set_exp_feature cp;
> + uint16_t index;
> +
> + memset(&cp, 0, sizeof(cp));
> + memcpy(cp.uuid, rpa_resolution_uuid, 16);
> +
> + index = mgmt_index;
> + if (index == MGMT_INDEX_NONE)
> + index = 0;
> +
> + if (parse_setting(argc, argv, &cp.action) == false)
> + return bt_shell_noninteractive_quit(EXIT_FAILURE);
> +
> + mgmt_send(mgmt, MGMT_OP_SET_EXP_FEATURE, index,
> + sizeof(cp), &cp, ll_rpa_resoln_rsp, NULL, NULL);
> +}
> +
> static void cmd_privacy(int argc, char **argv)
> {
> struct mgmt_cp_set_privacy cp;
> @@ -5243,6 +5279,8 @@ static const struct bt_shell_menu main_menu = {
> cmd_bredr, "Toggle BR/EDR support", },
> { "privacy", "<on/off>",
> cmd_privacy, "Toggle privacy support" },
> + { "llprivacy", "<on/off>",
> + cmd_set_ll_rpa_resoln, "Toggle LL privacy support" },

Let's have it as a parameter of privacy command <on/off/ll> so when a
user enters ll it enables link-layer privacy.

> { "class", "<major> <minor>",
> cmd_class, "Set device major/minor class" },
> { "disconnect", "[-t type] <remote address>",
> --
> 2.17.1
>


--
Luiz Augusto von Dentz