mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.0 KiB
76 lines
2.0 KiB
/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ |
|
/* |
|
* Copyright (c) 2020, Mellanox Technologies inc. All rights reserved. |
|
*/ |
|
|
|
#ifndef _MLX5_IB_WR_H |
|
#define _MLX5_IB_WR_H |
|
|
|
#include "mlx5_ib.h" |
|
|
|
enum { |
|
MLX5_IB_SQ_UMR_INLINE_THRESHOLD = 64, |
|
}; |
|
|
|
struct mlx5_wqe_eth_pad { |
|
u8 rsvd0[16]; |
|
}; |
|
|
|
|
|
/* get_sq_edge - Get the next nearby edge. |
|
* |
|
* An 'edge' is defined as the first following address after the end |
|
* of the fragment or the SQ. Accordingly, during the WQE construction |
|
* which repetitively increases the pointer to write the next data, it |
|
* simply should check if it gets to an edge. |
|
* |
|
* @sq - SQ buffer. |
|
* @idx - Stride index in the SQ buffer. |
|
* |
|
* Return: |
|
* The new edge. |
|
*/ |
|
static inline void *get_sq_edge(struct mlx5_ib_wq *sq, u32 idx) |
|
{ |
|
void *fragment_end; |
|
|
|
fragment_end = mlx5_frag_buf_get_wqe |
|
(&sq->fbc, |
|
mlx5_frag_buf_get_idx_last_contig_stride(&sq->fbc, idx)); |
|
|
|
return fragment_end + MLX5_SEND_WQE_BB; |
|
} |
|
|
|
int mlx5_ib_post_send(struct ib_qp *ibqp, const struct ib_send_wr *wr, |
|
const struct ib_send_wr **bad_wr, bool drain); |
|
int mlx5_ib_post_recv(struct ib_qp *ibqp, const struct ib_recv_wr *wr, |
|
const struct ib_recv_wr **bad_wr, bool drain); |
|
|
|
static inline int mlx5_ib_post_send_nodrain(struct ib_qp *ibqp, |
|
const struct ib_send_wr *wr, |
|
const struct ib_send_wr **bad_wr) |
|
{ |
|
return mlx5_ib_post_send(ibqp, wr, bad_wr, false); |
|
} |
|
|
|
static inline int mlx5_ib_post_send_drain(struct ib_qp *ibqp, |
|
const struct ib_send_wr *wr, |
|
const struct ib_send_wr **bad_wr) |
|
{ |
|
return mlx5_ib_post_send(ibqp, wr, bad_wr, true); |
|
} |
|
|
|
static inline int mlx5_ib_post_recv_nodrain(struct ib_qp *ibqp, |
|
const struct ib_recv_wr *wr, |
|
const struct ib_recv_wr **bad_wr) |
|
{ |
|
return mlx5_ib_post_recv(ibqp, wr, bad_wr, false); |
|
} |
|
|
|
static inline int mlx5_ib_post_recv_drain(struct ib_qp *ibqp, |
|
const struct ib_recv_wr *wr, |
|
const struct ib_recv_wr **bad_wr) |
|
{ |
|
return mlx5_ib_post_recv(ibqp, wr, bad_wr, true); |
|
} |
|
#endif /* _MLX5_IB_WR_H */
|
|
|