Lines Matching refs:cmd

926 					 struct ibmvscsis_cmd *cmd)  in ibmvscsis_free_cmd_resources()  argument
928 struct iu_entry *iue = cmd->iue; in ibmvscsis_free_cmd_resources()
930 switch (cmd->type) { in ibmvscsis_free_cmd_resources()
947 cmd->type); in ibmvscsis_free_cmd_resources()
951 cmd->iue = NULL; in ibmvscsis_free_cmd_resources()
952 list_add_tail(&cmd->list, &vscsi->free_cmd); in ibmvscsis_free_cmd_resources()
1256 struct ibmvscsis_cmd *cmd, *nxt; in ibmvscsis_free_cmd_qs() local
1262 list_for_each_entry_safe(cmd, nxt, &vscsi->waiting_rsp, list) { in ibmvscsis_free_cmd_qs()
1263 list_del(&cmd->list); in ibmvscsis_free_cmd_qs()
1264 ibmvscsis_free_cmd_resources(vscsi, cmd); in ibmvscsis_free_cmd_qs()
1276 struct ibmvscsis_cmd *cmd = NULL; in ibmvscsis_get_free_cmd() local
1281 cmd = list_first_entry_or_null(&vscsi->free_cmd, in ibmvscsis_get_free_cmd()
1283 if (cmd) { in ibmvscsis_get_free_cmd()
1284 if (cmd->abort_cmd) in ibmvscsis_get_free_cmd()
1285 cmd->abort_cmd = NULL; in ibmvscsis_get_free_cmd()
1286 cmd->flags &= ~(DELAY_SEND); in ibmvscsis_get_free_cmd()
1287 list_del(&cmd->list); in ibmvscsis_get_free_cmd()
1288 cmd->iue = iue; in ibmvscsis_get_free_cmd()
1289 cmd->type = UNSET_TYPE; in ibmvscsis_get_free_cmd()
1290 memset(&cmd->se_cmd, 0, sizeof(cmd->se_cmd)); in ibmvscsis_get_free_cmd()
1296 return cmd; in ibmvscsis_get_free_cmd()
1442 struct ibmvscsis_cmd *cmd, in ibmvscsis_copy_crq_packet() argument
1445 struct iu_entry *iue = cmd->iue; in ibmvscsis_copy_crq_packet()
1462 cmd->init_time = mftb(); in ibmvscsis_copy_crq_packet()
1466 be64_to_cpu(crq->IU_data_ptr), cmd->init_time); in ibmvscsis_copy_crq_packet()
1877 struct ibmvscsis_cmd *cmd, *nxt; in ibmvscsis_send_messages() local
1884 list_for_each_entry_safe(cmd, nxt, &vscsi->waiting_rsp, in ibmvscsis_send_messages()
1890 if (cmd->flags & DELAY_SEND) in ibmvscsis_send_messages()
1893 if (cmd->abort_cmd) { in ibmvscsis_send_messages()
1895 cmd->abort_cmd->flags &= ~(DELAY_SEND); in ibmvscsis_send_messages()
1896 cmd->abort_cmd = NULL; in ibmvscsis_send_messages()
1906 if (cmd->se_cmd.transport_state & CMD_T_ABORTED && in ibmvscsis_send_messages()
1907 !(cmd->se_cmd.transport_state & CMD_T_TAS)) { in ibmvscsis_send_messages()
1908 list_del(&cmd->list); in ibmvscsis_send_messages()
1910 cmd); in ibmvscsis_send_messages()
1932 crq->format = cmd->rsp.format; in ibmvscsis_send_messages()
1934 if (cmd->flags & CMD_FAST_FAIL) in ibmvscsis_send_messages()
1937 crq->IU_length = cpu_to_be16(cmd->rsp.len); in ibmvscsis_send_messages()
1941 be64_to_cpu(cmd->rsp.tag)); in ibmvscsis_send_messages()
1944 cmd, be64_to_cpu(cmd->rsp.tag), in ibmvscsis_send_messages()
1953 list_del(&cmd->list); in ibmvscsis_send_messages()
1956 cmd); in ibmvscsis_send_messages()
1980 struct ibmvscsis_cmd *cmd, in ibmvscsis_send_mad_resp() argument
1983 struct iu_entry *iue = cmd->iue; in ibmvscsis_send_mad_resp()
1994 cmd->rsp.format = VIOSRP_MAD_FORMAT; in ibmvscsis_send_mad_resp()
1995 cmd->rsp.len = sizeof(struct mad_common); in ibmvscsis_send_mad_resp()
1996 cmd->rsp.tag = mad->tag; in ibmvscsis_send_mad_resp()
1997 list_add_tail(&cmd->list, &vscsi->waiting_rsp); in ibmvscsis_send_mad_resp()
2009 ibmvscsis_free_cmd_resources(vscsi, cmd); in ibmvscsis_send_mad_resp()
2026 struct ibmvscsis_cmd *cmd; in ibmvscsis_mad() local
2059 cmd = ibmvscsis_get_free_cmd(vscsi); in ibmvscsis_mad()
2060 if (!cmd) { in ibmvscsis_mad()
2066 iue = cmd->iue; in ibmvscsis_mad()
2067 cmd->type = ADAPTER_MAD; in ibmvscsis_mad()
2069 rc = ibmvscsis_copy_crq_packet(vscsi, cmd, crq); in ibmvscsis_mad()
2081 ibmvscsis_send_mad_resp(vscsi, cmd, crq); in ibmvscsis_mad()
2083 ibmvscsis_free_cmd_resources(vscsi, cmd); in ibmvscsis_mad()
2099 struct ibmvscsis_cmd *cmd) in ibmvscsis_login_rsp() argument
2101 struct iu_entry *iue = cmd->iue; in ibmvscsis_login_rsp()
2111 rsp->tag = cmd->rsp.tag; in ibmvscsis_login_rsp()
2118 cmd->rsp.len = sizeof(struct srp_login_rsp); in ibmvscsis_login_rsp()
2121 rc = h_copy_rdma(cmd->rsp.len, vscsi->dds.window[LOCAL].liobn, in ibmvscsis_login_rsp()
2159 struct ibmvscsis_cmd *cmd, u32 reason) in ibmvscsis_srp_login_rej() argument
2161 struct iu_entry *iue = cmd->iue; in ibmvscsis_srp_login_rej()
2171 rej->tag = cmd->rsp.tag; in ibmvscsis_srp_login_rej()
2175 cmd->rsp.len = sizeof(*rej); in ibmvscsis_srp_login_rej()
2178 rc = h_copy_rdma(cmd->rsp.len, vscsi->dds.window[LOCAL].liobn, in ibmvscsis_srp_login_rej()
2273 struct ibmvscsis_cmd *cmd, in ibmvscsis_srp_login() argument
2276 struct iu_entry *iue = cmd->iue; in ibmvscsis_srp_login()
2310 cmd->rsp.format = VIOSRP_SRP_FORMAT; in ibmvscsis_srp_login()
2311 cmd->rsp.tag = req->tag; in ibmvscsis_srp_login()
2316 rc = ibmvscsis_srp_login_rej(vscsi, cmd, reason); in ibmvscsis_srp_login()
2318 rc = ibmvscsis_login_rsp(vscsi, cmd); in ibmvscsis_srp_login()
2324 list_add_tail(&cmd->list, &vscsi->waiting_rsp); in ibmvscsis_srp_login()
2327 ibmvscsis_free_cmd_resources(vscsi, cmd); in ibmvscsis_srp_login()
2347 struct ibmvscsis_cmd *cmd, in ibmvscsis_srp_i_logout() argument
2350 struct iu_entry *iue = cmd->iue; in ibmvscsis_srp_i_logout()
2358 cmd->rsp.format = SRP_FORMAT; in ibmvscsis_srp_i_logout()
2359 cmd->rsp.tag = log_out->tag; in ibmvscsis_srp_i_logout()
2360 cmd->rsp.len = sizeof(struct mad_common); in ibmvscsis_srp_i_logout()
2361 list_add_tail(&cmd->list, &vscsi->waiting_rsp); in ibmvscsis_srp_i_logout()
2373 struct ibmvscsis_cmd *cmd; in ibmvscsis_srp_cmd() local
2387 cmd = ibmvscsis_get_free_cmd(vscsi); in ibmvscsis_srp_cmd()
2388 if (!cmd) { in ibmvscsis_srp_cmd()
2394 iue = cmd->iue; in ibmvscsis_srp_cmd()
2395 srp = &vio_iu(iue)->srp.cmd; in ibmvscsis_srp_cmd()
2397 rc = ibmvscsis_copy_crq_packet(vscsi, cmd, crq); in ibmvscsis_srp_cmd()
2399 ibmvscsis_free_cmd_resources(vscsi, cmd); in ibmvscsis_srp_cmd()
2406 rc = ibmvscsis_srp_login(vscsi, cmd, crq); in ibmvscsis_srp_cmd()
2413 cmd->rsp.tag = tsk->tag; in ibmvscsis_srp_cmd()
2415 cmd->type = TASK_MANAGEMENT; in ibmvscsis_srp_cmd()
2416 list_add_tail(&cmd->list, &vscsi->schedule_q); in ibmvscsis_srp_cmd()
2417 queue_work(vscsi->work_q, &cmd->work); in ibmvscsis_srp_cmd()
2423 cmd->rsp.tag = srp->tag; in ibmvscsis_srp_cmd()
2425 cmd->type = SCSI_CDB; in ibmvscsis_srp_cmd()
2430 list_add_tail(&cmd->list, &vscsi->schedule_q); in ibmvscsis_srp_cmd()
2431 queue_work(vscsi->work_q, &cmd->work); in ibmvscsis_srp_cmd()
2435 rc = ibmvscsis_srp_i_logout(vscsi, cmd, crq); in ibmvscsis_srp_cmd()
2441 ibmvscsis_free_cmd_resources(vscsi, cmd); in ibmvscsis_srp_cmd()
2449 rc = ibmvscsis_srp_login(vscsi, cmd, crq); in ibmvscsis_srp_cmd()
2451 ibmvscsis_free_cmd_resources(vscsi, cmd); in ibmvscsis_srp_cmd()
2663 struct ibmvscsis_cmd *cmd) in ibmvscsis_parse_cmd() argument
2665 struct iu_entry *iue = cmd->iue; in ibmvscsis_parse_cmd()
2685 ibmvscsis_free_cmd_resources(vscsi, cmd); in ibmvscsis_parse_cmd()
2696 cmd->rsp.sol_not = srp->sol_not; in ibmvscsis_parse_cmd()
2717 cmd->se_cmd.tag = be64_to_cpu(srp->tag); in ibmvscsis_parse_cmd()
2720 list_add_tail(&cmd->list, &vscsi->active_q); in ibmvscsis_parse_cmd()
2725 target_submit_cmd(&cmd->se_cmd, nexus->se_sess, srp->cdb, in ibmvscsis_parse_cmd()
2726 cmd->sense_buf, scsilun_to_int(&srp->lun), in ibmvscsis_parse_cmd()
2749 struct ibmvscsis_cmd *cmd) in ibmvscsis_parse_task() argument
2751 struct iu_entry *iue = cmd->iue; in ibmvscsis_parse_task()
2760 cmd->rsp.sol_not = srp_tsk->sol_not; in ibmvscsis_parse_task()
2782 cmd->se_cmd.se_tmr_req->response = in ibmvscsis_parse_task()
2789 cmd->se_cmd.tag = be64_to_cpu(srp_tsk->tag); in ibmvscsis_parse_task()
2792 list_add_tail(&cmd->list, &vscsi->active_q); in ibmvscsis_parse_task()
2799 rc = target_submit_tmr(&cmd->se_cmd, nexus->se_sess, NULL, in ibmvscsis_parse_task()
2806 list_del(&cmd->list); in ibmvscsis_parse_task()
2808 cmd->se_cmd.se_tmr_req->response = in ibmvscsis_parse_task()
2814 transport_send_check_condition_and_sense(&cmd->se_cmd, 0, 0); in ibmvscsis_parse_task()
2819 struct ibmvscsis_cmd *cmd = container_of(work, struct ibmvscsis_cmd, in ibmvscsis_scheduler() local
2821 struct scsi_info *vscsi = cmd->adapter; in ibmvscsis_scheduler()
2826 list_del(&cmd->list); in ibmvscsis_scheduler()
2830 ibmvscsis_free_cmd_resources(vscsi, cmd); in ibmvscsis_scheduler()
2846 switch (cmd->type) { in ibmvscsis_scheduler()
2848 ibmvscsis_parse_cmd(vscsi, cmd); in ibmvscsis_scheduler()
2851 ibmvscsis_parse_task(vscsi, cmd); in ibmvscsis_scheduler()
2855 cmd->type); in ibmvscsis_scheduler()
2857 ibmvscsis_free_cmd_resources(vscsi, cmd); in ibmvscsis_scheduler()
2865 struct ibmvscsis_cmd *cmd; in ibmvscsis_alloc_cmds() local
2874 for (i = 0, cmd = (struct ibmvscsis_cmd *)vscsi->cmd_pool; i < num; in ibmvscsis_alloc_cmds()
2875 i++, cmd++) { in ibmvscsis_alloc_cmds()
2876 cmd->abort_cmd = NULL; in ibmvscsis_alloc_cmds()
2877 cmd->adapter = vscsi; in ibmvscsis_alloc_cmds()
2878 INIT_WORK(&cmd->work, ibmvscsis_scheduler); in ibmvscsis_alloc_cmds()
2879 list_add_tail(&cmd->list, &vscsi->free_cmd); in ibmvscsis_alloc_cmds()
3044 struct ibmvscsis_cmd *cmd) in ibmvscsis_fast_fail() argument
3046 struct iu_entry *iue = cmd->iue; in ibmvscsis_fast_fail()
3047 struct se_cmd *se_cmd = &cmd->se_cmd; in ibmvscsis_fast_fail()
3059 cmd->flags |= CMD_FAST_FAIL; in ibmvscsis_fast_fail()
3075 struct ibmvscsis_cmd *cmd, uint *len_p) in srp_build_response() argument
3077 struct iu_entry *iue = cmd->iue; in srp_build_response()
3078 struct se_cmd *se_cmd = &cmd->se_cmd; in srp_build_response()
3096 rsp->tag = cmd->rsp.tag; in srp_build_response()
3099 if (cmd->type == SCSI_CDB) { in srp_build_response()
3100 rsp->status = ibmvscsis_fast_fail(vscsi, cmd); in srp_build_response()
3103 cmd, (int)rsp->status); in srp_build_response()
3113 rsp->sol_not = (cmd->rsp.sol_not & UCSOLNT) >> in srp_build_response()
3115 } else if (cmd->flags & CMD_FAST_FAIL) { in srp_build_response()
3117 cmd); in srp_build_response()
3118 rsp->sol_not = (cmd->rsp.sol_not & UCSOLNT) >> in srp_build_response()
3121 rsp->sol_not = (cmd->rsp.sol_not & SCSOLNT) >> in srp_build_response()
3134 rsp->sol_not = (cmd->rsp.sol_not & SCSOLNT) >> in srp_build_response()
3140 rsp->sol_not = (cmd->rsp.sol_not & UCSOLNT) >> in srp_build_response()
3147 rsp->sol_not = (cmd->rsp.sol_not & UCSOLNT) >> in srp_build_response()
3188 static int ibmvscsis_rdma(struct ibmvscsis_cmd *cmd, struct scatterlist *sg, in ibmvscsis_rdma() argument
3192 struct iu_entry *iue = cmd->iue; in ibmvscsis_rdma()
3708 struct ibmvscsis_cmd *cmd = container_of(se_cmd, struct ibmvscsis_cmd, in ibmvscsis_release_cmd() local
3710 struct scsi_info *vscsi = cmd->adapter; in ibmvscsis_release_cmd()
3714 list_move_tail(&cmd->list, &vscsi->waiting_rsp); in ibmvscsis_release_cmd()
3721 struct ibmvscsis_cmd *cmd = container_of(se_cmd, struct ibmvscsis_cmd, in ibmvscsis_write_pending() local
3723 struct scsi_info *vscsi = cmd->adapter; in ibmvscsis_write_pending()
3724 struct iu_entry *iue = cmd->iue; in ibmvscsis_write_pending()
3739 rc = srp_transfer_data(cmd, &vio_iu(iue)->srp.cmd, ibmvscsis_rdma, in ibmvscsis_write_pending()
3755 struct ibmvscsis_cmd *cmd = container_of(se_cmd, struct ibmvscsis_cmd, in ibmvscsis_queue_data_in() local
3757 struct iu_entry *iue = cmd->iue; in ibmvscsis_queue_data_in()
3758 struct scsi_info *vscsi = cmd->adapter; in ibmvscsis_queue_data_in()
3762 rc = srp_transfer_data(cmd, &vio_iu(iue)->srp.cmd, ibmvscsis_rdma, 1, in ibmvscsis_queue_data_in()
3773 srp_build_response(vscsi, cmd, &len); in ibmvscsis_queue_data_in()
3774 cmd->rsp.format = SRP_FORMAT; in ibmvscsis_queue_data_in()
3775 cmd->rsp.len = len; in ibmvscsis_queue_data_in()
3782 struct ibmvscsis_cmd *cmd = container_of(se_cmd, struct ibmvscsis_cmd, in ibmvscsis_queue_status() local
3784 struct scsi_info *vscsi = cmd->adapter; in ibmvscsis_queue_status()
3789 srp_build_response(vscsi, cmd, &len); in ibmvscsis_queue_status()
3790 cmd->rsp.format = SRP_FORMAT; in ibmvscsis_queue_status()
3791 cmd->rsp.len = len; in ibmvscsis_queue_status()
3798 struct ibmvscsis_cmd *cmd = container_of(se_cmd, struct ibmvscsis_cmd, in ibmvscsis_queue_tm_rsp() local
3800 struct scsi_info *vscsi = cmd->adapter; in ibmvscsis_queue_tm_rsp()
3802 struct iu_entry *iue = iue = cmd->iue; in ibmvscsis_queue_tm_rsp()
3811 cmd->se_cmd.se_tmr_req->response == TMR_TASK_DOES_NOT_EXIST) { in ibmvscsis_queue_tm_rsp()
3815 cmd_itr->abort_cmd = cmd; in ibmvscsis_queue_tm_rsp()
3816 cmd->flags |= DELAY_SEND; in ibmvscsis_queue_tm_rsp()
3823 srp_build_response(vscsi, cmd, &len); in ibmvscsis_queue_tm_rsp()
3824 cmd->rsp.format = SRP_FORMAT; in ibmvscsis_queue_tm_rsp()
3825 cmd->rsp.len = len; in ibmvscsis_queue_tm_rsp()
3830 struct ibmvscsis_cmd *cmd = container_of(se_cmd, struct ibmvscsis_cmd, in ibmvscsis_aborted_task() local
3832 struct scsi_info *vscsi = cmd->adapter; in ibmvscsis_aborted_task()