Lines Matching refs:cmd
288 struct ib_uverbs_get_context cmd; in ib_uverbs_get_context() local
302 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_get_context()
312 INIT_UDATA(&udata, buf + sizeof cmd, in ib_uverbs_get_context()
313 (unsigned long) cmd.response + sizeof resp, in ib_uverbs_get_context()
314 in_len - sizeof cmd, out_len - sizeof resp); in ib_uverbs_get_context()
364 if (copy_to_user((void __user *) (unsigned long) cmd.response, in ib_uverbs_get_context()
453 struct ib_uverbs_query_device cmd; in ib_uverbs_query_device() local
461 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_query_device()
471 if (copy_to_user((void __user *) (unsigned long) cmd.response, in ib_uverbs_query_device()
482 struct ib_uverbs_query_port cmd; in ib_uverbs_query_port() local
490 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_query_port()
493 ret = ib_query_port(file->device->ib_dev, cmd.port_num, &attr); in ib_uverbs_query_port()
519 cmd.port_num); in ib_uverbs_query_port()
521 if (copy_to_user((void __user *) (unsigned long) cmd.response, in ib_uverbs_query_port()
532 struct ib_uverbs_alloc_pd cmd; in ib_uverbs_alloc_pd() local
542 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_alloc_pd()
545 INIT_UDATA(&udata, buf + sizeof cmd, in ib_uverbs_alloc_pd()
546 (unsigned long) cmd.response + sizeof resp, in ib_uverbs_alloc_pd()
547 in_len - sizeof cmd, out_len - sizeof resp); in ib_uverbs_alloc_pd()
575 if (copy_to_user((void __user *) (unsigned long) cmd.response, in ib_uverbs_alloc_pd()
606 struct ib_uverbs_dealloc_pd cmd; in ib_uverbs_dealloc_pd() local
610 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_dealloc_pd()
613 uobj = idr_write_uobj(&ib_uverbs_pd_idr, cmd.pd_handle, file->ucontext); in ib_uverbs_dealloc_pd()
726 struct ib_uverbs_open_xrcd cmd; in ib_uverbs_open_xrcd() local
739 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_open_xrcd()
742 INIT_UDATA(&udata, buf + sizeof cmd, in ib_uverbs_open_xrcd()
743 (unsigned long) cmd.response + sizeof resp, in ib_uverbs_open_xrcd()
744 in_len - sizeof cmd, out_len - sizeof resp); in ib_uverbs_open_xrcd()
748 if (cmd.fd != -1) { in ib_uverbs_open_xrcd()
750 f = fdget(cmd.fd); in ib_uverbs_open_xrcd()
758 if (!xrcd && !(cmd.oflags & O_CREAT)) { in ib_uverbs_open_xrcd()
764 if (xrcd && cmd.oflags & O_EXCL) { in ib_uverbs_open_xrcd()
815 if (copy_to_user((void __user *) (unsigned long) cmd.response, in ib_uverbs_open_xrcd()
863 struct ib_uverbs_close_xrcd cmd; in ib_uverbs_close_xrcd() local
871 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_close_xrcd()
875 uobj = idr_write_uobj(&ib_uverbs_xrcd_idr, cmd.xrcd_handle, file->ucontext); in ib_uverbs_close_xrcd()
940 struct ib_uverbs_reg_mr cmd; in ib_uverbs_reg_mr() local
951 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_reg_mr()
954 INIT_UDATA(&udata, buf + sizeof cmd, in ib_uverbs_reg_mr()
955 (unsigned long) cmd.response + sizeof resp, in ib_uverbs_reg_mr()
956 in_len - sizeof cmd, out_len - sizeof resp); in ib_uverbs_reg_mr()
958 if ((cmd.start & ~PAGE_MASK) != (cmd.hca_va & ~PAGE_MASK)) in ib_uverbs_reg_mr()
961 ret = ib_check_mr_access(cmd.access_flags); in ib_uverbs_reg_mr()
972 pd = idr_read_pd(cmd.pd_handle, file->ucontext); in ib_uverbs_reg_mr()
978 if (cmd.access_flags & IB_ACCESS_ON_DEMAND) { in ib_uverbs_reg_mr()
990 mr = pd->device->reg_user_mr(pd, cmd.start, cmd.length, cmd.hca_va, in ib_uverbs_reg_mr()
991 cmd.access_flags, &udata); in ib_uverbs_reg_mr()
1013 if (copy_to_user((void __user *) (unsigned long) cmd.response, in ib_uverbs_reg_mr()
1049 struct ib_uverbs_rereg_mr cmd; in ib_uverbs_rereg_mr() local
1061 if (copy_from_user(&cmd, buf, sizeof(cmd))) in ib_uverbs_rereg_mr()
1064 INIT_UDATA(&udata, buf + sizeof(cmd), in ib_uverbs_rereg_mr()
1065 (unsigned long) cmd.response + sizeof(resp), in ib_uverbs_rereg_mr()
1066 in_len - sizeof(cmd), out_len - sizeof(resp)); in ib_uverbs_rereg_mr()
1068 if (cmd.flags & ~IB_MR_REREG_SUPPORTED || !cmd.flags) in ib_uverbs_rereg_mr()
1071 if ((cmd.flags & IB_MR_REREG_TRANS) && in ib_uverbs_rereg_mr()
1072 (!cmd.start || !cmd.hca_va || 0 >= cmd.length || in ib_uverbs_rereg_mr()
1073 (cmd.start & ~PAGE_MASK) != (cmd.hca_va & ~PAGE_MASK))) in ib_uverbs_rereg_mr()
1076 uobj = idr_write_uobj(&ib_uverbs_mr_idr, cmd.mr_handle, in ib_uverbs_rereg_mr()
1084 if (cmd.flags & IB_MR_REREG_ACCESS) { in ib_uverbs_rereg_mr()
1085 ret = ib_check_mr_access(cmd.access_flags); in ib_uverbs_rereg_mr()
1090 if (cmd.flags & IB_MR_REREG_PD) { in ib_uverbs_rereg_mr()
1091 pd = idr_read_pd(cmd.pd_handle, file->ucontext); in ib_uverbs_rereg_mr()
1104 ret = mr->device->rereg_user_mr(mr, cmd.flags, cmd.start, in ib_uverbs_rereg_mr()
1105 cmd.length, cmd.hca_va, in ib_uverbs_rereg_mr()
1106 cmd.access_flags, pd, &udata); in ib_uverbs_rereg_mr()
1108 if (cmd.flags & IB_MR_REREG_PD) { in ib_uverbs_rereg_mr()
1121 if (copy_to_user((void __user *)(unsigned long)cmd.response, in ib_uverbs_rereg_mr()
1128 if (cmd.flags & IB_MR_REREG_PD) in ib_uverbs_rereg_mr()
1142 struct ib_uverbs_dereg_mr cmd; in ib_uverbs_dereg_mr() local
1147 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_dereg_mr()
1150 uobj = idr_write_uobj(&ib_uverbs_mr_idr, cmd.mr_handle, file->ucontext); in ib_uverbs_dereg_mr()
1180 struct ib_uverbs_alloc_mw cmd; in ib_uverbs_alloc_mw() local
1190 if (copy_from_user(&cmd, buf, sizeof(cmd))) in ib_uverbs_alloc_mw()
1200 pd = idr_read_pd(cmd.pd_handle, file->ucontext); in ib_uverbs_alloc_mw()
1206 mw = pd->device->alloc_mw(pd, cmd.mw_type); in ib_uverbs_alloc_mw()
1226 if (copy_to_user((void __user *)(unsigned long)cmd.response, in ib_uverbs_alloc_mw()
1262 struct ib_uverbs_dealloc_mw cmd; in ib_uverbs_dealloc_mw() local
1267 if (copy_from_user(&cmd, buf, sizeof(cmd))) in ib_uverbs_dealloc_mw()
1270 uobj = idr_write_uobj(&ib_uverbs_mw_idr, cmd.mw_handle, file->ucontext); in ib_uverbs_dealloc_mw()
1300 struct ib_uverbs_create_comp_channel cmd; in ib_uverbs_create_comp_channel() local
1308 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_create_comp_channel()
1322 if (copy_to_user((void __user *) (unsigned long) cmd.response, in ib_uverbs_create_comp_channel()
1337 struct ib_uverbs_create_cq cmd; in ib_uverbs_create_cq() local
1348 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_create_cq()
1351 INIT_UDATA(&udata, buf + sizeof cmd, in ib_uverbs_create_cq()
1352 (unsigned long) cmd.response + sizeof resp, in ib_uverbs_create_cq()
1353 in_len - sizeof cmd, out_len - sizeof resp); in ib_uverbs_create_cq()
1355 if (cmd.comp_vector >= file->device->num_comp_vectors) in ib_uverbs_create_cq()
1362 init_uobj(&obj->uobject, cmd.user_handle, file->ucontext, &cq_lock_class); in ib_uverbs_create_cq()
1365 if (cmd.comp_channel >= 0) { in ib_uverbs_create_cq()
1366 ev_file = ib_uverbs_lookup_comp_file(cmd.comp_channel); in ib_uverbs_create_cq()
1379 cq = file->device->ib_dev->create_cq(file->device->ib_dev, cmd.cqe, in ib_uverbs_create_cq()
1380 cmd.comp_vector, in ib_uverbs_create_cq()
1403 if (copy_to_user((void __user *) (unsigned long) cmd.response, in ib_uverbs_create_cq()
1438 struct ib_uverbs_resize_cq cmd; in ib_uverbs_resize_cq() local
1444 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_resize_cq()
1447 INIT_UDATA(&udata, buf + sizeof cmd, in ib_uverbs_resize_cq()
1448 (unsigned long) cmd.response + sizeof resp, in ib_uverbs_resize_cq()
1449 in_len - sizeof cmd, out_len - sizeof resp); in ib_uverbs_resize_cq()
1451 cq = idr_read_cq(cmd.cq_handle, file->ucontext, 0); in ib_uverbs_resize_cq()
1455 ret = cq->device->resize_cq(cq, cmd.cqe, &udata); in ib_uverbs_resize_cq()
1461 if (copy_to_user((void __user *) (unsigned long) cmd.response, in ib_uverbs_resize_cq()
1501 struct ib_uverbs_poll_cq cmd; in ib_uverbs_poll_cq() local
1509 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_poll_cq()
1512 cq = idr_read_cq(cmd.cq_handle, file->ucontext, 0); in ib_uverbs_poll_cq()
1517 header_ptr = (void __user *)(unsigned long) cmd.response; in ib_uverbs_poll_cq()
1521 while (resp.count < cmd.ne) { in ib_uverbs_poll_cq()
1552 struct ib_uverbs_req_notify_cq cmd; in ib_uverbs_req_notify_cq() local
1555 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_req_notify_cq()
1558 cq = idr_read_cq(cmd.cq_handle, file->ucontext, 0); in ib_uverbs_req_notify_cq()
1562 ib_req_notify_cq(cq, cmd.solicited_only ? in ib_uverbs_req_notify_cq()
1574 struct ib_uverbs_destroy_cq cmd; in ib_uverbs_destroy_cq() local
1582 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_destroy_cq()
1585 uobj = idr_write_uobj(&ib_uverbs_cq_idr, cmd.cq_handle, file->ucontext); in ib_uverbs_destroy_cq()
1615 if (copy_to_user((void __user *) (unsigned long) cmd.response, in ib_uverbs_destroy_cq()
1626 struct ib_uverbs_create_qp cmd; in ib_uverbs_create_qp() local
1643 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_create_qp()
1646 if (cmd.qp_type == IB_QPT_RAW_PACKET && !capable(CAP_NET_RAW)) in ib_uverbs_create_qp()
1649 INIT_UDATA(&udata, buf + sizeof cmd, in ib_uverbs_create_qp()
1650 (unsigned long) cmd.response + sizeof resp, in ib_uverbs_create_qp()
1651 in_len - sizeof cmd, out_len - sizeof resp); in ib_uverbs_create_qp()
1657 init_uobj(&obj->uevent.uobject, cmd.user_handle, file->ucontext, &qp_lock_class); in ib_uverbs_create_qp()
1660 if (cmd.qp_type == IB_QPT_XRC_TGT) { in ib_uverbs_create_qp()
1661 xrcd = idr_read_xrcd(cmd.pd_handle, file->ucontext, &xrcd_uobj); in ib_uverbs_create_qp()
1668 if (cmd.qp_type == IB_QPT_XRC_INI) { in ib_uverbs_create_qp()
1669 cmd.max_recv_wr = cmd.max_recv_sge = 0; in ib_uverbs_create_qp()
1671 if (cmd.is_srq) { in ib_uverbs_create_qp()
1672 srq = idr_read_srq(cmd.srq_handle, file->ucontext); in ib_uverbs_create_qp()
1679 if (cmd.recv_cq_handle != cmd.send_cq_handle) { in ib_uverbs_create_qp()
1680 rcq = idr_read_cq(cmd.recv_cq_handle, file->ucontext, 0); in ib_uverbs_create_qp()
1688 scq = idr_read_cq(cmd.send_cq_handle, file->ucontext, !!rcq); in ib_uverbs_create_qp()
1690 pd = idr_read_pd(cmd.pd_handle, file->ucontext); in ib_uverbs_create_qp()
1705 attr.sq_sig_type = cmd.sq_sig_all ? IB_SIGNAL_ALL_WR : IB_SIGNAL_REQ_WR; in ib_uverbs_create_qp()
1706 attr.qp_type = cmd.qp_type; in ib_uverbs_create_qp()
1709 attr.cap.max_send_wr = cmd.max_send_wr; in ib_uverbs_create_qp()
1710 attr.cap.max_recv_wr = cmd.max_recv_wr; in ib_uverbs_create_qp()
1711 attr.cap.max_send_sge = cmd.max_send_sge; in ib_uverbs_create_qp()
1712 attr.cap.max_recv_sge = cmd.max_recv_sge; in ib_uverbs_create_qp()
1713 attr.cap.max_inline_data = cmd.max_inline_data; in ib_uverbs_create_qp()
1719 if (cmd.qp_type == IB_QPT_XRC_TGT) in ib_uverbs_create_qp()
1729 if (cmd.qp_type != IB_QPT_XRC_TGT) { in ib_uverbs_create_qp()
1763 if (copy_to_user((void __user *) (unsigned long) cmd.response, in ib_uverbs_create_qp()
1820 struct ib_uverbs_open_qp cmd; in ib_uverbs_open_qp() local
1833 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_open_qp()
1836 INIT_UDATA(&udata, buf + sizeof cmd, in ib_uverbs_open_qp()
1837 (unsigned long) cmd.response + sizeof resp, in ib_uverbs_open_qp()
1838 in_len - sizeof cmd, out_len - sizeof resp); in ib_uverbs_open_qp()
1844 init_uobj(&obj->uevent.uobject, cmd.user_handle, file->ucontext, &qp_lock_class); in ib_uverbs_open_qp()
1847 xrcd = idr_read_xrcd(cmd.pd_handle, file->ucontext, &xrcd_uobj); in ib_uverbs_open_qp()
1855 attr.qp_num = cmd.qpn; in ib_uverbs_open_qp()
1856 attr.qp_type = cmd.qp_type; in ib_uverbs_open_qp()
1879 if (copy_to_user((void __user *) (unsigned long) cmd.response, in ib_uverbs_open_qp()
1915 struct ib_uverbs_query_qp cmd; in ib_uverbs_query_qp() local
1922 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_query_qp()
1932 qp = idr_read_qp(cmd.qp_handle, file->ucontext); in ib_uverbs_query_qp()
1938 ret = ib_query_qp(qp, attr, cmd.attr_mask, init_attr); in ib_uverbs_query_qp()
2000 if (copy_to_user((void __user *) (unsigned long) cmd.response, in ib_uverbs_query_qp()
2029 struct ib_uverbs_modify_qp cmd; in ib_uverbs_modify_qp() local
2035 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_modify_qp()
2038 INIT_UDATA(&udata, buf + sizeof cmd, NULL, in_len - sizeof cmd, in ib_uverbs_modify_qp()
2045 qp = idr_read_qp(cmd.qp_handle, file->ucontext); in ib_uverbs_modify_qp()
2051 attr->qp_state = cmd.qp_state; in ib_uverbs_modify_qp()
2052 attr->cur_qp_state = cmd.cur_qp_state; in ib_uverbs_modify_qp()
2053 attr->path_mtu = cmd.path_mtu; in ib_uverbs_modify_qp()
2054 attr->path_mig_state = cmd.path_mig_state; in ib_uverbs_modify_qp()
2055 attr->qkey = cmd.qkey; in ib_uverbs_modify_qp()
2056 attr->rq_psn = cmd.rq_psn; in ib_uverbs_modify_qp()
2057 attr->sq_psn = cmd.sq_psn; in ib_uverbs_modify_qp()
2058 attr->dest_qp_num = cmd.dest_qp_num; in ib_uverbs_modify_qp()
2059 attr->qp_access_flags = cmd.qp_access_flags; in ib_uverbs_modify_qp()
2060 attr->pkey_index = cmd.pkey_index; in ib_uverbs_modify_qp()
2061 attr->alt_pkey_index = cmd.alt_pkey_index; in ib_uverbs_modify_qp()
2062 attr->en_sqd_async_notify = cmd.en_sqd_async_notify; in ib_uverbs_modify_qp()
2063 attr->max_rd_atomic = cmd.max_rd_atomic; in ib_uverbs_modify_qp()
2064 attr->max_dest_rd_atomic = cmd.max_dest_rd_atomic; in ib_uverbs_modify_qp()
2065 attr->min_rnr_timer = cmd.min_rnr_timer; in ib_uverbs_modify_qp()
2066 attr->port_num = cmd.port_num; in ib_uverbs_modify_qp()
2067 attr->timeout = cmd.timeout; in ib_uverbs_modify_qp()
2068 attr->retry_cnt = cmd.retry_cnt; in ib_uverbs_modify_qp()
2069 attr->rnr_retry = cmd.rnr_retry; in ib_uverbs_modify_qp()
2070 attr->alt_port_num = cmd.alt_port_num; in ib_uverbs_modify_qp()
2071 attr->alt_timeout = cmd.alt_timeout; in ib_uverbs_modify_qp()
2073 memcpy(attr->ah_attr.grh.dgid.raw, cmd.dest.dgid, 16); in ib_uverbs_modify_qp()
2074 attr->ah_attr.grh.flow_label = cmd.dest.flow_label; in ib_uverbs_modify_qp()
2075 attr->ah_attr.grh.sgid_index = cmd.dest.sgid_index; in ib_uverbs_modify_qp()
2076 attr->ah_attr.grh.hop_limit = cmd.dest.hop_limit; in ib_uverbs_modify_qp()
2077 attr->ah_attr.grh.traffic_class = cmd.dest.traffic_class; in ib_uverbs_modify_qp()
2078 attr->ah_attr.dlid = cmd.dest.dlid; in ib_uverbs_modify_qp()
2079 attr->ah_attr.sl = cmd.dest.sl; in ib_uverbs_modify_qp()
2080 attr->ah_attr.src_path_bits = cmd.dest.src_path_bits; in ib_uverbs_modify_qp()
2081 attr->ah_attr.static_rate = cmd.dest.static_rate; in ib_uverbs_modify_qp()
2082 attr->ah_attr.ah_flags = cmd.dest.is_global ? IB_AH_GRH : 0; in ib_uverbs_modify_qp()
2083 attr->ah_attr.port_num = cmd.dest.port_num; in ib_uverbs_modify_qp()
2085 memcpy(attr->alt_ah_attr.grh.dgid.raw, cmd.alt_dest.dgid, 16); in ib_uverbs_modify_qp()
2086 attr->alt_ah_attr.grh.flow_label = cmd.alt_dest.flow_label; in ib_uverbs_modify_qp()
2087 attr->alt_ah_attr.grh.sgid_index = cmd.alt_dest.sgid_index; in ib_uverbs_modify_qp()
2088 attr->alt_ah_attr.grh.hop_limit = cmd.alt_dest.hop_limit; in ib_uverbs_modify_qp()
2089 attr->alt_ah_attr.grh.traffic_class = cmd.alt_dest.traffic_class; in ib_uverbs_modify_qp()
2090 attr->alt_ah_attr.dlid = cmd.alt_dest.dlid; in ib_uverbs_modify_qp()
2091 attr->alt_ah_attr.sl = cmd.alt_dest.sl; in ib_uverbs_modify_qp()
2092 attr->alt_ah_attr.src_path_bits = cmd.alt_dest.src_path_bits; in ib_uverbs_modify_qp()
2093 attr->alt_ah_attr.static_rate = cmd.alt_dest.static_rate; in ib_uverbs_modify_qp()
2094 attr->alt_ah_attr.ah_flags = cmd.alt_dest.is_global ? IB_AH_GRH : 0; in ib_uverbs_modify_qp()
2095 attr->alt_ah_attr.port_num = cmd.alt_dest.port_num; in ib_uverbs_modify_qp()
2098 ret = ib_resolve_eth_l2_attrs(qp, attr, &cmd.attr_mask); in ib_uverbs_modify_qp()
2102 modify_qp_mask(qp->qp_type, cmd.attr_mask), &udata); in ib_uverbs_modify_qp()
2104 ret = ib_modify_qp(qp, attr, modify_qp_mask(qp->qp_type, cmd.attr_mask)); in ib_uverbs_modify_qp()
2125 struct ib_uverbs_destroy_qp cmd; in ib_uverbs_destroy_qp() local
2132 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_destroy_qp()
2137 uobj = idr_write_uobj(&ib_uverbs_qp_idr, cmd.qp_handle, file->ucontext); in ib_uverbs_destroy_qp()
2172 if (copy_to_user((void __user *) (unsigned long) cmd.response, in ib_uverbs_destroy_qp()
2183 struct ib_uverbs_post_send cmd; in ib_uverbs_post_send() local
2192 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_post_send()
2195 if (in_len < sizeof cmd + cmd.wqe_size * cmd.wr_count + in ib_uverbs_post_send()
2196 cmd.sge_count * sizeof (struct ib_uverbs_sge)) in ib_uverbs_post_send()
2199 if (cmd.wqe_size < sizeof (struct ib_uverbs_send_wr)) in ib_uverbs_post_send()
2202 user_wr = kmalloc(cmd.wqe_size, GFP_KERNEL); in ib_uverbs_post_send()
2206 qp = idr_read_qp(cmd.qp_handle, file->ucontext); in ib_uverbs_post_send()
2213 for (i = 0; i < cmd.wr_count; ++i) { in ib_uverbs_post_send()
2215 buf + sizeof cmd + i * cmd.wqe_size, in ib_uverbs_post_send()
2216 cmd.wqe_size)) { in ib_uverbs_post_send()
2221 if (user_wr->num_sge + sg_ind > cmd.sge_count) { in ib_uverbs_post_send()
2304 buf + sizeof cmd + in ib_uverbs_post_send()
2305 cmd.wr_count * cmd.wqe_size + in ib_uverbs_post_send()
2325 if (copy_to_user((void __user *) (unsigned long) cmd.response, in ib_uverbs_post_send()
2435 struct ib_uverbs_post_recv cmd; in ib_uverbs_post_recv() local
2441 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_post_recv()
2444 wr = ib_uverbs_unmarshall_recv(buf + sizeof cmd, in ib_uverbs_post_recv()
2445 in_len - sizeof cmd, cmd.wr_count, in ib_uverbs_post_recv()
2446 cmd.sge_count, cmd.wqe_size); in ib_uverbs_post_recv()
2450 qp = idr_read_qp(cmd.qp_handle, file->ucontext); in ib_uverbs_post_recv()
2466 if (copy_to_user((void __user *) (unsigned long) cmd.response, in ib_uverbs_post_recv()
2484 struct ib_uverbs_post_srq_recv cmd; in ib_uverbs_post_srq_recv() local
2490 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_post_srq_recv()
2493 wr = ib_uverbs_unmarshall_recv(buf + sizeof cmd, in ib_uverbs_post_srq_recv()
2494 in_len - sizeof cmd, cmd.wr_count, in ib_uverbs_post_srq_recv()
2495 cmd.sge_count, cmd.wqe_size); in ib_uverbs_post_srq_recv()
2499 srq = idr_read_srq(cmd.srq_handle, file->ucontext); in ib_uverbs_post_srq_recv()
2515 if (copy_to_user((void __user *) (unsigned long) cmd.response, in ib_uverbs_post_srq_recv()
2533 struct ib_uverbs_create_ah cmd; in ib_uverbs_create_ah() local
2544 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_create_ah()
2551 init_uobj(uobj, cmd.user_handle, file->ucontext, &ah_lock_class); in ib_uverbs_create_ah()
2554 pd = idr_read_pd(cmd.pd_handle, file->ucontext); in ib_uverbs_create_ah()
2560 attr.dlid = cmd.attr.dlid; in ib_uverbs_create_ah()
2561 attr.sl = cmd.attr.sl; in ib_uverbs_create_ah()
2562 attr.src_path_bits = cmd.attr.src_path_bits; in ib_uverbs_create_ah()
2563 attr.static_rate = cmd.attr.static_rate; in ib_uverbs_create_ah()
2564 attr.ah_flags = cmd.attr.is_global ? IB_AH_GRH : 0; in ib_uverbs_create_ah()
2565 attr.port_num = cmd.attr.port_num; in ib_uverbs_create_ah()
2566 attr.grh.flow_label = cmd.attr.grh.flow_label; in ib_uverbs_create_ah()
2567 attr.grh.sgid_index = cmd.attr.grh.sgid_index; in ib_uverbs_create_ah()
2568 attr.grh.hop_limit = cmd.attr.grh.hop_limit; in ib_uverbs_create_ah()
2569 attr.grh.traffic_class = cmd.attr.grh.traffic_class; in ib_uverbs_create_ah()
2572 memcpy(attr.grh.dgid.raw, cmd.attr.grh.dgid, 16); in ib_uverbs_create_ah()
2589 if (copy_to_user((void __user *) (unsigned long) cmd.response, in ib_uverbs_create_ah()
2624 struct ib_uverbs_destroy_ah cmd; in ib_uverbs_destroy_ah() local
2629 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_destroy_ah()
2632 uobj = idr_write_uobj(&ib_uverbs_ah_idr, cmd.ah_handle, file->ucontext); in ib_uverbs_destroy_ah()
2661 struct ib_uverbs_attach_mcast cmd; in ib_uverbs_attach_mcast() local
2667 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_attach_mcast()
2670 qp = idr_write_qp(cmd.qp_handle, file->ucontext); in ib_uverbs_attach_mcast()
2677 if (cmd.mlid == mcast->lid && in ib_uverbs_attach_mcast()
2678 !memcmp(cmd.gid, mcast->gid.raw, sizeof mcast->gid.raw)) { in ib_uverbs_attach_mcast()
2689 mcast->lid = cmd.mlid; in ib_uverbs_attach_mcast()
2690 memcpy(mcast->gid.raw, cmd.gid, sizeof mcast->gid.raw); in ib_uverbs_attach_mcast()
2692 ret = ib_attach_mcast(qp, &mcast->gid, cmd.mlid); in ib_uverbs_attach_mcast()
2708 struct ib_uverbs_detach_mcast cmd; in ib_uverbs_detach_mcast() local
2714 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_detach_mcast()
2717 qp = idr_write_qp(cmd.qp_handle, file->ucontext); in ib_uverbs_detach_mcast()
2721 ret = ib_detach_mcast(qp, (union ib_gid *) cmd.gid, cmd.mlid); in ib_uverbs_detach_mcast()
2728 if (cmd.mlid == mcast->lid && in ib_uverbs_detach_mcast()
2729 !memcmp(cmd.gid, mcast->gid.raw, sizeof mcast->gid.raw)) { in ib_uverbs_detach_mcast()
2788 struct ib_uverbs_create_flow cmd; in ib_uverbs_ex_create_flow() local
2800 if (ucore->inlen < sizeof(cmd)) in ib_uverbs_ex_create_flow()
2806 err = ib_copy_from_udata(&cmd, ucore, sizeof(cmd)); in ib_uverbs_ex_create_flow()
2810 ucore->inbuf += sizeof(cmd); in ib_uverbs_ex_create_flow()
2811 ucore->inlen -= sizeof(cmd); in ib_uverbs_ex_create_flow()
2813 if (cmd.comp_mask) in ib_uverbs_ex_create_flow()
2816 if ((cmd.flow_attr.type == IB_FLOW_ATTR_SNIFFER && in ib_uverbs_ex_create_flow()
2820 if (cmd.flow_attr.num_of_specs > IB_FLOW_SPEC_SUPPORT_LAYERS) in ib_uverbs_ex_create_flow()
2823 if (cmd.flow_attr.size > ucore->inlen || in ib_uverbs_ex_create_flow()
2824 cmd.flow_attr.size > in ib_uverbs_ex_create_flow()
2825 (cmd.flow_attr.num_of_specs * sizeof(struct ib_uverbs_flow_spec))) in ib_uverbs_ex_create_flow()
2828 if (cmd.flow_attr.reserved[0] || in ib_uverbs_ex_create_flow()
2829 cmd.flow_attr.reserved[1]) in ib_uverbs_ex_create_flow()
2832 if (cmd.flow_attr.num_of_specs) { in ib_uverbs_ex_create_flow()
2833 kern_flow_attr = kmalloc(sizeof(*kern_flow_attr) + cmd.flow_attr.size, in ib_uverbs_ex_create_flow()
2838 memcpy(kern_flow_attr, &cmd.flow_attr, sizeof(*kern_flow_attr)); in ib_uverbs_ex_create_flow()
2840 cmd.flow_attr.size); in ib_uverbs_ex_create_flow()
2844 kern_flow_attr = &cmd.flow_attr; in ib_uverbs_ex_create_flow()
2855 qp = idr_read_qp(cmd.qp_handle, file->ucontext); in ib_uverbs_ex_create_flow()
2861 flow_attr = kmalloc(sizeof(*flow_attr) + cmd.flow_attr.size, GFP_KERNEL); in ib_uverbs_ex_create_flow()
2877 cmd.flow_attr.size > offsetof(struct ib_uverbs_flow_spec, reserved) && in ib_uverbs_ex_create_flow()
2878 cmd.flow_attr.size >= in ib_uverbs_ex_create_flow()
2885 cmd.flow_attr.size -= ((struct ib_uverbs_flow_spec *)kern_spec)->size; in ib_uverbs_ex_create_flow()
2889 if (cmd.flow_attr.size || (i != flow_attr->num_of_specs)) { in ib_uverbs_ex_create_flow()
2891 i, cmd.flow_attr.size); in ib_uverbs_ex_create_flow()
2925 if (cmd.flow_attr.num_of_specs) in ib_uverbs_ex_create_flow()
2939 if (cmd.flow_attr.num_of_specs) in ib_uverbs_ex_create_flow()
2948 struct ib_uverbs_destroy_flow cmd; in ib_uverbs_ex_destroy_flow() local
2953 if (ucore->inlen < sizeof(cmd)) in ib_uverbs_ex_destroy_flow()
2956 ret = ib_copy_from_udata(&cmd, ucore, sizeof(cmd)); in ib_uverbs_ex_destroy_flow()
2960 if (cmd.comp_mask) in ib_uverbs_ex_destroy_flow()
2963 uobj = idr_write_uobj(&ib_uverbs_rule_idr, cmd.flow_handle, in ib_uverbs_ex_destroy_flow()
2987 struct ib_uverbs_create_xsrq *cmd, in __uverbs_create_xsrq() argument
3002 init_uobj(&obj->uevent.uobject, cmd->user_handle, file->ucontext, &srq_lock_class); in __uverbs_create_xsrq()
3005 if (cmd->srq_type == IB_SRQT_XRC) { in __uverbs_create_xsrq()
3006 attr.ext.xrc.xrcd = idr_read_xrcd(cmd->xrcd_handle, file->ucontext, &xrcd_uobj); in __uverbs_create_xsrq()
3015 attr.ext.xrc.cq = idr_read_cq(cmd->cq_handle, file->ucontext, 0); in __uverbs_create_xsrq()
3022 pd = idr_read_pd(cmd->pd_handle, file->ucontext); in __uverbs_create_xsrq()
3030 attr.srq_type = cmd->srq_type; in __uverbs_create_xsrq()
3031 attr.attr.max_wr = cmd->max_wr; in __uverbs_create_xsrq()
3032 attr.attr.max_sge = cmd->max_sge; in __uverbs_create_xsrq()
3033 attr.attr.srq_limit = cmd->srq_limit; in __uverbs_create_xsrq()
3046 srq->srq_type = cmd->srq_type; in __uverbs_create_xsrq()
3051 if (cmd->srq_type == IB_SRQT_XRC) { in __uverbs_create_xsrq()
3070 if (cmd->srq_type == IB_SRQT_XRC) in __uverbs_create_xsrq()
3073 if (copy_to_user((void __user *) (unsigned long) cmd->response, in __uverbs_create_xsrq()
3079 if (cmd->srq_type == IB_SRQT_XRC) { in __uverbs_create_xsrq()
3105 if (cmd->srq_type == IB_SRQT_XRC) in __uverbs_create_xsrq()
3109 if (cmd->srq_type == IB_SRQT_XRC) { in __uverbs_create_xsrq()
3123 struct ib_uverbs_create_srq cmd; in ib_uverbs_create_srq() local
3132 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_create_srq()
3135 xcmd.response = cmd.response; in ib_uverbs_create_srq()
3136 xcmd.user_handle = cmd.user_handle; in ib_uverbs_create_srq()
3138 xcmd.pd_handle = cmd.pd_handle; in ib_uverbs_create_srq()
3139 xcmd.max_wr = cmd.max_wr; in ib_uverbs_create_srq()
3140 xcmd.max_sge = cmd.max_sge; in ib_uverbs_create_srq()
3141 xcmd.srq_limit = cmd.srq_limit; in ib_uverbs_create_srq()
3143 INIT_UDATA(&udata, buf + sizeof cmd, in ib_uverbs_create_srq()
3144 (unsigned long) cmd.response + sizeof resp, in ib_uverbs_create_srq()
3145 in_len - sizeof cmd, out_len - sizeof resp); in ib_uverbs_create_srq()
3157 struct ib_uverbs_create_xsrq cmd; in ib_uverbs_create_xsrq() local
3165 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_create_xsrq()
3168 INIT_UDATA(&udata, buf + sizeof cmd, in ib_uverbs_create_xsrq()
3169 (unsigned long) cmd.response + sizeof resp, in ib_uverbs_create_xsrq()
3170 in_len - sizeof cmd, out_len - sizeof resp); in ib_uverbs_create_xsrq()
3172 ret = __uverbs_create_xsrq(file, &cmd, &udata); in ib_uverbs_create_xsrq()
3183 struct ib_uverbs_modify_srq cmd; in ib_uverbs_modify_srq() local
3189 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_modify_srq()
3192 INIT_UDATA(&udata, buf + sizeof cmd, NULL, in_len - sizeof cmd, in ib_uverbs_modify_srq()
3195 srq = idr_read_srq(cmd.srq_handle, file->ucontext); in ib_uverbs_modify_srq()
3199 attr.max_wr = cmd.max_wr; in ib_uverbs_modify_srq()
3200 attr.srq_limit = cmd.srq_limit; in ib_uverbs_modify_srq()
3202 ret = srq->device->modify_srq(srq, &attr, cmd.attr_mask, &udata); in ib_uverbs_modify_srq()
3213 struct ib_uverbs_query_srq cmd; in ib_uverbs_query_srq() local
3222 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_query_srq()
3225 srq = idr_read_srq(cmd.srq_handle, file->ucontext); in ib_uverbs_query_srq()
3242 if (copy_to_user((void __user *) (unsigned long) cmd.response, in ib_uverbs_query_srq()
3253 struct ib_uverbs_destroy_srq cmd; in ib_uverbs_destroy_srq() local
3262 if (copy_from_user(&cmd, buf, sizeof cmd)) in ib_uverbs_destroy_srq()
3265 uobj = idr_write_uobj(&ib_uverbs_srq_idr, cmd.srq_handle, file->ucontext); in ib_uverbs_destroy_srq()
3299 if (copy_to_user((void __user *) (unsigned long) cmd.response, in ib_uverbs_destroy_srq()
3311 struct ib_uverbs_ex_query_device cmd; in ib_uverbs_ex_query_device() local
3317 if (ucore->inlen < sizeof(cmd)) in ib_uverbs_ex_query_device()
3320 err = ib_copy_from_udata(&cmd, ucore, sizeof(cmd)); in ib_uverbs_ex_query_device()
3324 if (cmd.comp_mask) in ib_uverbs_ex_query_device()
3327 if (cmd.reserved) in ib_uverbs_ex_query_device()