Lines Matching full:req

10 static void nvmet_execute_prop_set(struct nvmet_req *req)  in nvmet_execute_prop_set()  argument
12 u64 val = le64_to_cpu(req->cmd->prop_set.value); in nvmet_execute_prop_set()
15 if (!nvmet_check_transfer_len(req, 0)) in nvmet_execute_prop_set()
18 if (req->cmd->prop_set.attrib & 1) { in nvmet_execute_prop_set()
19 req->error_loc = in nvmet_execute_prop_set()
25 switch (le32_to_cpu(req->cmd->prop_set.offset)) { in nvmet_execute_prop_set()
27 nvmet_update_cc(req->sq->ctrl, val); in nvmet_execute_prop_set()
30 req->error_loc = in nvmet_execute_prop_set()
35 nvmet_req_complete(req, status); in nvmet_execute_prop_set()
38 static void nvmet_execute_prop_get(struct nvmet_req *req) in nvmet_execute_prop_get() argument
40 struct nvmet_ctrl *ctrl = req->sq->ctrl; in nvmet_execute_prop_get()
44 if (!nvmet_check_transfer_len(req, 0)) in nvmet_execute_prop_get()
47 if (req->cmd->prop_get.attrib & 1) { in nvmet_execute_prop_get()
48 switch (le32_to_cpu(req->cmd->prop_get.offset)) { in nvmet_execute_prop_get()
57 switch (le32_to_cpu(req->cmd->prop_get.offset)) { in nvmet_execute_prop_get()
76 if (status && req->cmd->prop_get.attrib & 1) { in nvmet_execute_prop_get()
77 req->error_loc = in nvmet_execute_prop_get()
80 req->error_loc = in nvmet_execute_prop_get()
84 req->cqe->result.u64 = cpu_to_le64(val); in nvmet_execute_prop_get()
85 nvmet_req_complete(req, status); in nvmet_execute_prop_get()
88 u32 nvmet_fabrics_admin_cmd_data_len(struct nvmet_req *req) in nvmet_fabrics_admin_cmd_data_len() argument
90 struct nvme_command *cmd = req->cmd; in nvmet_fabrics_admin_cmd_data_len()
95 return nvmet_auth_send_data_len(req); in nvmet_fabrics_admin_cmd_data_len()
97 return nvmet_auth_receive_data_len(req); in nvmet_fabrics_admin_cmd_data_len()
104 u16 nvmet_parse_fabrics_admin_cmd(struct nvmet_req *req) in nvmet_parse_fabrics_admin_cmd() argument
106 struct nvme_command *cmd = req->cmd; in nvmet_parse_fabrics_admin_cmd()
110 req->execute = nvmet_execute_prop_set; in nvmet_parse_fabrics_admin_cmd()
113 req->execute = nvmet_execute_prop_get; in nvmet_parse_fabrics_admin_cmd()
117 req->execute = nvmet_execute_auth_send; in nvmet_parse_fabrics_admin_cmd()
120 req->execute = nvmet_execute_auth_receive; in nvmet_parse_fabrics_admin_cmd()
126 req->error_loc = offsetof(struct nvmf_common_command, fctype); in nvmet_parse_fabrics_admin_cmd()
133 u32 nvmet_fabrics_io_cmd_data_len(struct nvmet_req *req) in nvmet_fabrics_io_cmd_data_len() argument
135 struct nvme_command *cmd = req->cmd; in nvmet_fabrics_io_cmd_data_len()
140 return nvmet_auth_send_data_len(req); in nvmet_fabrics_io_cmd_data_len()
142 return nvmet_auth_receive_data_len(req); in nvmet_fabrics_io_cmd_data_len()
149 u16 nvmet_parse_fabrics_io_cmd(struct nvmet_req *req) in nvmet_parse_fabrics_io_cmd() argument
151 struct nvme_command *cmd = req->cmd; in nvmet_parse_fabrics_io_cmd()
156 req->execute = nvmet_execute_auth_send; in nvmet_parse_fabrics_io_cmd()
159 req->execute = nvmet_execute_auth_receive; in nvmet_parse_fabrics_io_cmd()
165 req->error_loc = offsetof(struct nvmf_common_command, fctype); in nvmet_parse_fabrics_io_cmd()
172 static u16 nvmet_install_queue(struct nvmet_ctrl *ctrl, struct nvmet_req *req) in nvmet_install_queue() argument
174 struct nvmf_connect_command *c = &req->cmd->connect; in nvmet_install_queue()
183 req->error_loc = offsetof(struct nvmf_connect_command, sqsize); in nvmet_install_queue()
184 req->cqe->result.u32 = IPO_IATTR_CONNECT_SQE(sqsize); in nvmet_install_queue()
191 req->error_loc = offsetof(struct nvmf_connect_command, qid); in nvmet_install_queue()
199 req->error_loc = offsetof(struct nvmf_connect_command, sqsize); in nvmet_install_queue()
200 req->cqe->result.u32 = IPO_IATTR_CONNECT_SQE(sqsize); in nvmet_install_queue()
204 old = cmpxchg(&req->sq->ctrl, NULL, ctrl); in nvmet_install_queue()
207 req->error_loc = offsetof(struct nvmf_connect_command, opcode); in nvmet_install_queue()
212 nvmet_cq_setup(ctrl, req->cq, qid, sqsize + 1); in nvmet_install_queue()
213 nvmet_sq_setup(ctrl, req->sq, qid, sqsize + 1); in nvmet_install_queue()
216 req->sq->sqhd_disabled = true; in nvmet_install_queue()
217 req->cqe->sq_head = cpu_to_le16(0xffff); in nvmet_install_queue()
221 ret = ctrl->ops->install_queue(req->sq); in nvmet_install_queue()
233 req->sq->ctrl = NULL; in nvmet_install_queue()
243 static void nvmet_execute_admin_connect(struct nvmet_req *req) in nvmet_execute_admin_connect() argument
245 struct nvmf_connect_command *c = &req->cmd->connect; in nvmet_execute_admin_connect()
249 .port = req->port, in nvmet_execute_admin_connect()
250 .ops = req->ops, in nvmet_execute_admin_connect()
251 .p2p_client = req->p2p_client, in nvmet_execute_admin_connect()
255 if (!nvmet_check_transfer_len(req, sizeof(struct nvmf_connect_data))) in nvmet_execute_admin_connect()
264 args.status = nvmet_copy_from_sgl(req, 0, d, sizeof(*d)); in nvmet_execute_admin_connect()
296 args.status = nvmet_install_queue(ctrl, req); in nvmet_execute_admin_connect()
306 req->error_loc = args.error_loc; in nvmet_execute_admin_connect()
307 req->cqe->result.u32 = args.result; in nvmet_execute_admin_connect()
308 nvmet_req_complete(req, args.status); in nvmet_execute_admin_connect()
311 static void nvmet_execute_io_connect(struct nvmet_req *req) in nvmet_execute_io_connect() argument
313 struct nvmf_connect_command *c = &req->cmd->connect; in nvmet_execute_io_connect()
319 if (!nvmet_check_transfer_len(req, sizeof(struct nvmf_connect_data))) in nvmet_execute_io_connect()
328 status = nvmet_copy_from_sgl(req, 0, d, sizeof(*d)); in nvmet_execute_io_connect()
342 le16_to_cpu(d->cntlid), req); in nvmet_execute_io_connect()
351 req->cqe->result.u32 = IPO_IATTR_CONNECT_SQE(qid); in nvmet_execute_io_connect()
355 status = nvmet_install_queue(ctrl, req); in nvmet_execute_io_connect()
360 req->cqe->result.u32 = cpu_to_le32(nvmet_connect_result(ctrl)); in nvmet_execute_io_connect()
364 nvmet_req_complete(req, status); in nvmet_execute_io_connect()
372 u32 nvmet_connect_cmd_data_len(struct nvmet_req *req) in nvmet_connect_cmd_data_len() argument
374 struct nvme_command *cmd = req->cmd; in nvmet_connect_cmd_data_len()
383 u16 nvmet_parse_connect_cmd(struct nvmet_req *req) in nvmet_parse_connect_cmd() argument
385 struct nvme_command *cmd = req->cmd; in nvmet_parse_connect_cmd()
390 req->error_loc = offsetof(struct nvme_common_command, opcode); in nvmet_parse_connect_cmd()
396 req->error_loc = offsetof(struct nvmf_common_command, fctype); in nvmet_parse_connect_cmd()
401 req->execute = nvmet_execute_admin_connect; in nvmet_parse_connect_cmd()
403 req->execute = nvmet_execute_io_connect; in nvmet_parse_connect_cmd()