|
@@ -106,6 +106,49 @@ static u32 credit_table[31] = {
|
|
32768 /* 1E */
|
|
32768 /* 1E */
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+const struct rvt_operation_params qib_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 get_map_page(struct rvt_qpn_table *qpt, struct rvt_qpn_map *map,
|
|
static void get_map_page(struct rvt_qpn_table *qpt, struct rvt_qpn_map *map,
|
|
gfp_t gfp)
|
|
gfp_t gfp)
|
|
{
|
|
{
|