Lines Matching refs:evt_struct
583 static void init_event_struct(struct srp_event_struct *evt_struct, in init_event_struct() argument
588 evt_struct->cmnd = NULL; in init_event_struct()
589 evt_struct->cmnd_done = NULL; in init_event_struct()
590 evt_struct->sync_srp = NULL; in init_event_struct()
591 evt_struct->crq.format = format; in init_event_struct()
592 evt_struct->crq.timeout = cpu_to_be16(timeout); in init_event_struct()
593 evt_struct->done = done; in init_event_struct()
639 struct srp_event_struct *evt_struct, in unmap_cmd_data() argument
650 if (evt_struct->cmnd) in unmap_cmd_data()
651 scsi_dma_unmap(evt_struct->cmnd); in unmap_cmd_data()
681 struct srp_event_struct *evt_struct, in map_sg_data() argument
719 if (!evt_struct->ext_list) { in map_sg_data()
720 evt_struct->ext_list = (struct srp_direct_buf *) in map_sg_data()
723 &evt_struct->ext_list_token, 0); in map_sg_data()
724 if (!evt_struct->ext_list) { in map_sg_data()
734 total_length = map_sg_list(cmd, sg_mapped, evt_struct->ext_list); in map_sg_data()
737 indirect->table_desc.va = cpu_to_be64(evt_struct->ext_list_token); in map_sg_data()
740 memcpy(indirect->desc_list, evt_struct->ext_list, in map_sg_data()
755 struct srp_event_struct *evt_struct, in map_data_for_srp_cmd() argument
775 return map_sg_data(cmd, evt_struct, srp_cmd, dev); in map_data_for_srp_cmd()
847 struct srp_event_struct *evt_struct = from_timer(evt_struct, t, timer); in ibmvscsi_timeout() local
848 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata; in ibmvscsi_timeout()
851 evt_struct->iu.srp.cmd.opcode); in ibmvscsi_timeout()
869 static int ibmvscsi_send_srp_event(struct srp_event_struct *evt_struct, in ibmvscsi_send_srp_event() argument
873 __be64 *crq_as_u64 = (__be64 *)&evt_struct->crq; in ibmvscsi_send_srp_event()
884 if (evt_struct->crq.format == VIOSRP_SRP_FORMAT) { in ibmvscsi_send_srp_event()
899 evt_struct->iu.srp.login_req.opcode != SRP_LOGIN_REQ) in ibmvscsi_send_srp_event()
906 evt_struct->iu.srp.cmd.opcode != SRP_TSK_MGMT) { in ibmvscsi_send_srp_event()
927 *evt_struct->xfer_iu = evt_struct->iu; in ibmvscsi_send_srp_event()
928 evt_struct->xfer_iu->srp.rsp.tag = (u64)evt_struct; in ibmvscsi_send_srp_event()
934 list_add_tail(&evt_struct->list, &hostdata->sent); in ibmvscsi_send_srp_event()
936 timer_setup(&evt_struct->timer, ibmvscsi_timeout, 0); in ibmvscsi_send_srp_event()
938 evt_struct->timer.expires = jiffies + (timeout * HZ); in ibmvscsi_send_srp_event()
939 add_timer(&evt_struct->timer); in ibmvscsi_send_srp_event()
945 list_del(&evt_struct->list); in ibmvscsi_send_srp_event()
946 del_timer(&evt_struct->timer); in ibmvscsi_send_srp_event()
967 unmap_cmd_data(&evt_struct->iu.srp.cmd, evt_struct, hostdata->dev); in ibmvscsi_send_srp_event()
969 free_event_struct(&hostdata->pool, evt_struct); in ibmvscsi_send_srp_event()
975 unmap_cmd_data(&evt_struct->iu.srp.cmd, evt_struct, hostdata->dev); in ibmvscsi_send_srp_event()
977 if (evt_struct->cmnd != NULL) { in ibmvscsi_send_srp_event()
978 evt_struct->cmnd->result = DID_ERROR << 16; in ibmvscsi_send_srp_event()
979 evt_struct->cmnd_done(evt_struct->cmnd); in ibmvscsi_send_srp_event()
980 } else if (evt_struct->done) in ibmvscsi_send_srp_event()
981 evt_struct->done(evt_struct); in ibmvscsi_send_srp_event()
983 free_event_struct(&hostdata->pool, evt_struct); in ibmvscsi_send_srp_event()
994 static void handle_cmd_rsp(struct srp_event_struct *evt_struct) in handle_cmd_rsp() argument
996 struct srp_rsp *rsp = &evt_struct->xfer_iu->srp.rsp; in handle_cmd_rsp()
997 struct scsi_cmnd *cmnd = evt_struct->cmnd; in handle_cmd_rsp()
1001 dev_warn(evt_struct->hostdata->dev, in handle_cmd_rsp()
1011 unmap_cmd_data(&evt_struct->iu.srp.cmd, in handle_cmd_rsp()
1012 evt_struct, in handle_cmd_rsp()
1013 evt_struct->hostdata->dev); in handle_cmd_rsp()
1022 if (evt_struct->cmnd_done) in handle_cmd_rsp()
1023 evt_struct->cmnd_done(cmnd); in handle_cmd_rsp()
1045 struct srp_event_struct *evt_struct; in ibmvscsi_queuecommand_lck() local
1052 evt_struct = get_event_struct(&hostdata->pool); in ibmvscsi_queuecommand_lck()
1053 if (!evt_struct) in ibmvscsi_queuecommand_lck()
1057 srp_cmd = &evt_struct->iu.srp.cmd; in ibmvscsi_queuecommand_lck()
1063 if (!map_data_for_srp_cmd(cmnd, evt_struct, srp_cmd, hostdata->dev)) { in ibmvscsi_queuecommand_lck()
1067 free_event_struct(&hostdata->pool, evt_struct); in ibmvscsi_queuecommand_lck()
1071 init_event_struct(evt_struct, in ibmvscsi_queuecommand_lck()
1076 evt_struct->cmnd = cmnd; in ibmvscsi_queuecommand_lck()
1077 evt_struct->cmnd_done = done; in ibmvscsi_queuecommand_lck()
1087 cpu_to_be64(be64_to_cpu(evt_struct->crq.IU_data_ptr) + in ibmvscsi_queuecommand_lck()
1092 return ibmvscsi_send_srp_event(evt_struct, hostdata, 0); in ibmvscsi_queuecommand_lck()
1155 static void login_rsp(struct srp_event_struct *evt_struct) in login_rsp() argument
1157 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata; in login_rsp()
1158 switch (evt_struct->xfer_iu->srp.login_rsp.opcode) { in login_rsp()
1163 evt_struct->xfer_iu->srp.login_rej.reason); in login_rsp()
1169 evt_struct->xfer_iu->srp.login_rsp.opcode); in login_rsp()
1183 be32_to_cpu(evt_struct->xfer_iu->srp.login_rsp.req_lim_delta)); in login_rsp()
1201 struct srp_event_struct *evt_struct = get_event_struct(&hostdata->pool); in send_srp_login() local
1203 BUG_ON(!evt_struct); in send_srp_login()
1204 init_event_struct(evt_struct, login_rsp, in send_srp_login()
1207 login = &evt_struct->iu.srp.login_req; in send_srp_login()
1221 rc = ibmvscsi_send_srp_event(evt_struct, hostdata, login_timeout * 2); in send_srp_login()
1233 static void capabilities_rsp(struct srp_event_struct *evt_struct) in capabilities_rsp() argument
1235 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata; in capabilities_rsp()
1237 if (evt_struct->xfer_iu->mad.capabilities.common.status) { in capabilities_rsp()
1239 evt_struct->xfer_iu->mad.capabilities.common.status); in capabilities_rsp()
1265 struct srp_event_struct *evt_struct; in send_mad_capabilities() local
1270 evt_struct = get_event_struct(&hostdata->pool); in send_mad_capabilities()
1271 BUG_ON(!evt_struct); in send_mad_capabilities()
1273 init_event_struct(evt_struct, capabilities_rsp, in send_mad_capabilities()
1276 req = &evt_struct->iu.mad.capabilities; in send_mad_capabilities()
1317 if (ibmvscsi_send_srp_event(evt_struct, hostdata, info_timeout * 2)) in send_mad_capabilities()
1329 static void fast_fail_rsp(struct srp_event_struct *evt_struct) in fast_fail_rsp() argument
1331 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata; in fast_fail_rsp()
1332 u16 status = be16_to_cpu(evt_struct->xfer_iu->mad.fast_fail.common.status); in fast_fail_rsp()
1355 struct srp_event_struct *evt_struct; in enable_fast_fail() local
1362 evt_struct = get_event_struct(&hostdata->pool); in enable_fast_fail()
1363 BUG_ON(!evt_struct); in enable_fast_fail()
1365 init_event_struct(evt_struct, fast_fail_rsp, VIOSRP_MAD_FORMAT, info_timeout); in enable_fast_fail()
1367 fast_fail_mad = &evt_struct->iu.mad.fast_fail; in enable_fast_fail()
1373 rc = ibmvscsi_send_srp_event(evt_struct, hostdata, info_timeout * 2); in enable_fast_fail()
1385 static void adapter_info_rsp(struct srp_event_struct *evt_struct) in adapter_info_rsp() argument
1387 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata; in adapter_info_rsp()
1389 if (evt_struct->xfer_iu->mad.adapter_info.common.status) { in adapter_info_rsp()
1391 evt_struct->xfer_iu->mad.adapter_info.common.status); in adapter_info_rsp()
1435 struct srp_event_struct *evt_struct; in send_mad_adapter_info() local
1438 evt_struct = get_event_struct(&hostdata->pool); in send_mad_adapter_info()
1439 BUG_ON(!evt_struct); in send_mad_adapter_info()
1441 init_event_struct(evt_struct, in send_mad_adapter_info()
1446 req = &evt_struct->iu.mad.adapter_info; in send_mad_adapter_info()
1454 if (ibmvscsi_send_srp_event(evt_struct, hostdata, info_timeout * 2)) in send_mad_adapter_info()
1474 static void sync_completion(struct srp_event_struct *evt_struct) in sync_completion() argument
1477 if (evt_struct->sync_srp) in sync_completion()
1478 *evt_struct->sync_srp = *evt_struct->xfer_iu; in sync_completion()
1480 complete(&evt_struct->comp); in sync_completion()
1771 struct srp_event_struct *evt_struct = in ibmvscsi_handle_crq() local
1826 if (!valid_event_struct(&hostdata->pool, evt_struct)) { in ibmvscsi_handle_crq()
1828 evt_struct); in ibmvscsi_handle_crq()
1832 if (atomic_read(&evt_struct->free)) { in ibmvscsi_handle_crq()
1834 evt_struct); in ibmvscsi_handle_crq()
1839 atomic_add(be32_to_cpu(evt_struct->xfer_iu->srp.rsp.req_lim_delta), in ibmvscsi_handle_crq()
1842 del_timer(&evt_struct->timer); in ibmvscsi_handle_crq()
1844 if ((crq->status != VIOSRP_OK && crq->status != VIOSRP_OK2) && evt_struct->cmnd) in ibmvscsi_handle_crq()
1845 evt_struct->cmnd->result = DID_ERROR << 16; in ibmvscsi_handle_crq()
1846 if (evt_struct->done) in ibmvscsi_handle_crq()
1847 evt_struct->done(evt_struct); in ibmvscsi_handle_crq()
1855 spin_lock_irqsave(evt_struct->hostdata->host->host_lock, flags); in ibmvscsi_handle_crq()
1856 list_del(&evt_struct->list); in ibmvscsi_handle_crq()
1857 free_event_struct(&evt_struct->hostdata->pool, evt_struct); in ibmvscsi_handle_crq()
1858 spin_unlock_irqrestore(evt_struct->hostdata->host->host_lock, flags); in ibmvscsi_handle_crq()