diff mbox series

[Bluez] btmgmt: Add support to enable LL privacy

Message ID 20210405145802.27317-1-sathish.narasimman@intel.com (mailing list archive)
State New, archived
Headers show
Series [Bluez] btmgmt: Add support to enable LL privacy | expand

Commit Message

Sathish Narasimman April 5, 2021, 2:58 p.m. UTC
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 <sathish.narasimman@intel.com>
---
 tools/btmgmt.c | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

Comments

bluez.test.bot@gmail.com April 5, 2021, 3:42 p.m. UTC | #1
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
Luiz Augusto von Dentz April 6, 2021, 3:08 a.m. UTC | #2
Hi Sathish,

On Mon, Apr 5, 2021 at 3:40 PM Sathish Narasimman
<sathish.narasimman@intel.com> 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 <sathish.narasimman@intel.com>
> ---
>  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
>
Marcel Holtmann April 6, 2021, 8 a.m. UTC | #3
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 <sathish.narasimman@intel.com>
>> ---
>> 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
Sathish Narasimman April 14, 2021, 5:13 a.m. UTC | #4
Hi 

> -----Original Message-----
> From: Marcel Holtmann <marcel@holtmann.org>
> Sent: Tuesday, April 6, 2021 1:31 PM
> To: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
> Cc: Narasimman, Sathish <sathish.narasimman@intel.com>; linux-
> bluetooth@vger.kernel.org; Tumkur Narayan, Chethan
> <chethan.tumkur.narayan@intel.com>; Srivatsa, Ravishankar
> <ravishankar.srivatsa@intel.com>
> 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 <sathish.narasimman@intel.com>
> >> ---
> >> 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.

Gentle Reminder.
> 
> Regards
> 
> Marcel


Regards
Sathish N
Marcel Holtmann April 14, 2021, 10:06 a.m. UTC | #5
Hi Sathish,

>>>> 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 <sathish.narasimman@intel.com>
>>>> ---
>>>> 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.
> 
> Gentle Reminder.

gentle reminder of what? Please re-read my response.

Regards

Marcel
Sathish Narasimman April 14, 2021, 11:14 a.m. UTC | #6
Hi Marcel

> -----Original Message-----
> From: Marcel Holtmann <marcel@holtmann.org>
> Sent: Wednesday, April 14, 2021 3:37 PM
> To: Narasimman, Sathish <sathish.narasimman@intel.com>
> Cc: Luiz Augusto von Dentz <luiz.dentz@gmail.com>; linux-
> bluetooth@vger.kernel.org; Tumkur Narayan, Chethan
> <chethan.tumkur.narayan@intel.com>; Srivatsa, Ravishankar
> <ravishankar.srivatsa@intel.com>
> Subject: Re: [Bluez PATCH] btmgmt: Add support to enable LL privacy
> 
> Hi Sathish,
> 
> >>>> 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 <sathish.narasimman@intel.com>
> >>>> ---
> >>>> 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.
> >
> > Gentle Reminder.
> 
> gentle reminder of what? Please re-read my response.
> 

My mistake. Was misunderstood that the comment was regarding what Luiz asked to Change.

Also, I didn’t rebased the latest code. Found your latest code.


> Regards
> 
> Marcel


Regards
Sathish N
diff mbox series

Patch

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>",