Hi Luiz, > This make use of hci_dev_test_and_{set,clear}_flag instead of doing 2 > operations in a row. I really Fixes: tags for these. > > Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx> > --- > v2: Fix marking Device Privacy Flag even when adapter is not capable of > handling Set Privacy Mode. > v3: Add patch for using hci_dev_test_and_{set,clear}_flag and split > changes reworking how HCI_CONN_FLAG_REMOTE_WAKEUP is set and make use of > bitmap to store the supported flags. > > net/bluetooth/mgmt.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c > index f8f74d344297..0f91bf15e260 100644 > --- a/net/bluetooth/mgmt.c > +++ b/net/bluetooth/mgmt.c > @@ -4041,10 +4041,10 @@ static int set_zero_key_func(struct sock *sk, struct hci_dev *hdev, > #endif > > if (hdev && use_ll_privacy(hdev) && !hdev_is_powered(hdev)) { > - bool changed = hci_dev_test_flag(hdev, HCI_ENABLE_LL_PRIVACY); > - > - hci_dev_clear_flag(hdev, HCI_ENABLE_LL_PRIVACY); > + bool changed; > > + changed = hci_dev_test_and_clear_flag(hdev, > + HCI_ENABLE_LL_PRIVACY); > if (changed) > exp_ll_privacy_feature_changed(false, hdev, sk); > } > @@ -4139,15 +4139,15 @@ static int set_rpa_resolution_func(struct sock *sk, struct hci_dev *hdev, > val = !!cp->param[0]; > > if (val) { > - changed = !hci_dev_test_flag(hdev, HCI_ENABLE_LL_PRIVACY); > - hci_dev_set_flag(hdev, HCI_ENABLE_LL_PRIVACY); > + changed = !hci_dev_test_and_set_flag(hdev, > + HCI_ENABLE_LL_PRIVACY); > hci_dev_clear_flag(hdev, HCI_ADVERTISING); > > /* Enable LL privacy + supported settings changed */ > flags = BIT(0) | BIT(1); > } else { > - changed = hci_dev_test_flag(hdev, HCI_ENABLE_LL_PRIVACY); > - hci_dev_clear_flag(hdev, HCI_ENABLE_LL_PRIVACY); > + changed = hci_dev_test_and_clear_flag(hdev, > + HCI_ENABLE_LL_PRIVACY); > > /* Disable LL privacy + supported settings changed */ > flags = BIT(1); Regards Marcel