Lines Matching refs:evt_struct
582 static void init_event_struct(struct srp_event_struct *evt_struct, in init_event_struct() argument
587 evt_struct->cmnd = NULL; in init_event_struct()
588 evt_struct->cmnd_done = NULL; in init_event_struct()
589 evt_struct->sync_srp = NULL; in init_event_struct()
590 evt_struct->crq.format = format; in init_event_struct()
591 evt_struct->crq.timeout = cpu_to_be16(timeout); in init_event_struct()
592 evt_struct->done = done; in init_event_struct()
638 struct srp_event_struct *evt_struct, in unmap_cmd_data() argument
649 if (evt_struct->cmnd) in unmap_cmd_data()
650 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 = dma_alloc_coherent(dev, in map_sg_data()
722 &evt_struct->ext_list_token, 0); in map_sg_data()
723 if (!evt_struct->ext_list) { in map_sg_data()
733 total_length = map_sg_list(cmd, sg_mapped, evt_struct->ext_list); in map_sg_data()
736 indirect->table_desc.va = cpu_to_be64(evt_struct->ext_list_token); in map_sg_data()
739 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()
848 struct srp_event_struct *evt_struct = from_timer(evt_struct, t, timer); in ibmvscsi_timeout() local
849 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata; in ibmvscsi_timeout()
852 evt_struct->iu.srp.cmd.opcode); in ibmvscsi_timeout()
870 static int ibmvscsi_send_srp_event(struct srp_event_struct *evt_struct, in ibmvscsi_send_srp_event() argument
874 __be64 *crq_as_u64 = (__be64 *)&evt_struct->crq; in ibmvscsi_send_srp_event()
885 if (evt_struct->crq.format == VIOSRP_SRP_FORMAT) { in ibmvscsi_send_srp_event()
900 evt_struct->iu.srp.login_req.opcode != SRP_LOGIN_REQ) in ibmvscsi_send_srp_event()
907 evt_struct->iu.srp.cmd.opcode != SRP_TSK_MGMT) { in ibmvscsi_send_srp_event()
928 *evt_struct->xfer_iu = evt_struct->iu; in ibmvscsi_send_srp_event()
929 evt_struct->xfer_iu->srp.rsp.tag = (u64)evt_struct; in ibmvscsi_send_srp_event()
935 list_add_tail(&evt_struct->list, &hostdata->sent); in ibmvscsi_send_srp_event()
937 timer_setup(&evt_struct->timer, ibmvscsi_timeout, 0); in ibmvscsi_send_srp_event()
939 evt_struct->timer.expires = jiffies + (timeout * HZ); in ibmvscsi_send_srp_event()
940 add_timer(&evt_struct->timer); in ibmvscsi_send_srp_event()
946 list_del(&evt_struct->list); in ibmvscsi_send_srp_event()
947 del_timer(&evt_struct->timer); in ibmvscsi_send_srp_event()
968 unmap_cmd_data(&evt_struct->iu.srp.cmd, evt_struct, hostdata->dev); in ibmvscsi_send_srp_event()
970 free_event_struct(&hostdata->pool, evt_struct); in ibmvscsi_send_srp_event()
976 unmap_cmd_data(&evt_struct->iu.srp.cmd, evt_struct, hostdata->dev); in ibmvscsi_send_srp_event()
978 if (evt_struct->cmnd != NULL) { in ibmvscsi_send_srp_event()
979 evt_struct->cmnd->result = DID_ERROR << 16; in ibmvscsi_send_srp_event()
980 evt_struct->cmnd_done(evt_struct->cmnd); in ibmvscsi_send_srp_event()
981 } else if (evt_struct->done) in ibmvscsi_send_srp_event()
982 evt_struct->done(evt_struct); in ibmvscsi_send_srp_event()
984 free_event_struct(&hostdata->pool, evt_struct); in ibmvscsi_send_srp_event()
995 static void handle_cmd_rsp(struct srp_event_struct *evt_struct) in handle_cmd_rsp() argument
997 struct srp_rsp *rsp = &evt_struct->xfer_iu->srp.rsp; in handle_cmd_rsp()
998 struct scsi_cmnd *cmnd = evt_struct->cmnd; in handle_cmd_rsp()
1002 dev_warn(evt_struct->hostdata->dev, in handle_cmd_rsp()
1012 unmap_cmd_data(&evt_struct->iu.srp.cmd, in handle_cmd_rsp()
1013 evt_struct, in handle_cmd_rsp()
1014 evt_struct->hostdata->dev); in handle_cmd_rsp()
1023 if (evt_struct->cmnd_done) in handle_cmd_rsp()
1024 evt_struct->cmnd_done(cmnd); in handle_cmd_rsp()
1046 struct srp_event_struct *evt_struct; in ibmvscsi_queuecommand_lck() local
1053 evt_struct = get_event_struct(&hostdata->pool); in ibmvscsi_queuecommand_lck()
1054 if (!evt_struct) in ibmvscsi_queuecommand_lck()
1058 srp_cmd = &evt_struct->iu.srp.cmd; in ibmvscsi_queuecommand_lck()
1064 if (!map_data_for_srp_cmd(cmnd, evt_struct, srp_cmd, hostdata->dev)) { in ibmvscsi_queuecommand_lck()
1068 free_event_struct(&hostdata->pool, evt_struct); in ibmvscsi_queuecommand_lck()
1072 init_event_struct(evt_struct, in ibmvscsi_queuecommand_lck()
1077 evt_struct->cmnd = cmnd; in ibmvscsi_queuecommand_lck()
1078 evt_struct->cmnd_done = done; in ibmvscsi_queuecommand_lck()
1088 cpu_to_be64(be64_to_cpu(evt_struct->crq.IU_data_ptr) + in ibmvscsi_queuecommand_lck()
1093 return ibmvscsi_send_srp_event(evt_struct, hostdata, 0); in ibmvscsi_queuecommand_lck()
1156 static void login_rsp(struct srp_event_struct *evt_struct) in login_rsp() argument
1158 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata; in login_rsp()
1159 switch (evt_struct->xfer_iu->srp.login_rsp.opcode) { in login_rsp()
1164 evt_struct->xfer_iu->srp.login_rej.reason); in login_rsp()
1170 evt_struct->xfer_iu->srp.login_rsp.opcode); in login_rsp()
1184 be32_to_cpu(evt_struct->xfer_iu->srp.login_rsp.req_lim_delta)); in login_rsp()
1202 struct srp_event_struct *evt_struct = get_event_struct(&hostdata->pool); in send_srp_login() local
1204 BUG_ON(!evt_struct); in send_srp_login()
1205 init_event_struct(evt_struct, login_rsp, in send_srp_login()
1208 login = &evt_struct->iu.srp.login_req; in send_srp_login()
1222 rc = ibmvscsi_send_srp_event(evt_struct, hostdata, login_timeout * 2); in send_srp_login()
1234 static void capabilities_rsp(struct srp_event_struct *evt_struct) in capabilities_rsp() argument
1236 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata; in capabilities_rsp()
1238 if (evt_struct->xfer_iu->mad.capabilities.common.status) { in capabilities_rsp()
1240 evt_struct->xfer_iu->mad.capabilities.common.status); in capabilities_rsp()
1266 struct srp_event_struct *evt_struct; in send_mad_capabilities() local
1271 evt_struct = get_event_struct(&hostdata->pool); in send_mad_capabilities()
1272 BUG_ON(!evt_struct); in send_mad_capabilities()
1274 init_event_struct(evt_struct, capabilities_rsp, in send_mad_capabilities()
1277 req = &evt_struct->iu.mad.capabilities; in send_mad_capabilities()
1318 if (ibmvscsi_send_srp_event(evt_struct, hostdata, info_timeout * 2)) in send_mad_capabilities()
1330 static void fast_fail_rsp(struct srp_event_struct *evt_struct) in fast_fail_rsp() argument
1332 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata; in fast_fail_rsp()
1333 u16 status = be16_to_cpu(evt_struct->xfer_iu->mad.fast_fail.common.status); in fast_fail_rsp()
1356 struct srp_event_struct *evt_struct; in enable_fast_fail() local
1363 evt_struct = get_event_struct(&hostdata->pool); in enable_fast_fail()
1364 BUG_ON(!evt_struct); in enable_fast_fail()
1366 init_event_struct(evt_struct, fast_fail_rsp, VIOSRP_MAD_FORMAT, info_timeout); in enable_fast_fail()
1368 fast_fail_mad = &evt_struct->iu.mad.fast_fail; in enable_fast_fail()
1374 rc = ibmvscsi_send_srp_event(evt_struct, hostdata, info_timeout * 2); in enable_fast_fail()
1386 static void adapter_info_rsp(struct srp_event_struct *evt_struct) in adapter_info_rsp() argument
1388 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata; in adapter_info_rsp()
1390 if (evt_struct->xfer_iu->mad.adapter_info.common.status) { in adapter_info_rsp()
1392 evt_struct->xfer_iu->mad.adapter_info.common.status); in adapter_info_rsp()
1436 struct srp_event_struct *evt_struct; in send_mad_adapter_info() local
1439 evt_struct = get_event_struct(&hostdata->pool); in send_mad_adapter_info()
1440 BUG_ON(!evt_struct); in send_mad_adapter_info()
1442 init_event_struct(evt_struct, in send_mad_adapter_info()
1447 req = &evt_struct->iu.mad.adapter_info; in send_mad_adapter_info()
1455 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()