Lines Matching refs:evt_struct
594 static void init_event_struct(struct srp_event_struct *evt_struct, in init_event_struct() argument
599 evt_struct->cmnd = NULL; in init_event_struct()
600 evt_struct->cmnd_done = NULL; in init_event_struct()
601 evt_struct->sync_srp = NULL; in init_event_struct()
602 evt_struct->crq.format = format; in init_event_struct()
603 evt_struct->crq.timeout = cpu_to_be16(timeout); in init_event_struct()
604 evt_struct->done = done; in init_event_struct()
650 struct srp_event_struct *evt_struct, in unmap_cmd_data() argument
661 if (evt_struct->cmnd) in unmap_cmd_data()
662 scsi_dma_unmap(evt_struct->cmnd); in unmap_cmd_data()
692 struct srp_event_struct *evt_struct, in map_sg_data() argument
730 if (!evt_struct->ext_list) { in map_sg_data()
731 evt_struct->ext_list = (struct srp_direct_buf *) in map_sg_data()
734 &evt_struct->ext_list_token, 0); in map_sg_data()
735 if (!evt_struct->ext_list) { in map_sg_data()
745 total_length = map_sg_list(cmd, sg_mapped, evt_struct->ext_list); in map_sg_data()
748 indirect->table_desc.va = cpu_to_be64(evt_struct->ext_list_token); in map_sg_data()
751 memcpy(indirect->desc_list, evt_struct->ext_list, in map_sg_data()
766 struct srp_event_struct *evt_struct, in map_data_for_srp_cmd() argument
786 return map_sg_data(cmd, evt_struct, srp_cmd, dev); in map_data_for_srp_cmd()
842 struct srp_event_struct *evt_struct = from_timer(evt_struct, t, timer); in ibmvscsi_timeout() local
843 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata; in ibmvscsi_timeout()
846 evt_struct->iu.srp.cmd.opcode); in ibmvscsi_timeout()
864 static int ibmvscsi_send_srp_event(struct srp_event_struct *evt_struct, in ibmvscsi_send_srp_event() argument
868 __be64 *crq_as_u64 = (__be64 *)&evt_struct->crq; in ibmvscsi_send_srp_event()
879 if (evt_struct->crq.format == VIOSRP_SRP_FORMAT) { in ibmvscsi_send_srp_event()
894 evt_struct->iu.srp.login_req.opcode != SRP_LOGIN_REQ) in ibmvscsi_send_srp_event()
901 evt_struct->iu.srp.cmd.opcode != SRP_TSK_MGMT) { in ibmvscsi_send_srp_event()
922 *evt_struct->xfer_iu = evt_struct->iu; in ibmvscsi_send_srp_event()
923 evt_struct->xfer_iu->srp.rsp.tag = (u64)evt_struct; in ibmvscsi_send_srp_event()
929 list_add_tail(&evt_struct->list, &hostdata->sent); in ibmvscsi_send_srp_event()
931 timer_setup(&evt_struct->timer, ibmvscsi_timeout, 0); in ibmvscsi_send_srp_event()
933 evt_struct->timer.expires = jiffies + (timeout * HZ); in ibmvscsi_send_srp_event()
934 add_timer(&evt_struct->timer); in ibmvscsi_send_srp_event()
940 list_del(&evt_struct->list); in ibmvscsi_send_srp_event()
941 del_timer(&evt_struct->timer); in ibmvscsi_send_srp_event()
962 unmap_cmd_data(&evt_struct->iu.srp.cmd, evt_struct, hostdata->dev); in ibmvscsi_send_srp_event()
964 free_event_struct(&hostdata->pool, evt_struct); in ibmvscsi_send_srp_event()
970 unmap_cmd_data(&evt_struct->iu.srp.cmd, evt_struct, hostdata->dev); in ibmvscsi_send_srp_event()
972 if (evt_struct->cmnd != NULL) { in ibmvscsi_send_srp_event()
973 evt_struct->cmnd->result = DID_ERROR << 16; in ibmvscsi_send_srp_event()
974 evt_struct->cmnd_done(evt_struct->cmnd); in ibmvscsi_send_srp_event()
975 } else if (evt_struct->done) in ibmvscsi_send_srp_event()
976 evt_struct->done(evt_struct); in ibmvscsi_send_srp_event()
978 free_event_struct(&hostdata->pool, evt_struct); in ibmvscsi_send_srp_event()
989 static void handle_cmd_rsp(struct srp_event_struct *evt_struct) in handle_cmd_rsp() argument
991 struct srp_rsp *rsp = &evt_struct->xfer_iu->srp.rsp; in handle_cmd_rsp()
992 struct scsi_cmnd *cmnd = evt_struct->cmnd; in handle_cmd_rsp()
996 dev_warn(evt_struct->hostdata->dev, in handle_cmd_rsp()
1006 unmap_cmd_data(&evt_struct->iu.srp.cmd, in handle_cmd_rsp()
1007 evt_struct, in handle_cmd_rsp()
1008 evt_struct->hostdata->dev); in handle_cmd_rsp()
1017 if (evt_struct->cmnd_done) in handle_cmd_rsp()
1018 evt_struct->cmnd_done(cmnd); in handle_cmd_rsp()
1040 struct srp_event_struct *evt_struct; in ibmvscsi_queuecommand_lck() local
1047 evt_struct = get_event_struct(&hostdata->pool); in ibmvscsi_queuecommand_lck()
1048 if (!evt_struct) in ibmvscsi_queuecommand_lck()
1052 srp_cmd = &evt_struct->iu.srp.cmd; in ibmvscsi_queuecommand_lck()
1058 if (!map_data_for_srp_cmd(cmnd, evt_struct, srp_cmd, hostdata->dev)) { in ibmvscsi_queuecommand_lck()
1062 free_event_struct(&hostdata->pool, evt_struct); in ibmvscsi_queuecommand_lck()
1066 init_event_struct(evt_struct, in ibmvscsi_queuecommand_lck()
1071 evt_struct->cmnd = cmnd; in ibmvscsi_queuecommand_lck()
1072 evt_struct->cmnd_done = done; in ibmvscsi_queuecommand_lck()
1082 cpu_to_be64(be64_to_cpu(evt_struct->crq.IU_data_ptr) + in ibmvscsi_queuecommand_lck()
1087 return ibmvscsi_send_srp_event(evt_struct, hostdata, 0); in ibmvscsi_queuecommand_lck()
1150 static void login_rsp(struct srp_event_struct *evt_struct) in login_rsp() argument
1152 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata; in login_rsp()
1153 switch (evt_struct->xfer_iu->srp.login_rsp.opcode) { in login_rsp()
1158 evt_struct->xfer_iu->srp.login_rej.reason); in login_rsp()
1164 evt_struct->xfer_iu->srp.login_rsp.opcode); in login_rsp()
1178 be32_to_cpu(evt_struct->xfer_iu->srp.login_rsp.req_lim_delta)); in login_rsp()
1195 struct srp_event_struct *evt_struct = get_event_struct(&hostdata->pool); in send_srp_login() local
1197 BUG_ON(!evt_struct); in send_srp_login()
1198 init_event_struct(evt_struct, login_rsp, in send_srp_login()
1201 login = &evt_struct->iu.srp.login_req; in send_srp_login()
1215 rc = ibmvscsi_send_srp_event(evt_struct, hostdata, login_timeout * 2); in send_srp_login()
1227 static void capabilities_rsp(struct srp_event_struct *evt_struct) in capabilities_rsp() argument
1229 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata; in capabilities_rsp()
1231 if (evt_struct->xfer_iu->mad.capabilities.common.status) { in capabilities_rsp()
1233 evt_struct->xfer_iu->mad.capabilities.common.status); in capabilities_rsp()
1259 struct srp_event_struct *evt_struct; in send_mad_capabilities() local
1264 evt_struct = get_event_struct(&hostdata->pool); in send_mad_capabilities()
1265 BUG_ON(!evt_struct); in send_mad_capabilities()
1267 init_event_struct(evt_struct, capabilities_rsp, in send_mad_capabilities()
1270 req = &evt_struct->iu.mad.capabilities; in send_mad_capabilities()
1311 if (ibmvscsi_send_srp_event(evt_struct, hostdata, info_timeout * 2)) in send_mad_capabilities()
1323 static void fast_fail_rsp(struct srp_event_struct *evt_struct) in fast_fail_rsp() argument
1325 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata; in fast_fail_rsp()
1326 u16 status = be16_to_cpu(evt_struct->xfer_iu->mad.fast_fail.common.status); in fast_fail_rsp()
1349 struct srp_event_struct *evt_struct; in enable_fast_fail() local
1356 evt_struct = get_event_struct(&hostdata->pool); in enable_fast_fail()
1357 BUG_ON(!evt_struct); in enable_fast_fail()
1359 init_event_struct(evt_struct, fast_fail_rsp, VIOSRP_MAD_FORMAT, info_timeout); in enable_fast_fail()
1361 fast_fail_mad = &evt_struct->iu.mad.fast_fail; in enable_fast_fail()
1367 rc = ibmvscsi_send_srp_event(evt_struct, hostdata, info_timeout * 2); in enable_fast_fail()
1379 static void adapter_info_rsp(struct srp_event_struct *evt_struct) in adapter_info_rsp() argument
1381 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata; in adapter_info_rsp()
1383 if (evt_struct->xfer_iu->mad.adapter_info.common.status) { in adapter_info_rsp()
1385 evt_struct->xfer_iu->mad.adapter_info.common.status); in adapter_info_rsp()
1429 struct srp_event_struct *evt_struct; in send_mad_adapter_info() local
1432 evt_struct = get_event_struct(&hostdata->pool); in send_mad_adapter_info()
1433 BUG_ON(!evt_struct); in send_mad_adapter_info()
1435 init_event_struct(evt_struct, in send_mad_adapter_info()
1440 req = &evt_struct->iu.mad.adapter_info; in send_mad_adapter_info()
1448 if (ibmvscsi_send_srp_event(evt_struct, hostdata, info_timeout * 2)) in send_mad_adapter_info()
1468 static void sync_completion(struct srp_event_struct *evt_struct) in sync_completion() argument
1471 if (evt_struct->sync_srp) in sync_completion()
1472 *evt_struct->sync_srp = *evt_struct->xfer_iu; in sync_completion()
1474 complete(&evt_struct->comp); in sync_completion()
1765 struct srp_event_struct *evt_struct = in ibmvscsi_handle_crq() local
1820 if (!valid_event_struct(&hostdata->pool, evt_struct)) { in ibmvscsi_handle_crq()
1822 evt_struct); in ibmvscsi_handle_crq()
1826 if (atomic_read(&evt_struct->free)) { in ibmvscsi_handle_crq()
1828 evt_struct); in ibmvscsi_handle_crq()
1833 atomic_add(be32_to_cpu(evt_struct->xfer_iu->srp.rsp.req_lim_delta), in ibmvscsi_handle_crq()
1836 del_timer(&evt_struct->timer); in ibmvscsi_handle_crq()
1838 if ((crq->status != VIOSRP_OK && crq->status != VIOSRP_OK2) && evt_struct->cmnd) in ibmvscsi_handle_crq()
1839 evt_struct->cmnd->result = DID_ERROR << 16; in ibmvscsi_handle_crq()
1840 if (evt_struct->done) in ibmvscsi_handle_crq()
1841 evt_struct->done(evt_struct); in ibmvscsi_handle_crq()
1849 spin_lock_irqsave(evt_struct->hostdata->host->host_lock, flags); in ibmvscsi_handle_crq()
1850 list_del(&evt_struct->list); in ibmvscsi_handle_crq()
1851 free_event_struct(&evt_struct->hostdata->pool, evt_struct); in ibmvscsi_handle_crq()
1852 spin_unlock_irqrestore(evt_struct->hostdata->host->host_lock, flags); in ibmvscsi_handle_crq()