Hi Andre, > Send MGMT Discovering events once LE scan starts/stops so the > userspace can track when local adapters are discovering LE devices. > > This way, we also keep the same behavior of inquiry which sends MGMT > Discovering events once inquiry starts/stops even if it is triggered > by an external tool (e.g. hcitool). > > Signed-off-by: Andre Guedes <andre.guedes@xxxxxxxxxxxxx> > --- > include/net/bluetooth/hci_core.h | 1 + > net/bluetooth/hci_core.c | 2 ++ > net/bluetooth/hci_event.c | 5 +++++ > 3 files changed, 8 insertions(+), 0 deletions(-) > > diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h > index 25f449f..4e569d8 100644 > --- a/include/net/bluetooth/hci_core.h > +++ b/include/net/bluetooth/hci_core.h > @@ -61,6 +61,7 @@ struct discovery_state { > DISCOVERY_STOPPED, > DISCOVERY_STARTING, > DISCOVERY_INQUIRY, > + DISCOVERY_LE_SCAN, > DISCOVERY_RESOLVING, > DISCOVERY_STOPPING, > } state; > diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c > index 91166db..fd22035 100644 > --- a/net/bluetooth/hci_core.c > +++ b/net/bluetooth/hci_core.c > @@ -361,6 +361,7 @@ bool hci_discovery_active(struct hci_dev *hdev) > struct discovery_state *discov = &hdev->discovery; > > if (discov->state == DISCOVERY_INQUIRY || > + discov->state == DISCOVERY_LE_SCAN || > discov->state == DISCOVERY_RESOLVING) > return true; I think we need to start using a switch statement here. > @@ -381,6 +382,7 @@ void hci_discovery_set_state(struct hci_dev *hdev, int state) > case DISCOVERY_STARTING: > break; > case DISCOVERY_INQUIRY: > + case DISCOVERY_LE_SCAN: > mgmt_discovering(hdev, 1); > break; > case DISCOVERY_RESOLVING: > diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c > index 6fb9016..dd8056c 100644 > --- a/net/bluetooth/hci_event.c > +++ b/net/bluetooth/hci_event.c > @@ -1055,12 +1055,17 @@ static void hci_cc_le_set_scan_enable(struct hci_dev *hdev, > > hci_dev_lock(hdev); > hci_adv_entries_clear(hdev); > + hci_discovery_set_state(hdev, DISCOVERY_LE_SCAN); > hci_dev_unlock(hdev); > break; > > case LE_SCANNING_DISABLED: > clear_bit(HCI_LE_SCAN, &hdev->dev_flags); > > + hci_dev_lock(hdev); > + hci_discovery_set_state(hdev, DISCOVERY_STOPPED); > + hci_dev_unlock(hdev); > + > schedule_delayed_work(&hdev->adv_work, ADV_CLEAR_TIMEOUT); > break; > Otherwise this looks fine. 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