Message ID | 20210405145802.27317-1-sathish.narasimman@intel.com |
---|---|
State | New |
Headers | show |
Series | [Bluez] btmgmt: Add support to enable LL privacy | expand |
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 > -- Luiz Augusto von Dentz
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
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
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
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 --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>",
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(+)