FD.io VPP  v20.05-21-gb1500e9ff
Vector Packet Processing
output.c File Reference
+ Include dependency graph for output.c:

Go to the source code of this file.

Macros

#define RDMA_TX_RETRIES   5
 
#define RDMA_TXQ_DV_DSEG_SZ(txq)   (RDMA_MLX5_WQE_DS * RDMA_TXQ_DV_SQ_SZ(txq))
 
#define RDMA_TXQ_DV_DSEG2WQE(d)   (((d) + RDMA_MLX5_WQE_DS - 1) / RDMA_MLX5_WQE_DS)
 
#define RDMA_MLX5_WQE_DS_MAX   (1 << 5)
 

Functions

static_always_inline void rdma_device_output_free_mlx5 (vlib_main_t *vm, const vlib_node_runtime_t *node, rdma_txq_t *txq)
 
static_always_inline void rdma_device_output_tx_mlx5_doorbell (rdma_txq_t *txq, rdma_mlx5_wqe_t *last, const u16 tail, u32 sq_mask)
 
static_always_inline void rdma_mlx5_wqe_init (rdma_mlx5_wqe_t *wqe, const void *tmpl, vlib_buffer_t *b, const u16 tail)
 
static_always_inline u32 rdma_device_output_tx_mlx5_chained (vlib_main_t *vm, const vlib_node_runtime_t *node, const rdma_device_t *rd, rdma_txq_t *txq, u32 n_left_from, u32 n, u32 *bi, vlib_buffer_t **b, rdma_mlx5_wqe_t *wqe, u16 tail)
 
static_always_inline u32 rdma_device_output_tx_mlx5 (vlib_main_t *vm, const vlib_node_runtime_t *node, const rdma_device_t *rd, rdma_txq_t *txq, const u32 n_left_from, u32 *bi, vlib_buffer_t **b)
 
static_always_inline void rdma_device_output_free_ibverb (vlib_main_t *vm, const vlib_node_runtime_t *node, rdma_txq_t *txq)
 
static_always_inline u32 rdma_device_output_tx_ibverb (vlib_main_t *vm, const vlib_node_runtime_t *node, const rdma_device_t *rd, rdma_txq_t *txq, u32 n_left_from, u32 *bi, vlib_buffer_t **b)
 
static_always_inline void rdma_device_output_free (vlib_main_t *vm, const vlib_node_runtime_t *node, rdma_txq_t *txq, int is_mlx5dv)
 
static_always_inline u32 rdma_device_output_tx_try (vlib_main_t *vm, const vlib_node_runtime_t *node, const rdma_device_t *rd, rdma_txq_t *txq, u32 n_left_from, u32 *bi, int is_mlx5dv)
 
static_always_inline uword rdma_device_output_tx (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame, rdma_device_t *rd, int is_mlx5dv)
 
VNET_DEVICE_CLASS_TX_FN() rdma_device_class (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 

Macro Definition Documentation

◆ RDMA_MLX5_WQE_DS_MAX

#define RDMA_MLX5_WQE_DS_MAX   (1 << 5)

◆ RDMA_TX_RETRIES

#define RDMA_TX_RETRIES   5

Definition at line 26 of file output.c.

◆ RDMA_TXQ_DV_DSEG2WQE

#define RDMA_TXQ_DV_DSEG2WQE (   d)    (((d) + RDMA_MLX5_WQE_DS - 1) / RDMA_MLX5_WQE_DS)

Definition at line 29 of file output.c.

◆ RDMA_TXQ_DV_DSEG_SZ

#define RDMA_TXQ_DV_DSEG_SZ (   txq)    (RDMA_MLX5_WQE_DS * RDMA_TXQ_DV_SQ_SZ(txq))

Definition at line 28 of file output.c.

Function Documentation

◆ rdma_device_class()

VNET_DEVICE_CLASS_TX_FN() rdma_device_class ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame 
)

Definition at line 565 of file output.c.

+ Here is the call graph for this function:

◆ rdma_device_output_free()

static_always_inline void rdma_device_output_free ( vlib_main_t vm,
const vlib_node_runtime_t node,
rdma_txq_t txq,
int  is_mlx5dv 
)

Definition at line 486 of file output.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ rdma_device_output_free_ibverb()

static_always_inline void rdma_device_output_free_ibverb ( vlib_main_t vm,
const vlib_node_runtime_t node,
rdma_txq_t txq 
)

Definition at line 354 of file output.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ rdma_device_output_free_mlx5()

static_always_inline void rdma_device_output_free_mlx5 ( vlib_main_t vm,
const vlib_node_runtime_t node,
rdma_txq_t txq 
)

Definition at line 36 of file output.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ rdma_device_output_tx()

static_always_inline uword rdma_device_output_tx ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame,
rdma_device_t rd,
int  is_mlx5dv 
)

Definition at line 524 of file output.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ rdma_device_output_tx_ibverb()

static_always_inline u32 rdma_device_output_tx_ibverb ( vlib_main_t vm,
const vlib_node_runtime_t node,
const rdma_device_t rd,
rdma_txq_t txq,
u32  n_left_from,
u32 bi,
vlib_buffer_t **  b 
)

Definition at line 387 of file output.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ rdma_device_output_tx_mlx5()

static_always_inline u32 rdma_device_output_tx_mlx5 ( vlib_main_t vm,
const vlib_node_runtime_t node,
const rdma_device_t rd,
rdma_txq_t txq,
const u32  n_left_from,
u32 bi,
vlib_buffer_t **  b 
)

Definition at line 275 of file output.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ rdma_device_output_tx_mlx5_chained()

static_always_inline u32 rdma_device_output_tx_mlx5_chained ( vlib_main_t vm,
const vlib_node_runtime_t node,
const rdma_device_t rd,
rdma_txq_t txq,
u32  n_left_from,
u32  n,
u32 bi,
vlib_buffer_t **  b,
rdma_mlx5_wqe_t wqe,
u16  tail 
)

Definition at line 146 of file output.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ rdma_device_output_tx_mlx5_doorbell()

static_always_inline void rdma_device_output_tx_mlx5_doorbell ( rdma_txq_t txq,
rdma_mlx5_wqe_t last,
const u16  tail,
u32  sq_mask 
)

Definition at line 90 of file output.c.

+ Here is the caller graph for this function:

◆ rdma_device_output_tx_try()

static_always_inline u32 rdma_device_output_tx_try ( vlib_main_t vm,
const vlib_node_runtime_t node,
const rdma_device_t rd,
rdma_txq_t txq,
u32  n_left_from,
u32 bi,
int  is_mlx5dv 
)

Definition at line 496 of file output.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ rdma_mlx5_wqe_init()

static_always_inline void rdma_mlx5_wqe_init ( rdma_mlx5_wqe_t wqe,
const void *  tmpl,
vlib_buffer_t b,
const u16  tail 
)

Definition at line 107 of file output.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function: