struct ath11k *ar = hw->priv;
        struct ath11k_base *ab = ar->ab;
        struct ath11k_vif *arvif = (void *)vif->drv_priv;
+       struct ath11k_peer *peer;
        int ret;
 
        mutex_lock(&ar->conf_mutex);
        WARN_ON(!arvif->is_started);
 
        if (ab->hw_params.vdev_start_delay &&
-           arvif->vdev_type == WMI_VDEV_TYPE_MONITOR &&
-           ath11k_peer_find_by_addr(ab, ar->mac_addr))
-               ath11k_peer_delete(ar, arvif->vdev_id, ar->mac_addr);
+           arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) {
+               spin_lock_bh(&ab->base_lock);
+               peer = ath11k_peer_find_by_addr(ab, ar->mac_addr);
+               spin_unlock_bh(&ab->base_lock);
+               if (peer)
+                       ath11k_peer_delete(ar, arvif->vdev_id, ar->mac_addr);
+       }
 
        if (arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) {
                ret = ath11k_mac_monitor_stop(ar);