} else if (hci_is_adv_monitoring(hdev)) {
                window = hdev->le_scan_window_adv_monitor;
                interval = hdev->le_scan_int_adv_monitor;
+
+               /* Disable duplicates filter when scanning for advertisement
+                * monitor for the following reasons.
+                *
+                * For HW pattern filtering (ex. MSFT), Realtek and Qualcomm
+                * controllers ignore RSSI_Sampling_Period when the duplicates
+                * filter is enabled.
+                *
+                * For SW pattern filtering, when we're not doing interleaved
+                * scanning, it is necessary to disable duplicates filter,
+                * otherwise hosts can only receive one advertisement and it's
+                * impossible to know if a peer is still in range.
+                */
+               filter_dups = LE_SCAN_FILTER_DUP_DISABLE;
        } else {
                window = hdev->le_scan_window;
                interval = hdev->le_scan_interval;