infiniband/mlx5dv.h \
                func mlx5dv_alloc_var \
                $(AUTOCONF_OUTPUT)
+       $Q sh -- '$<' '$@' \
+               HAVE_MLX5DV_DR_MEM_RECLAIM \
+               infiniband/mlx5dv.h \
+               func mlx5dv_dr_domain_set_reclaim_device_memory \
+               $(AUTOCONF_OUTPUT)
        $Q sh -- '$<' '$@' \
                HAVE_ETHTOOL_LINK_MODE_25G \
                /usr/include/linux/ethtool.h \
 
        'RDMA_NLDEV_ATTR_NDEV_INDEX' ],
        [ 'HAVE_MLX5_DR_FLOW_DUMP', 'infiniband/mlx5dv.h',
        'mlx5dv_dump_dr_domain'],
+       [ 'HAVE_MLX5DV_DR_MEM_RECLAIM', 'infiniband/mlx5dv.h',
+       'mlx5dv_dr_domain_set_reclaim_device_memory'],
        [ 'HAVE_DEVLINK', 'linux/devlink.h', 'DEVLINK_GENL_NAME' ],
 ]
 config = configuration_data()
 
 #endif
 }
 
+
+static void
+mlx5_glue_dr_reclaim_domain_memory(void *domain, uint32_t enable)
+{
+#ifdef HAVE_MLX5DV_DR_MEM_RECLAIM
+       mlx5dv_dr_domain_set_reclaim_device_memory(domain, enable);
+#else
+       (void)(enable);
+       (void)(domain);
+#endif
+}
+
 __rte_cache_aligned
 const struct mlx5_glue *mlx5_glue = &(const struct mlx5_glue) {
        .version = MLX5_GLUE_VERSION,
        .devx_qp_query = mlx5_glue_devx_qp_query,
        .devx_port_query = mlx5_glue_devx_port_query,
        .dr_dump_domain = mlx5_glue_dr_dump_domain,
+       .dr_reclaim_domain_memory = mlx5_glue_dr_reclaim_domain_memory,
        .devx_query_eqn = mlx5_glue_devx_query_eqn,
        .devx_create_event_channel = mlx5_glue_devx_create_event_channel,
        .devx_destroy_event_channel = mlx5_glue_devx_destroy_event_channel,
 
                        (struct mlx5dv_devx_event_channel *event_channel,
                         struct mlx5dv_devx_async_event_hdr *event_data,
                         size_t event_resp_len);
+       void (*dr_reclaim_domain_memory)(void *domain, uint32_t enable);
 };
 
 extern const struct mlx5_glue *mlx5_glue;