v2 sent with fix. On Mon, Aug 31, 2020 at 8:49 AM Marcel Holtmann <marcel@xxxxxxxxxxxx> wrote: > > Hi Abhishek, > > > While unregistering, make sure to clear the suspend tasks before > > cancelling the work. If the unregister is called during resume from > > suspend, this will unnecessarily add 2s to the resume time otherwise. > > > > Fixes: 4e8c36c3b0d73d (Bluetooth: Fix suspend notifier race) > > Signed-off-by: Abhishek Pandit-Subedi <abhishekpandit@xxxxxxxxxxxx> > > --- > > This was discovered with RT8822CE using the btusb driver. This chipset > > will reset on resume during system suspend and was unnecessarily adding > > 2s to every resume. Since we're unregistering anyway, there's no harm in > > just clearing the pending events. > > > > net/bluetooth/hci_core.c | 11 +++++++++++ > > 1 file changed, 11 insertions(+) > > > > diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c > > index 68bfe57b66250f..ed4cb3479433c0 100644 > > --- a/net/bluetooth/hci_core.c > > +++ b/net/bluetooth/hci_core.c > > @@ -3442,6 +3442,16 @@ void hci_copy_identity_address(struct hci_dev *hdev, bdaddr_t *bdaddr, > > } > > } > > > > +static void hci_suspend_clear_tasks(struct hci_dev *hdev) > > +{ > > + int i; > > + > > + for (i = 0; i < __SUSPEND_NUM_TASKS; ++i) > > + clear_bit(i, hdev->suspend_tasks); > > I prefer i++ instead of ++i. > > Regards > > Marcel >