case DISCOVERY_STOPPED:
                hci_update_background_scan(hdev);
 
-               /* Reset RSSI and UUID filters to ensure Start Discovery
-                * and Start Service Discovery operate properly no matter
-                * which one started the previous discovery.
-                *
-                * While the Start Discovery and Start Service Discovery
-                * operations will set proper values for RSSI and UUID
-                * count, it is important to actually free the allocated
-                * list of UUIDs here.
-                */
-               hci_discovery_filter_clear(hdev);
-
                if (old_state != DISCOVERY_STARTING)
                        mgmt_discovering(hdev, 0);
                break;
        if (hdev->discovery.state != DISCOVERY_STOPPED)
                return;
 
+       /* Reset RSSI and UUID filters when starting background scanning
+        * since these filters are meant for service discovery only.
+        *
+        * The Start Discovery and Start Service Discovery operations
+        * ensure to set proper values for RSSI threshold and UUID
+        * filter list. So it is safe to just reset them here.
+        */
+       hci_discovery_filter_clear(hdev);
+
        hci_req_init(&req, hdev);
 
        if (list_empty(&hdev->pend_le_conns) &&