Hi Andre, > We are not supposed to block in start_discovery() because > start_discovery code is running in write() syscall context > and this would block the write operation on the mgmt socket. > This way, we cannot directly call hci_do_le_scan() to scan > LE devices in start_discovery(). To overcome this issue a > derefered work (hdev->le_scan) was created so we can properly > call hci_do_le_scan(). > > The helper function hci_le_scan() simply set LE scan parameters > and queue hdev->le_scan work. The work is queued on system_long_wq > since it can sleep for a few seconds in the worst case (timeout). > > Signed-off-by: Andre Guedes <andre.guedes@xxxxxxxxxxxxx> > --- > include/net/bluetooth/hci_core.h | 12 ++++++++++++ > net/bluetooth/hci_core.c | 34 ++++++++++++++++++++++++++++++++++ > 2 files changed, 46 insertions(+), 0 deletions(-) so I am fine with this one, but we might need to make this one generic as well (if possible). Acked-by: Marcel Holtmann <marcel@xxxxxxxxxxxx> Regards Marcel -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html