Hi Clancy, On Tue, Jan 9, 2024 at 4:26 AM clancy_shang <clancy_shang@xxxxxxx> wrote: > > Hi Luiz Augusto von Dentz, > > Thanks for you suggestions. is the patch has been accepted? or need me modify as your suggested and resend to you? It has been applied already: https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git/commit/?id=0bcd317e8b31833d36cd9843902905aafbd70017 > Kind regards, > > Clancy > > > > > > > > At 2024-01-05 23:21:59, "Luiz Augusto von Dentz" <luiz.dentz@xxxxxxxxx> wrote: > >Hi Clancy, > > > >On Thu, Jan 4, 2024 at 9:56 PM <clancy_shang@xxxxxxx> wrote: > >> > >> From: Clancy Shang <clancy.shang@xxxxxxxxxxx> > >> > >> when BLE master enter suspend, it does not delete the peripheral that > >> in acceptlist. so if disable the wakeup function, the BLE master scans with > >> basic filter next time, the peripheral can be scanned which is unexpected > >> > >> Signed-off-by: Clancy Shang <clancy.shang@xxxxxxxxxxx> > >> --- > >> net/bluetooth/hci_sync.c | 10 ++++++++++ > >> 1 file changed, 10 insertions(+) > >> > >> diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c > >> index d85a7091a116..abc7f614da5f 100644 > >> --- a/net/bluetooth/hci_sync.c > >> +++ b/net/bluetooth/hci_sync.c > >> @@ -2533,6 +2533,7 @@ static u8 hci_update_accept_list_sync(struct hci_dev *hdev) > >> struct bdaddr_list *b, *t; > >> u8 num_entries = 0; > >> bool pend_conn, pend_report; > >> + struct hci_conn_params *conn_params; > >> u8 filter_policy; > >> size_t i, n; > >> int err; > >> @@ -2585,6 +2586,15 @@ static u8 hci_update_accept_list_sync(struct hci_dev *hdev) > >> continue; > >> } > >> > >> + conn_params = hci_conn_params_lookup(hdev, &b->bdaddr, b->bdaddr_type); > >> + /* During suspend, only wakeable devices can be in acceptlist */ > >> + if (conn_params && hdev->suspended && > >> + !(conn_params->flags & HCI_CONN_FLAG_REMOTE_WAKEUP)) { > >> + hci_le_del_accept_list_sync(hdev, &b->bdaddr, > >> + b->bdaddr_type); > >> + continue; > >> + } > > > >This might require a lock since that is not a copy of the conn_params > >which can be updated concurrently, so perhaps something like the > >following is might be safer: > > > >diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c > >index b3141e3f9cf6..eeb73a54fd26 100644 > >--- a/net/bluetooth/hci_sync.c > >+++ b/net/bluetooth/hci_sync.c > >@@ -2206,8 +2206,11 @@ static int hci_le_add_accept_list_sync(struct > >hci_dev *hdev, > > > > /* During suspend, only wakeable devices can be in acceptlist */ > > if (hdev->suspended && > >- !(params->flags & HCI_CONN_FLAG_REMOTE_WAKEUP)) > >+ !(params->flags & HCI_CONN_FLAG_REMOTE_WAKEUP)) { > >+ hci_le_del_accept_list_sync(hdev, ¶ms->bdaddr, > >+ params->bdaddr_type); > > return 0; > >+ } > > > > /* Select filter policy to accept all advertising */ > > if (*num_entries >= hdev->le_accept_list_size) > > > >> num_entries++; > >> } > >> > >> -- > >> 2.25.1 > >> > > > > > >-- > >Luiz Augusto von Dentz -- Luiz Augusto von Dentz