Add code to initialize new struct members in ib_device_attr as place holders. Signed-off-by: Bob Pearson <rpearson@xxxxxxx> --- drivers/infiniband/sw/rxe/rxe.c | 101 ++++++++++++++++++-------- drivers/infiniband/sw/rxe/rxe_verbs.c | 7 +- 2 files changed, 75 insertions(+), 33 deletions(-) diff --git a/drivers/infiniband/sw/rxe/rxe.c b/drivers/infiniband/sw/rxe/rxe.c index fab291245366..8d2be78e72ef 100644 --- a/drivers/infiniband/sw/rxe/rxe.c +++ b/drivers/infiniband/sw/rxe/rxe.c @@ -38,40 +38,77 @@ void rxe_dealloc(struct ib_device *ib_dev) /* initialize rxe device parameters */ static void rxe_init_device_param(struct rxe_dev *rxe) { - rxe->max_inline_data = RXE_MAX_INLINE_DATA; - - rxe->attr.vendor_id = RXE_VENDOR_ID; - rxe->attr.max_mr_size = RXE_MAX_MR_SIZE; - rxe->attr.page_size_cap = RXE_PAGE_SIZE_CAP; - rxe->attr.max_qp = RXE_MAX_QP; - rxe->attr.max_qp_wr = RXE_MAX_QP_WR; - rxe->attr.device_cap_flags = RXE_DEVICE_CAP_FLAGS; - rxe->attr.max_send_sge = RXE_MAX_SGE; - rxe->attr.max_recv_sge = RXE_MAX_SGE; - rxe->attr.max_sge_rd = RXE_MAX_SGE_RD; - rxe->attr.max_cq = RXE_MAX_CQ; - rxe->attr.max_cqe = (1 << RXE_MAX_LOG_CQE) - 1; - rxe->attr.max_mr = RXE_MAX_MR; - rxe->attr.max_mw = RXE_MAX_MW; - rxe->attr.max_pd = RXE_MAX_PD; - rxe->attr.max_qp_rd_atom = RXE_MAX_QP_RD_ATOM; - rxe->attr.max_res_rd_atom = RXE_MAX_RES_RD_ATOM; - rxe->attr.max_qp_init_rd_atom = RXE_MAX_QP_INIT_RD_ATOM; - rxe->attr.atomic_cap = IB_ATOMIC_HCA; - rxe->attr.max_mcast_grp = RXE_MAX_MCAST_GRP; - rxe->attr.max_mcast_qp_attach = RXE_MAX_MCAST_QP_ATTACH; - rxe->attr.max_total_mcast_qp_attach = RXE_MAX_TOT_MCAST_QP_ATTACH; - rxe->attr.max_ah = RXE_MAX_AH; - rxe->attr.max_srq = RXE_MAX_SRQ; - rxe->attr.max_srq_wr = RXE_MAX_SRQ_WR; - rxe->attr.max_srq_sge = RXE_MAX_SRQ_SGE; - rxe->attr.max_fast_reg_page_list_len = RXE_MAX_FMR_PAGE_LIST_LEN; - rxe->attr.max_pkeys = RXE_MAX_PKEYS; - rxe->attr.local_ca_ack_delay = RXE_LOCAL_CA_ACK_DELAY; - addrconf_addr_eui48((unsigned char *)&rxe->attr.sys_image_guid, - rxe->ndev->dev_addr); + struct ib_device_attr *a = &rxe->attr; + rxe->max_inline_data = RXE_MAX_INLINE_DATA; rxe->max_ucontext = RXE_MAX_UCONTEXT; + + a->atomic_cap = IB_ATOMIC_HCA; + a->cq_caps.max_cq_moderation_count = 0; + a->cq_caps.max_cq_moderation_period = 0; + a->device_cap_flags = RXE_DEVICE_CAP_FLAGS; + a->fw_ver = 0; + a->hca_core_clock = 0; + a->hw_ver = 0; + a->local_ca_ack_delay = RXE_LOCAL_CA_ACK_DELAY; + a->masked_atomic_cap = 0; + a->max_ah = RXE_MAX_AH; + a->max_cqe = (1 << RXE_MAX_LOG_CQE) - 1; + a->max_cq = RXE_MAX_CQ; + a->max_dm_size = 0; + a->max_ee_init_rd_atom = 0; + a->max_ee = 0; + a->max_ee_rd_atom = 0; + a->max_fast_reg_page_list_len = RXE_MAX_FMR_PAGE_LIST_LEN; + a->max_mcast_grp = RXE_MAX_MCAST_GRP; + a->max_mcast_qp_attach = RXE_MAX_MCAST_QP_ATTACH; + a->max_mr = RXE_MAX_MR; + a->max_mr_size = RXE_MAX_MR_SIZE; + a->max_mw = RXE_MAX_MW; + a->max_pd = RXE_MAX_PD; + a->max_pi_fast_reg_page_list_len = 0; + a->max_pkeys = RXE_MAX_PKEYS; + a->max_qp_init_rd_atom = RXE_MAX_QP_INIT_RD_ATOM; + a->max_qp_rd_atom = RXE_MAX_QP_RD_ATOM; + a->max_qp = RXE_MAX_QP; + a->max_qp_wr = RXE_MAX_QP_WR; + a->max_raw_ethy_qp = 0; + a->max_raw_ipv6_qp = 0; + a->max_rdd = 0; + a->max_recv_sge = RXE_MAX_SGE; + a->max_res_rd_atom = RXE_MAX_RES_RD_ATOM; + a->max_send_sge = RXE_MAX_SGE; + a->max_sge_rd = RXE_MAX_SGE_RD; + a->max_sgl_rd = 0; + a->max_srq = RXE_MAX_SRQ; + a->max_srq_sge = RXE_MAX_SRQ_SGE; + a->max_srq_wr = RXE_MAX_SRQ_WR; + a->max_total_mcast_qp_attach = RXE_MAX_TOT_MCAST_QP_ATTACH; + a->max_wq_type_rq = 0; + a->odp_caps.general_caps = 0; + a->odp_caps.per_transport_caps.rc_odp_caps = 0; + a->odp_caps.per_transport_caps.uc_odp_caps = 0; + a->odp_caps.per_transport_caps.ud_odp_caps = 0; + a->odp_caps.per_transport_caps.xrc_odp_caps = 0; + a->page_size_cap = RXE_PAGE_SIZE_CAP; + a->raw_packet_caps = 0; + a->rss_caps.supported_qpts = 0; + a->rss_caps.max_rwq_indirection_tables = 0; + a->rss_caps.max_rwq_indirection_table_size = 0; + a->sig_guard_cap = 0; + a->sig_prot_cap = 0; + a->sys_image_guid = 0; + a->timestamp_mask = 0; + a->tm_caps.max_rndv_hdr_size = 0; + a->tm_caps.max_num_tags = 0; + a->tm_caps.flags = 0; + a->tm_caps.max_ops = 0; + a->tm_caps.max_sge = 0; + a->vendor_id = RXE_VENDOR_ID; + a->vendor_part_id = 0; + + addrconf_addr_eui48((unsigned char *)&a->sys_image_guid, + rxe->ndev->dev_addr); } /* initialize port attributes */ diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.c b/drivers/infiniband/sw/rxe/rxe_verbs.c index 21582507ed32..a77f2e0ef68f 100644 --- a/drivers/infiniband/sw/rxe/rxe_verbs.c +++ b/drivers/infiniband/sw/rxe/rxe_verbs.c @@ -1149,7 +1149,8 @@ int rxe_register_device(struct rxe_dev *rxe, const char *ibdev_name) dma_coerce_mask_and_coherent(&dev->dev, dma_get_required_mask(&dev->dev)); - dev->uverbs_cmd_mask = BIT_ULL(IB_USER_VERBS_CMD_GET_CONTEXT) + dev->uverbs_cmd_mask = + BIT_ULL(IB_USER_VERBS_CMD_GET_CONTEXT) | BIT_ULL(IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL) | BIT_ULL(IB_USER_VERBS_CMD_QUERY_DEVICE) | BIT_ULL(IB_USER_VERBS_CMD_QUERY_PORT) @@ -1184,6 +1185,10 @@ int rxe_register_device(struct rxe_dev *rxe, const char *ibdev_name) | BIT_ULL(IB_USER_VERBS_CMD_DEALLOC_MW) ; + dev->uverbs_ex_cmd_mask = + BIT_ULL(IB_USER_VERBS_EX_CMD_QUERY_DEVICE) + ; + ib_set_device_ops(dev, &rxe_dev_ops); err = ib_device_set_netdev(&rxe->ib_dev, rxe->ndev, 1); if (err) -- 2.25.1