|
@@ -52,6 +52,7 @@
|
|
#include <linux/seq_file.h>
|
|
#include <linux/seq_file.h>
|
|
#include <rdma/rdma_vt.h>
|
|
#include <rdma/rdma_vt.h>
|
|
#include <rdma/rdmavt_qp.h>
|
|
#include <rdma/rdmavt_qp.h>
|
|
|
|
+#include <rdma/ib_verbs.h>
|
|
|
|
|
|
#include "hfi.h"
|
|
#include "hfi.h"
|
|
#include "qp.h"
|
|
#include "qp.h"
|
|
@@ -115,6 +116,49 @@ static const u16 credit_table[31] = {
|
|
32768 /* 1E */
|
|
32768 /* 1E */
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+const struct rvt_operation_params hfi1_post_parms[RVT_OPERATION_MAX] = {
|
|
|
|
+[IB_WR_RDMA_WRITE] = {
|
|
|
|
+ .length = sizeof(struct ib_rdma_wr),
|
|
|
|
+ .qpt_support = BIT(IB_QPT_UC) | BIT(IB_QPT_RC),
|
|
|
|
+},
|
|
|
|
+
|
|
|
|
+[IB_WR_RDMA_READ] = {
|
|
|
|
+ .length = sizeof(struct ib_rdma_wr),
|
|
|
|
+ .qpt_support = BIT(IB_QPT_RC),
|
|
|
|
+ .flags = RVT_OPERATION_ATOMIC,
|
|
|
|
+},
|
|
|
|
+
|
|
|
|
+[IB_WR_ATOMIC_CMP_AND_SWP] = {
|
|
|
|
+ .length = sizeof(struct ib_atomic_wr),
|
|
|
|
+ .qpt_support = BIT(IB_QPT_RC),
|
|
|
|
+ .flags = RVT_OPERATION_ATOMIC | RVT_OPERATION_ATOMIC_SGE,
|
|
|
|
+},
|
|
|
|
+
|
|
|
|
+[IB_WR_ATOMIC_FETCH_AND_ADD] = {
|
|
|
|
+ .length = sizeof(struct ib_atomic_wr),
|
|
|
|
+ .qpt_support = BIT(IB_QPT_RC),
|
|
|
|
+ .flags = RVT_OPERATION_ATOMIC | RVT_OPERATION_ATOMIC_SGE,
|
|
|
|
+},
|
|
|
|
+
|
|
|
|
+[IB_WR_RDMA_WRITE_WITH_IMM] = {
|
|
|
|
+ .length = sizeof(struct ib_rdma_wr),
|
|
|
|
+ .qpt_support = BIT(IB_QPT_UC) | BIT(IB_QPT_RC),
|
|
|
|
+},
|
|
|
|
+
|
|
|
|
+[IB_WR_SEND] = {
|
|
|
|
+ .length = sizeof(struct ib_send_wr),
|
|
|
|
+ .qpt_support = BIT(IB_QPT_UD) | BIT(IB_QPT_SMI) | BIT(IB_QPT_GSI) |
|
|
|
|
+ BIT(IB_QPT_UC) | BIT(IB_QPT_RC),
|
|
|
|
+},
|
|
|
|
+
|
|
|
|
+[IB_WR_SEND_WITH_IMM] = {
|
|
|
|
+ .length = sizeof(struct ib_send_wr),
|
|
|
|
+ .qpt_support = BIT(IB_QPT_UD) | BIT(IB_QPT_SMI) | BIT(IB_QPT_GSI) |
|
|
|
|
+ BIT(IB_QPT_UC) | BIT(IB_QPT_RC),
|
|
|
|
+},
|
|
|
|
+
|
|
|
|
+};
|
|
|
|
+
|
|
static void flush_tx_list(struct rvt_qp *qp)
|
|
static void flush_tx_list(struct rvt_qp *qp)
|
|
{
|
|
{
|
|
struct hfi1_qp_priv *priv = qp->priv;
|
|
struct hfi1_qp_priv *priv = qp->priv;
|