/** * Copyright (C) Mellanox Technologies Ltd. 2019. ALL RIGHTS RESERVED. * * See file LICENSE for terms. */ #include extern "C" { #include } #include #include #include class test_devx : public uct_test { public: entity* m_e; void init() { uct_test::init(); m_e = create_entity(0); m_entities.push_back(m_e); if (!(md()->super.dev.flags & UCT_IB_DEVICE_FLAG_MLX5_PRM && md()->flags & UCT_IB_MLX5_MD_FLAG_DEVX)) { std::stringstream ss; ss << "DEVX is not supported by " << GetParam(); UCS_TEST_SKIP_R(ss.str()); } } uct_ib_mlx5_md_t *md() { return ucs_derived_of(m_e->md(), uct_ib_mlx5_md_t); } uct_priv_worker_t *worker() { return ucs_derived_of(m_e->worker(), uct_priv_worker_t); } }; UCS_TEST_P(test_devx, dbrec) { uct_ib_mlx5_dbrec_t *dbrec; dbrec = (uct_ib_mlx5_dbrec_t *)ucs_mpool_get_inline(&md()->dbrec_pool); ASSERT_FALSE(dbrec == NULL); ucs_mpool_put_inline(dbrec); } UCS_TEST_P(test_devx, uar) { uct_ib_mlx5_txwq_t txwq; ucs_status_t status; status = uct_ib_mlx5_txwq_init_devx(worker(), md(), &txwq, UCT_IB_MLX5_MMIO_MODE_BF_POST); ASSERT_UCS_OK(status); ASSERT_TRUE(txwq.super.type == UCT_IB_MLX5_OBJ_TYPE_DEVX); uct_ib_mlx5_txwq_cleanup(&txwq); } UCT_INSTANTIATE_IB_TEST_CASE(test_devx);