/** * Copyright (C) Mellanox Technologies Ltd. 2001-2014. ALL RIGHTS RESERVED. * * See file LICENSE for terms. */ #ifndef UD_MLX5_H #define UD_MLX5_H #include "ud_mlx5_common.h" #include #include typedef struct { uct_ud_ep_t super; uct_ib_mlx5_base_av_t av; uint8_t is_global; struct mlx5_grh_av grh_av; } uct_ud_mlx5_ep_t; typedef struct { uct_ud_iface_config_t super; uct_ib_mlx5_iface_config_t mlx5_common; uct_ud_mlx5_iface_common_config_t ud_mlx5_common; } uct_ud_mlx5_iface_config_t; typedef struct { uct_ud_iface_t super; struct { uct_ib_mlx5_txwq_t wq; } tx; struct { uct_ib_mlx5_rxwq_t wq; } rx; uct_ib_mlx5_cq_t cq[UCT_IB_DIR_NUM]; uct_ud_mlx5_iface_common_t ud_mlx5_common; } uct_ud_mlx5_iface_t; static inline unsigned uct_ud_mlx5_tx_moderation(uct_ud_mlx5_iface_t *iface) { if (iface->super.tx.unsignaled >= UCT_UD_TX_MODERATION) { iface->super.tx.unsignaled = 0; return MLX5_WQE_CTRL_CQ_UPDATE; } iface->super.tx.unsignaled++; return 0; } #endif