Lines Matching refs:cmd

279 	struct ib_uverbs_get_context cmd;  in ib_uverbs_get_context()  local
284 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_get_context()
372 struct ib_uverbs_query_device cmd; in ib_uverbs_query_device() local
381 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_query_device()
393 struct ib_uverbs_query_port cmd; in ib_uverbs_query_port() local
405 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_query_port()
409 ret = ib_query_port(ib_dev, cmd.port_num, &attr); in ib_uverbs_query_port()
414 copy_port_attr_to_resp(&attr, &resp, ib_dev, cmd.port_num); in ib_uverbs_query_port()
422 struct ib_uverbs_alloc_pd cmd; in ib_uverbs_alloc_pd() local
428 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_alloc_pd()
470 struct ib_uverbs_dealloc_pd cmd; in ib_uverbs_dealloc_pd() local
473 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_dealloc_pd()
477 return uobj_perform_destroy(UVERBS_OBJECT_PD, cmd.pd_handle, attrs); in ib_uverbs_dealloc_pd()
569 struct ib_uverbs_open_xrcd cmd; in ib_uverbs_open_xrcd() local
578 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_open_xrcd()
584 if (cmd.fd != -1) { in ib_uverbs_open_xrcd()
586 f = fdget(cmd.fd); in ib_uverbs_open_xrcd()
594 if (!xrcd && !(cmd.oflags & O_CREAT)) { in ib_uverbs_open_xrcd()
600 if (xrcd && cmd.oflags & O_EXCL) { in ib_uverbs_open_xrcd()
661 struct ib_uverbs_close_xrcd cmd; in ib_uverbs_close_xrcd() local
664 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_close_xrcd()
668 return uobj_perform_destroy(UVERBS_OBJECT_XRCD, cmd.xrcd_handle, attrs); in ib_uverbs_close_xrcd()
698 struct ib_uverbs_reg_mr cmd; in ib_uverbs_reg_mr() local
705 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_reg_mr()
709 if ((cmd.start & ~PAGE_MASK) != (cmd.hca_va & ~PAGE_MASK)) in ib_uverbs_reg_mr()
716 ret = ib_check_mr_access(ib_dev, cmd.access_flags); in ib_uverbs_reg_mr()
720 pd = uobj_get_obj_read(pd, UVERBS_OBJECT_PD, cmd.pd_handle, attrs); in ib_uverbs_reg_mr()
726 mr = pd->device->ops.reg_user_mr(pd, cmd.start, cmd.length, cmd.hca_va, in ib_uverbs_reg_mr()
727 cmd.access_flags, in ib_uverbs_reg_mr()
741 mr->iova = cmd.hca_va; in ib_uverbs_reg_mr()
742 mr->length = cmd.length; in ib_uverbs_reg_mr()
766 struct ib_uverbs_rereg_mr cmd; in ib_uverbs_rereg_mr() local
777 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_rereg_mr()
781 if (!cmd.flags) in ib_uverbs_rereg_mr()
784 if (cmd.flags & ~IB_MR_REREG_SUPPORTED) in ib_uverbs_rereg_mr()
787 if ((cmd.flags & IB_MR_REREG_TRANS) && in ib_uverbs_rereg_mr()
788 (cmd.start & ~PAGE_MASK) != (cmd.hca_va & ~PAGE_MASK)) in ib_uverbs_rereg_mr()
791 uobj = uobj_get_write(UVERBS_OBJECT_MR, cmd.mr_handle, attrs); in ib_uverbs_rereg_mr()
802 if (cmd.flags & IB_MR_REREG_ACCESS) { in ib_uverbs_rereg_mr()
803 ret = ib_check_mr_access(mr->device, cmd.access_flags); in ib_uverbs_rereg_mr()
809 if (cmd.flags & IB_MR_REREG_PD) { in ib_uverbs_rereg_mr()
810 new_pd = uobj_get_obj_read(pd, UVERBS_OBJECT_PD, cmd.pd_handle, in ib_uverbs_rereg_mr()
830 new_mr = ib_dev->ops.rereg_user_mr(mr, cmd.flags, cmd.start, cmd.length, in ib_uverbs_rereg_mr()
831 cmd.hca_va, cmd.access_flags, new_pd, in ib_uverbs_rereg_mr()
860 if (cmd.flags & IB_MR_REREG_PD) { in ib_uverbs_rereg_mr()
865 if (cmd.flags & IB_MR_REREG_TRANS) { in ib_uverbs_rereg_mr()
866 mr->iova = cmd.hca_va; in ib_uverbs_rereg_mr()
867 mr->length = cmd.length; in ib_uverbs_rereg_mr()
881 if (cmd.flags & IB_MR_REREG_PD) in ib_uverbs_rereg_mr()
893 struct ib_uverbs_dereg_mr cmd; in ib_uverbs_dereg_mr() local
896 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_dereg_mr()
900 return uobj_perform_destroy(UVERBS_OBJECT_MR, cmd.mr_handle, attrs); in ib_uverbs_dereg_mr()
905 struct ib_uverbs_alloc_mw cmd; in ib_uverbs_alloc_mw() local
913 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_alloc_mw()
921 pd = uobj_get_obj_read(pd, UVERBS_OBJECT_PD, cmd.pd_handle, attrs); in ib_uverbs_alloc_mw()
927 if (cmd.mw_type != IB_MW_TYPE_1 && cmd.mw_type != IB_MW_TYPE_2) { in ib_uverbs_alloc_mw()
941 mw->type = cmd.mw_type; in ib_uverbs_alloc_mw()
968 struct ib_uverbs_dealloc_mw cmd; in ib_uverbs_dealloc_mw() local
971 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_dealloc_mw()
975 return uobj_perform_destroy(UVERBS_OBJECT_MW, cmd.mw_handle, attrs); in ib_uverbs_dealloc_mw()
980 struct ib_uverbs_create_comp_channel cmd; in ib_uverbs_create_comp_channel() local
987 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_create_comp_channel()
1005 struct ib_uverbs_ex_create_cq *cmd) in create_cq() argument
1015 if (cmd->comp_vector >= attrs->ufile->device->num_comp_vectors) in create_cq()
1023 if (cmd->comp_channel >= 0) { in create_cq()
1024 ev_file = ib_uverbs_lookup_comp_file(cmd->comp_channel, attrs); in create_cq()
1031 obj->uevent.uobject.user_handle = cmd->user_handle; in create_cq()
1035 attr.cqe = cmd->cqe; in create_cq()
1036 attr.comp_vector = cmd->comp_vector; in create_cq()
1037 attr.flags = cmd->flags; in create_cq()
1083 struct ib_uverbs_create_cq cmd; in ib_uverbs_create_cq() local
1087 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_create_cq()
1092 cmd_ex.user_handle = cmd.user_handle; in ib_uverbs_create_cq()
1093 cmd_ex.cqe = cmd.cqe; in ib_uverbs_create_cq()
1094 cmd_ex.comp_vector = cmd.comp_vector; in ib_uverbs_create_cq()
1095 cmd_ex.comp_channel = cmd.comp_channel; in ib_uverbs_create_cq()
1102 struct ib_uverbs_ex_create_cq cmd; in ib_uverbs_ex_create_cq() local
1105 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_ex_create_cq()
1109 if (cmd.comp_mask) in ib_uverbs_ex_create_cq()
1112 if (cmd.reserved) in ib_uverbs_ex_create_cq()
1115 return create_cq(attrs, &cmd); in ib_uverbs_ex_create_cq()
1120 struct ib_uverbs_resize_cq cmd; in ib_uverbs_resize_cq() local
1125 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_resize_cq()
1129 cq = uobj_get_obj_read(cq, UVERBS_OBJECT_CQ, cmd.cq_handle, attrs); in ib_uverbs_resize_cq()
1133 ret = cq->device->ops.resize_cq(cq, cmd.cqe, &attrs->driver_udata); in ib_uverbs_resize_cq()
1179 struct ib_uverbs_poll_cq cmd; in ib_uverbs_poll_cq() local
1187 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_poll_cq()
1191 cq = uobj_get_obj_read(cq, UVERBS_OBJECT_CQ, cmd.cq_handle, attrs); in ib_uverbs_poll_cq()
1200 while (resp.count < cmd.ne) { in ib_uverbs_poll_cq()
1232 struct ib_uverbs_req_notify_cq cmd; in ib_uverbs_req_notify_cq() local
1236 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_req_notify_cq()
1240 cq = uobj_get_obj_read(cq, UVERBS_OBJECT_CQ, cmd.cq_handle, attrs); in ib_uverbs_req_notify_cq()
1244 ib_req_notify_cq(cq, cmd.solicited_only ? in ib_uverbs_req_notify_cq()
1254 struct ib_uverbs_destroy_cq cmd; in ib_uverbs_destroy_cq() local
1260 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_destroy_cq()
1264 uobj = uobj_get_destroy(UVERBS_OBJECT_CQ, cmd.cq_handle, attrs); in ib_uverbs_destroy_cq()
1279 struct ib_uverbs_ex_create_qp *cmd) in create_qp() argument
1296 switch (cmd->qp_type) { in create_qp()
1317 obj->uevent.uobject.user_handle = cmd->user_handle; in create_qp()
1320 if (cmd->comp_mask & IB_UVERBS_CREATE_QP_MASK_IND_TABLE) { in create_qp()
1323 cmd->rwq_ind_tbl_handle, attrs); in create_qp()
1332 if (ind_tbl && (cmd->max_recv_wr || cmd->max_recv_sge || cmd->is_srq)) { in create_qp()
1337 if (ind_tbl && !cmd->max_send_wr) in create_qp()
1340 if (cmd->qp_type == IB_QPT_XRC_TGT) { in create_qp()
1341 xrcd_uobj = uobj_get_read(UVERBS_OBJECT_XRCD, cmd->pd_handle, in create_qp()
1356 if (cmd->qp_type == IB_QPT_XRC_INI) { in create_qp()
1357 cmd->max_recv_wr = 0; in create_qp()
1358 cmd->max_recv_sge = 0; in create_qp()
1360 if (cmd->is_srq) { in create_qp()
1362 cmd->srq_handle, attrs); in create_qp()
1370 if (cmd->recv_cq_handle != cmd->send_cq_handle) { in create_qp()
1373 cmd->recv_cq_handle, attrs); in create_qp()
1384 cmd->send_cq_handle, attrs); in create_qp()
1385 if (!ind_tbl && cmd->qp_type != IB_QPT_XRC_INI) in create_qp()
1387 pd = uobj_get_obj_read(pd, UVERBS_OBJECT_PD, cmd->pd_handle, in create_qp()
1402 attr.sq_sig_type = cmd->sq_sig_all ? IB_SIGNAL_ALL_WR : in create_qp()
1404 attr.qp_type = cmd->qp_type; in create_qp()
1406 attr.cap.max_send_wr = cmd->max_send_wr; in create_qp()
1407 attr.cap.max_recv_wr = cmd->max_recv_wr; in create_qp()
1408 attr.cap.max_send_sge = cmd->max_send_sge; in create_qp()
1409 attr.cap.max_recv_sge = cmd->max_recv_sge; in create_qp()
1410 attr.cap.max_inline_data = cmd->max_inline_data; in create_qp()
1415 attr.create_flags = cmd->create_flags; in create_qp()
1434 attr.source_qpn = cmd->source_qpn; in create_qp()
1505 struct ib_uverbs_create_qp cmd; in ib_uverbs_create_qp() local
1509 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_create_qp()
1514 cmd_ex.user_handle = cmd.user_handle; in ib_uverbs_create_qp()
1515 cmd_ex.pd_handle = cmd.pd_handle; in ib_uverbs_create_qp()
1516 cmd_ex.send_cq_handle = cmd.send_cq_handle; in ib_uverbs_create_qp()
1517 cmd_ex.recv_cq_handle = cmd.recv_cq_handle; in ib_uverbs_create_qp()
1518 cmd_ex.srq_handle = cmd.srq_handle; in ib_uverbs_create_qp()
1519 cmd_ex.max_send_wr = cmd.max_send_wr; in ib_uverbs_create_qp()
1520 cmd_ex.max_recv_wr = cmd.max_recv_wr; in ib_uverbs_create_qp()
1521 cmd_ex.max_send_sge = cmd.max_send_sge; in ib_uverbs_create_qp()
1522 cmd_ex.max_recv_sge = cmd.max_recv_sge; in ib_uverbs_create_qp()
1523 cmd_ex.max_inline_data = cmd.max_inline_data; in ib_uverbs_create_qp()
1524 cmd_ex.sq_sig_all = cmd.sq_sig_all; in ib_uverbs_create_qp()
1525 cmd_ex.qp_type = cmd.qp_type; in ib_uverbs_create_qp()
1526 cmd_ex.is_srq = cmd.is_srq; in ib_uverbs_create_qp()
1533 struct ib_uverbs_ex_create_qp cmd; in ib_uverbs_ex_create_qp() local
1536 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_ex_create_qp()
1540 if (cmd.comp_mask & ~IB_UVERBS_CREATE_QP_SUP_COMP_MASK) in ib_uverbs_ex_create_qp()
1543 if (cmd.reserved) in ib_uverbs_ex_create_qp()
1546 return create_qp(attrs, &cmd); in ib_uverbs_ex_create_qp()
1552 struct ib_uverbs_open_qp cmd; in ib_uverbs_open_qp() local
1561 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_open_qp()
1570 xrcd_uobj = uobj_get_read(UVERBS_OBJECT_XRCD, cmd.pd_handle, attrs); in ib_uverbs_open_qp()
1583 attr.qp_num = cmd.qpn; in ib_uverbs_open_qp()
1584 attr.qp_type = cmd.qp_type; in ib_uverbs_open_qp()
1596 obj->uevent.uobject.user_handle = cmd.user_handle; in ib_uverbs_open_qp()
1639 struct ib_uverbs_query_qp cmd; in ib_uverbs_query_qp() local
1646 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_query_qp()
1657 qp = uobj_get_obj_read(qp, UVERBS_OBJECT_QP, cmd.qp_handle, attrs); in ib_uverbs_query_qp()
1663 ret = ib_query_qp(qp, attr, cmd.attr_mask, init_attr); in ib_uverbs_query_qp()
1752 struct ib_uverbs_ex_modify_qp *cmd) in modify_qp() argument
1762 qp = uobj_get_obj_read(qp, UVERBS_OBJECT_QP, cmd->base.qp_handle, in modify_qp()
1769 if ((cmd->base.attr_mask & IB_QP_PORT) && in modify_qp()
1770 !rdma_is_port_valid(qp->device, cmd->base.port_num)) { in modify_qp()
1775 if ((cmd->base.attr_mask & IB_QP_AV)) { in modify_qp()
1776 if (!rdma_is_port_valid(qp->device, cmd->base.dest.port_num)) { in modify_qp()
1781 if (cmd->base.attr_mask & IB_QP_STATE && in modify_qp()
1782 cmd->base.qp_state == IB_QPS_RTR) { in modify_qp()
1797 if (cmd->base.dest.port_num != qp->real_qp->port) { in modify_qp()
1815 if (((cmd->base.attr_mask & (IB_QP_AV | IB_QP_PORT)) in modify_qp()
1817 cmd->base.port_num != cmd->base.dest.port_num) { in modify_qp()
1821 if ((cmd->base.attr_mask & (IB_QP_AV | IB_QP_PORT)) in modify_qp()
1823 cmd->base.attr_mask |= IB_QP_PORT; in modify_qp()
1824 cmd->base.port_num = cmd->base.dest.port_num; in modify_qp()
1829 if ((cmd->base.attr_mask & IB_QP_ALT_PATH) && in modify_qp()
1830 (!rdma_is_port_valid(qp->device, cmd->base.alt_port_num) || in modify_qp()
1831 !rdma_is_port_valid(qp->device, cmd->base.alt_dest.port_num) || in modify_qp()
1832 cmd->base.alt_port_num != cmd->base.alt_dest.port_num)) { in modify_qp()
1837 if ((cmd->base.attr_mask & IB_QP_CUR_STATE && in modify_qp()
1838 cmd->base.cur_qp_state > IB_QPS_ERR) || in modify_qp()
1839 (cmd->base.attr_mask & IB_QP_STATE && in modify_qp()
1840 cmd->base.qp_state > IB_QPS_ERR)) { in modify_qp()
1845 if (cmd->base.attr_mask & IB_QP_STATE) in modify_qp()
1846 attr->qp_state = cmd->base.qp_state; in modify_qp()
1847 if (cmd->base.attr_mask & IB_QP_CUR_STATE) in modify_qp()
1848 attr->cur_qp_state = cmd->base.cur_qp_state; in modify_qp()
1849 if (cmd->base.attr_mask & IB_QP_PATH_MTU) in modify_qp()
1850 attr->path_mtu = cmd->base.path_mtu; in modify_qp()
1851 if (cmd->base.attr_mask & IB_QP_PATH_MIG_STATE) in modify_qp()
1852 attr->path_mig_state = cmd->base.path_mig_state; in modify_qp()
1853 if (cmd->base.attr_mask & IB_QP_QKEY) { in modify_qp()
1854 if (cmd->base.qkey & IB_QP_SET_QKEY && !capable(CAP_NET_RAW)) { in modify_qp()
1858 attr->qkey = cmd->base.qkey; in modify_qp()
1860 if (cmd->base.attr_mask & IB_QP_RQ_PSN) in modify_qp()
1861 attr->rq_psn = cmd->base.rq_psn; in modify_qp()
1862 if (cmd->base.attr_mask & IB_QP_SQ_PSN) in modify_qp()
1863 attr->sq_psn = cmd->base.sq_psn; in modify_qp()
1864 if (cmd->base.attr_mask & IB_QP_DEST_QPN) in modify_qp()
1865 attr->dest_qp_num = cmd->base.dest_qp_num; in modify_qp()
1866 if (cmd->base.attr_mask & IB_QP_ACCESS_FLAGS) in modify_qp()
1867 attr->qp_access_flags = cmd->base.qp_access_flags; in modify_qp()
1868 if (cmd->base.attr_mask & IB_QP_PKEY_INDEX) in modify_qp()
1869 attr->pkey_index = cmd->base.pkey_index; in modify_qp()
1870 if (cmd->base.attr_mask & IB_QP_EN_SQD_ASYNC_NOTIFY) in modify_qp()
1871 attr->en_sqd_async_notify = cmd->base.en_sqd_async_notify; in modify_qp()
1872 if (cmd->base.attr_mask & IB_QP_MAX_QP_RD_ATOMIC) in modify_qp()
1873 attr->max_rd_atomic = cmd->base.max_rd_atomic; in modify_qp()
1874 if (cmd->base.attr_mask & IB_QP_MAX_DEST_RD_ATOMIC) in modify_qp()
1875 attr->max_dest_rd_atomic = cmd->base.max_dest_rd_atomic; in modify_qp()
1876 if (cmd->base.attr_mask & IB_QP_MIN_RNR_TIMER) in modify_qp()
1877 attr->min_rnr_timer = cmd->base.min_rnr_timer; in modify_qp()
1878 if (cmd->base.attr_mask & IB_QP_PORT) in modify_qp()
1879 attr->port_num = cmd->base.port_num; in modify_qp()
1880 if (cmd->base.attr_mask & IB_QP_TIMEOUT) in modify_qp()
1881 attr->timeout = cmd->base.timeout; in modify_qp()
1882 if (cmd->base.attr_mask & IB_QP_RETRY_CNT) in modify_qp()
1883 attr->retry_cnt = cmd->base.retry_cnt; in modify_qp()
1884 if (cmd->base.attr_mask & IB_QP_RNR_RETRY) in modify_qp()
1885 attr->rnr_retry = cmd->base.rnr_retry; in modify_qp()
1886 if (cmd->base.attr_mask & IB_QP_ALT_PATH) { in modify_qp()
1887 attr->alt_port_num = cmd->base.alt_port_num; in modify_qp()
1888 attr->alt_timeout = cmd->base.alt_timeout; in modify_qp()
1889 attr->alt_pkey_index = cmd->base.alt_pkey_index; in modify_qp()
1891 if (cmd->base.attr_mask & IB_QP_RATE_LIMIT) in modify_qp()
1892 attr->rate_limit = cmd->rate_limit; in modify_qp()
1894 if (cmd->base.attr_mask & IB_QP_AV) in modify_qp()
1896 &cmd->base.dest); in modify_qp()
1898 if (cmd->base.attr_mask & IB_QP_ALT_PATH) in modify_qp()
1900 &cmd->base.alt_dest); in modify_qp()
1904 cmd->base.attr_mask), in modify_qp()
1918 struct ib_uverbs_ex_modify_qp cmd; in ib_uverbs_modify_qp() local
1921 ret = uverbs_request(attrs, &cmd.base, sizeof(cmd.base)); in ib_uverbs_modify_qp()
1925 if (cmd.base.attr_mask & ~IB_QP_ATTR_STANDARD_BITS) in ib_uverbs_modify_qp()
1928 return modify_qp(attrs, &cmd); in ib_uverbs_modify_qp()
1933 struct ib_uverbs_ex_modify_qp cmd; in ib_uverbs_ex_modify_qp() local
1939 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_ex_modify_qp()
1947 if (cmd.base.attr_mask & ~(IB_QP_ATTR_STANDARD_BITS | IB_QP_RATE_LIMIT)) in ib_uverbs_ex_modify_qp()
1950 ret = modify_qp(attrs, &cmd); in ib_uverbs_ex_modify_qp()
1959 struct ib_uverbs_destroy_qp cmd; in ib_uverbs_destroy_qp() local
1965 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_destroy_qp()
1969 uobj = uobj_get_destroy(UVERBS_OBJECT_QP, cmd.qp_handle, attrs); in ib_uverbs_destroy_qp()
1995 struct ib_uverbs_post_send cmd; in ib_uverbs_post_send() local
2009 ret = uverbs_request_start(attrs, &iter, &cmd, sizeof(cmd)); in ib_uverbs_post_send()
2012 wqes = uverbs_request_next_ptr(&iter, cmd.wqe_size * cmd.wr_count); in ib_uverbs_post_send()
2016 &iter, cmd.sge_count * sizeof(struct ib_uverbs_sge)); in ib_uverbs_post_send()
2023 user_wr = kmalloc(cmd.wqe_size, GFP_KERNEL); in ib_uverbs_post_send()
2027 qp = uobj_get_obj_read(qp, UVERBS_OBJECT_QP, cmd.qp_handle, attrs); in ib_uverbs_post_send()
2036 for (i = 0; i < cmd.wr_count; ++i) { in ib_uverbs_post_send()
2037 if (copy_from_user(user_wr, wqes + i * cmd.wqe_size, in ib_uverbs_post_send()
2038 cmd.wqe_size)) { in ib_uverbs_post_send()
2043 if (user_wr->num_sge + sg_ind > cmd.sge_count) { in ib_uverbs_post_send()
2287 struct ib_uverbs_post_recv cmd; in ib_uverbs_post_recv() local
2295 ret = uverbs_request_start(attrs, &iter, &cmd, sizeof(cmd)); in ib_uverbs_post_recv()
2299 wr = ib_uverbs_unmarshall_recv(&iter, cmd.wr_count, cmd.wqe_size, in ib_uverbs_post_recv()
2300 cmd.sge_count); in ib_uverbs_post_recv()
2304 qp = uobj_get_obj_read(qp, UVERBS_OBJECT_QP, cmd.qp_handle, attrs); in ib_uverbs_post_recv()
2338 struct ib_uverbs_post_srq_recv cmd; in ib_uverbs_post_srq_recv() local
2346 ret = uverbs_request_start(attrs, &iter, &cmd, sizeof(cmd)); in ib_uverbs_post_srq_recv()
2350 wr = ib_uverbs_unmarshall_recv(&iter, cmd.wr_count, cmd.wqe_size, in ib_uverbs_post_srq_recv()
2351 cmd.sge_count); in ib_uverbs_post_srq_recv()
2355 srq = uobj_get_obj_read(srq, UVERBS_OBJECT_SRQ, cmd.srq_handle, attrs); in ib_uverbs_post_srq_recv()
2390 struct ib_uverbs_create_ah cmd; in ib_uverbs_create_ah() local
2399 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_create_ah()
2407 if (!rdma_is_port_valid(ib_dev, cmd.attr.port_num)) { in ib_uverbs_create_ah()
2412 pd = uobj_get_obj_read(pd, UVERBS_OBJECT_PD, cmd.pd_handle, attrs); in ib_uverbs_create_ah()
2418 attr.type = rdma_ah_find_type(ib_dev, cmd.attr.port_num); in ib_uverbs_create_ah()
2420 rdma_ah_set_dlid(&attr, cmd.attr.dlid); in ib_uverbs_create_ah()
2421 rdma_ah_set_sl(&attr, cmd.attr.sl); in ib_uverbs_create_ah()
2422 rdma_ah_set_path_bits(&attr, cmd.attr.src_path_bits); in ib_uverbs_create_ah()
2423 rdma_ah_set_static_rate(&attr, cmd.attr.static_rate); in ib_uverbs_create_ah()
2424 rdma_ah_set_port_num(&attr, cmd.attr.port_num); in ib_uverbs_create_ah()
2426 if (cmd.attr.is_global) { in ib_uverbs_create_ah()
2427 rdma_ah_set_grh(&attr, NULL, cmd.attr.grh.flow_label, in ib_uverbs_create_ah()
2428 cmd.attr.grh.sgid_index, in ib_uverbs_create_ah()
2429 cmd.attr.grh.hop_limit, in ib_uverbs_create_ah()
2430 cmd.attr.grh.traffic_class); in ib_uverbs_create_ah()
2431 rdma_ah_set_dgid_raw(&attr, cmd.attr.grh.dgid); in ib_uverbs_create_ah()
2443 uobj->user_handle = cmd.user_handle; in ib_uverbs_create_ah()
2460 struct ib_uverbs_destroy_ah cmd; in ib_uverbs_destroy_ah() local
2463 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_destroy_ah()
2467 return uobj_perform_destroy(UVERBS_OBJECT_AH, cmd.ah_handle, attrs); in ib_uverbs_destroy_ah()
2472 struct ib_uverbs_attach_mcast cmd; in ib_uverbs_attach_mcast() local
2478 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_attach_mcast()
2482 qp = uobj_get_obj_read(qp, UVERBS_OBJECT_QP, cmd.qp_handle, attrs); in ib_uverbs_attach_mcast()
2490 if (cmd.mlid == mcast->lid && in ib_uverbs_attach_mcast()
2491 !memcmp(cmd.gid, mcast->gid.raw, sizeof mcast->gid.raw)) { in ib_uverbs_attach_mcast()
2502 mcast->lid = cmd.mlid; in ib_uverbs_attach_mcast()
2503 memcpy(mcast->gid.raw, cmd.gid, sizeof mcast->gid.raw); in ib_uverbs_attach_mcast()
2505 ret = ib_attach_mcast(qp, &mcast->gid, cmd.mlid); in ib_uverbs_attach_mcast()
2521 struct ib_uverbs_detach_mcast cmd; in ib_uverbs_detach_mcast() local
2528 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_detach_mcast()
2532 qp = uobj_get_obj_read(qp, UVERBS_OBJECT_QP, cmd.qp_handle, attrs); in ib_uverbs_detach_mcast()
2540 if (cmd.mlid == mcast->lid && in ib_uverbs_detach_mcast()
2541 !memcmp(cmd.gid, mcast->gid.raw, sizeof mcast->gid.raw)) { in ib_uverbs_detach_mcast()
2553 ret = ib_detach_mcast(qp, (union ib_gid *)cmd.gid, cmd.mlid); in ib_uverbs_detach_mcast()
2882 struct ib_uverbs_ex_create_wq cmd; in ib_uverbs_ex_create_wq() local
2892 err = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_ex_create_wq()
2896 if (cmd.comp_mask) in ib_uverbs_ex_create_wq()
2904 pd = uobj_get_obj_read(pd, UVERBS_OBJECT_PD, cmd.pd_handle, attrs); in ib_uverbs_ex_create_wq()
2910 cq = uobj_get_obj_read(cq, UVERBS_OBJECT_CQ, cmd.cq_handle, attrs); in ib_uverbs_ex_create_wq()
2917 wq_init_attr.max_sge = cmd.max_sge; in ib_uverbs_ex_create_wq()
2918 wq_init_attr.max_wr = cmd.max_wr; in ib_uverbs_ex_create_wq()
2919 wq_init_attr.wq_type = cmd.wq_type; in ib_uverbs_ex_create_wq()
2921 wq_init_attr.create_flags = cmd.create_flags; in ib_uverbs_ex_create_wq()
2923 obj->uevent.uobject.user_handle = cmd.user_handle; in ib_uverbs_ex_create_wq()
2969 struct ib_uverbs_ex_destroy_wq cmd; in ib_uverbs_ex_destroy_wq() local
2975 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_ex_destroy_wq()
2979 if (cmd.comp_mask) in ib_uverbs_ex_destroy_wq()
2983 uobj = uobj_get_destroy(UVERBS_OBJECT_WQ, cmd.wq_handle, attrs); in ib_uverbs_ex_destroy_wq()
2997 struct ib_uverbs_ex_modify_wq cmd; in ib_uverbs_ex_modify_wq() local
3002 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_ex_modify_wq()
3006 if (!cmd.attr_mask) in ib_uverbs_ex_modify_wq()
3009 if (cmd.attr_mask > (IB_WQ_STATE | IB_WQ_CUR_STATE | IB_WQ_FLAGS)) in ib_uverbs_ex_modify_wq()
3012 wq = uobj_get_obj_read(wq, UVERBS_OBJECT_WQ, cmd.wq_handle, attrs); in ib_uverbs_ex_modify_wq()
3016 if (cmd.attr_mask & IB_WQ_FLAGS) { in ib_uverbs_ex_modify_wq()
3017 wq_attr.flags = cmd.flags; in ib_uverbs_ex_modify_wq()
3018 wq_attr.flags_mask = cmd.flags_mask; in ib_uverbs_ex_modify_wq()
3021 if (cmd.attr_mask & IB_WQ_CUR_STATE) { in ib_uverbs_ex_modify_wq()
3022 if (cmd.curr_wq_state > IB_WQS_ERR) in ib_uverbs_ex_modify_wq()
3025 wq_attr.curr_wq_state = cmd.curr_wq_state; in ib_uverbs_ex_modify_wq()
3030 if (cmd.attr_mask & IB_WQ_STATE) { in ib_uverbs_ex_modify_wq()
3031 if (cmd.wq_state > IB_WQS_ERR) in ib_uverbs_ex_modify_wq()
3034 wq_attr.wq_state = cmd.wq_state; in ib_uverbs_ex_modify_wq()
3039 ret = wq->device->ops.modify_wq(wq, &wq_attr, cmd.attr_mask, in ib_uverbs_ex_modify_wq()
3048 struct ib_uverbs_ex_create_rwq_ind_table cmd; in ib_uverbs_ex_create_rwq_ind_table() local
3062 err = uverbs_request_start(attrs, &iter, &cmd, sizeof(cmd)); in ib_uverbs_ex_create_rwq_ind_table()
3066 if (cmd.comp_mask) in ib_uverbs_ex_create_rwq_ind_table()
3069 if (cmd.log_ind_tbl_size > IB_USER_VERBS_MAX_LOG_IND_TBL_SIZE) in ib_uverbs_ex_create_rwq_ind_table()
3072 num_wq_handles = 1 << cmd.log_ind_tbl_size; in ib_uverbs_ex_create_rwq_ind_table()
3118 init_attr.log_ind_tbl_size = cmd.log_ind_tbl_size; in ib_uverbs_ex_create_rwq_ind_table()
3162 struct ib_uverbs_ex_destroy_rwq_ind_table cmd; in ib_uverbs_ex_destroy_rwq_ind_table() local
3165 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_ex_destroy_rwq_ind_table()
3169 if (cmd.comp_mask) in ib_uverbs_ex_destroy_rwq_ind_table()
3173 cmd.ind_tbl_handle, attrs); in ib_uverbs_ex_destroy_rwq_ind_table()
3178 struct ib_uverbs_create_flow cmd; in ib_uverbs_ex_create_flow() local
3193 err = uverbs_request_start(attrs, &iter, &cmd, sizeof(cmd)); in ib_uverbs_ex_create_flow()
3197 if (cmd.comp_mask) in ib_uverbs_ex_create_flow()
3203 if (cmd.flow_attr.flags >= IB_FLOW_ATTR_FLAGS_RESERVED) in ib_uverbs_ex_create_flow()
3206 if ((cmd.flow_attr.flags & IB_FLOW_ATTR_FLAGS_DONT_TRAP) && in ib_uverbs_ex_create_flow()
3207 ((cmd.flow_attr.type == IB_FLOW_ATTR_ALL_DEFAULT) || in ib_uverbs_ex_create_flow()
3208 (cmd.flow_attr.type == IB_FLOW_ATTR_MC_DEFAULT))) in ib_uverbs_ex_create_flow()
3211 if (cmd.flow_attr.num_of_specs > IB_FLOW_SPEC_SUPPORT_LAYERS) in ib_uverbs_ex_create_flow()
3214 if (cmd.flow_attr.size > in ib_uverbs_ex_create_flow()
3215 (cmd.flow_attr.num_of_specs * sizeof(struct ib_uverbs_flow_spec))) in ib_uverbs_ex_create_flow()
3218 if (cmd.flow_attr.reserved[0] || in ib_uverbs_ex_create_flow()
3219 cmd.flow_attr.reserved[1]) in ib_uverbs_ex_create_flow()
3222 if (cmd.flow_attr.num_of_specs) { in ib_uverbs_ex_create_flow()
3223 kern_flow_attr = kmalloc(sizeof(*kern_flow_attr) + cmd.flow_attr.size, in ib_uverbs_ex_create_flow()
3228 *kern_flow_attr = cmd.flow_attr; in ib_uverbs_ex_create_flow()
3230 cmd.flow_attr.size); in ib_uverbs_ex_create_flow()
3234 kern_flow_attr = &cmd.flow_attr; in ib_uverbs_ex_create_flow()
3247 if (!rdma_is_port_valid(uobj->context->device, cmd.flow_attr.port)) { in ib_uverbs_ex_create_flow()
3252 qp = uobj_get_obj_read(qp, UVERBS_OBJECT_QP, cmd.qp_handle, attrs); in ib_uverbs_ex_create_flow()
3264 cmd.flow_attr.num_of_specs), GFP_KERNEL); in ib_uverbs_ex_create_flow()
3269 uflow_res = flow_resources_alloc(cmd.flow_attr.num_of_specs); in ib_uverbs_ex_create_flow()
3285 cmd.flow_attr.size >= sizeof(*kern_spec) && in ib_uverbs_ex_create_flow()
3286 cmd.flow_attr.size >= kern_spec->size; in ib_uverbs_ex_create_flow()
3296 cmd.flow_attr.size -= kern_spec->size; in ib_uverbs_ex_create_flow()
3300 if (cmd.flow_attr.size || (i != flow_attr->num_of_specs)) { in ib_uverbs_ex_create_flow()
3302 i, cmd.flow_attr.size); in ib_uverbs_ex_create_flow()
3321 if (cmd.flow_attr.num_of_specs) in ib_uverbs_ex_create_flow()
3338 if (cmd.flow_attr.num_of_specs) in ib_uverbs_ex_create_flow()
3345 struct ib_uverbs_destroy_flow cmd; in ib_uverbs_ex_destroy_flow() local
3348 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_ex_destroy_flow()
3352 if (cmd.comp_mask) in ib_uverbs_ex_destroy_flow()
3355 return uobj_perform_destroy(UVERBS_OBJECT_FLOW, cmd.flow_handle, attrs); in ib_uverbs_ex_destroy_flow()
3359 struct ib_uverbs_create_xsrq *cmd, in __uverbs_create_xsrq() argument
3376 if (cmd->srq_type == IB_SRQT_TM) in __uverbs_create_xsrq()
3377 attr.ext.tag_matching.max_num_tags = cmd->max_num_tags; in __uverbs_create_xsrq()
3379 if (cmd->srq_type == IB_SRQT_XRC) { in __uverbs_create_xsrq()
3380 xrcd_uobj = uobj_get_read(UVERBS_OBJECT_XRCD, cmd->xrcd_handle, in __uverbs_create_xsrq()
3397 if (ib_srq_has_cq(cmd->srq_type)) { in __uverbs_create_xsrq()
3399 cmd->cq_handle, attrs); in __uverbs_create_xsrq()
3406 pd = uobj_get_obj_read(pd, UVERBS_OBJECT_PD, cmd->pd_handle, attrs); in __uverbs_create_xsrq()
3413 attr.srq_type = cmd->srq_type; in __uverbs_create_xsrq()
3414 attr.attr.max_wr = cmd->max_wr; in __uverbs_create_xsrq()
3415 attr.attr.max_sge = cmd->max_sge; in __uverbs_create_xsrq()
3416 attr.attr.srq_limit = cmd->srq_limit; in __uverbs_create_xsrq()
3419 obj->uevent.uobject.user_handle = cmd->user_handle; in __uverbs_create_xsrq()
3428 obj->uevent.uobject.user_handle = cmd->user_handle; in __uverbs_create_xsrq()
3433 if (cmd->srq_type == IB_SRQT_XRC) in __uverbs_create_xsrq()
3436 if (cmd->srq_type == IB_SRQT_XRC) in __uverbs_create_xsrq()
3439 if (ib_srq_has_cq(cmd->srq_type)) in __uverbs_create_xsrq()
3454 if (ib_srq_has_cq(cmd->srq_type)) in __uverbs_create_xsrq()
3459 if (cmd->srq_type == IB_SRQT_XRC) { in __uverbs_create_xsrq()
3471 struct ib_uverbs_create_srq cmd; in ib_uverbs_create_srq() local
3475 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_create_srq()
3480 xcmd.response = cmd.response; in ib_uverbs_create_srq()
3481 xcmd.user_handle = cmd.user_handle; in ib_uverbs_create_srq()
3483 xcmd.pd_handle = cmd.pd_handle; in ib_uverbs_create_srq()
3484 xcmd.max_wr = cmd.max_wr; in ib_uverbs_create_srq()
3485 xcmd.max_sge = cmd.max_sge; in ib_uverbs_create_srq()
3486 xcmd.srq_limit = cmd.srq_limit; in ib_uverbs_create_srq()
3493 struct ib_uverbs_create_xsrq cmd; in ib_uverbs_create_xsrq() local
3496 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_create_xsrq()
3500 return __uverbs_create_xsrq(attrs, &cmd, &attrs->driver_udata); in ib_uverbs_create_xsrq()
3505 struct ib_uverbs_modify_srq cmd; in ib_uverbs_modify_srq() local
3510 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_modify_srq()
3514 srq = uobj_get_obj_read(srq, UVERBS_OBJECT_SRQ, cmd.srq_handle, attrs); in ib_uverbs_modify_srq()
3518 attr.max_wr = cmd.max_wr; in ib_uverbs_modify_srq()
3519 attr.srq_limit = cmd.srq_limit; in ib_uverbs_modify_srq()
3521 ret = srq->device->ops.modify_srq(srq, &attr, cmd.attr_mask, in ib_uverbs_modify_srq()
3532 struct ib_uverbs_query_srq cmd; in ib_uverbs_query_srq() local
3538 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_query_srq()
3542 srq = uobj_get_obj_read(srq, UVERBS_OBJECT_SRQ, cmd.srq_handle, attrs); in ib_uverbs_query_srq()
3565 struct ib_uverbs_destroy_srq cmd; in ib_uverbs_destroy_srq() local
3571 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_destroy_srq()
3575 uobj = uobj_get_destroy(UVERBS_OBJECT_SRQ, cmd.srq_handle, attrs); in ib_uverbs_destroy_srq()
3591 struct ib_uverbs_ex_query_device cmd; in ib_uverbs_ex_query_device() local
3602 err = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_ex_query_device()
3606 if (cmd.comp_mask) in ib_uverbs_ex_query_device()
3609 if (cmd.reserved) in ib_uverbs_ex_query_device()
3654 struct ib_uverbs_ex_modify_cq cmd; in ib_uverbs_ex_modify_cq() local
3658 ret = uverbs_request(attrs, &cmd, sizeof(cmd)); in ib_uverbs_ex_modify_cq()
3662 if (!cmd.attr_mask || cmd.reserved) in ib_uverbs_ex_modify_cq()
3665 if (cmd.attr_mask > IB_CQ_MODERATE) in ib_uverbs_ex_modify_cq()
3668 cq = uobj_get_obj_read(cq, UVERBS_OBJECT_CQ, cmd.cq_handle, attrs); in ib_uverbs_ex_modify_cq()
3672 ret = rdma_set_cq_moderation(cq, cmd.attr.cq_count, cmd.attr.cq_period); in ib_uverbs_ex_modify_cq()