Lines Matching refs:evt_struct
581 static void init_event_struct(struct srp_event_struct *evt_struct, in init_event_struct() argument
586 evt_struct->cmnd = NULL; in init_event_struct()
587 evt_struct->cmnd_done = NULL; in init_event_struct()
588 evt_struct->sync_srp = NULL; in init_event_struct()
589 evt_struct->crq.format = format; in init_event_struct()
590 evt_struct->crq.timeout = cpu_to_be16(timeout); in init_event_struct()
591 evt_struct->done = done; in init_event_struct()
637 struct srp_event_struct *evt_struct, in unmap_cmd_data() argument
648 if (evt_struct->cmnd) in unmap_cmd_data()
649 scsi_dma_unmap(evt_struct->cmnd); in unmap_cmd_data()
679 struct srp_event_struct *evt_struct, in map_sg_data() argument
717 if (!evt_struct->ext_list) { in map_sg_data()
718 evt_struct->ext_list = (struct srp_direct_buf *) in map_sg_data()
721 &evt_struct->ext_list_token, 0); in map_sg_data()
722 if (!evt_struct->ext_list) { in map_sg_data()
732 total_length = map_sg_list(cmd, sg_mapped, evt_struct->ext_list); in map_sg_data()
735 indirect->table_desc.va = cpu_to_be64(evt_struct->ext_list_token); in map_sg_data()
738 memcpy(indirect->desc_list, evt_struct->ext_list, in map_sg_data()
753 struct srp_event_struct *evt_struct, in map_data_for_srp_cmd() argument
773 return map_sg_data(cmd, evt_struct, srp_cmd, dev); in map_data_for_srp_cmd()
829 struct srp_event_struct *evt_struct = from_timer(evt_struct, t, timer); in ibmvscsi_timeout() local
830 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata; in ibmvscsi_timeout()
833 evt_struct->iu.srp.cmd.opcode); in ibmvscsi_timeout()
851 static int ibmvscsi_send_srp_event(struct srp_event_struct *evt_struct, in ibmvscsi_send_srp_event() argument
855 __be64 *crq_as_u64 = (__be64 *)&evt_struct->crq; in ibmvscsi_send_srp_event()
866 if (evt_struct->crq.format == VIOSRP_SRP_FORMAT) { in ibmvscsi_send_srp_event()
881 evt_struct->iu.srp.login_req.opcode != SRP_LOGIN_REQ) in ibmvscsi_send_srp_event()
888 evt_struct->iu.srp.cmd.opcode != SRP_TSK_MGMT) { in ibmvscsi_send_srp_event()
909 *evt_struct->xfer_iu = evt_struct->iu; in ibmvscsi_send_srp_event()
910 evt_struct->xfer_iu->srp.rsp.tag = (u64)evt_struct; in ibmvscsi_send_srp_event()
916 list_add_tail(&evt_struct->list, &hostdata->sent); in ibmvscsi_send_srp_event()
918 timer_setup(&evt_struct->timer, ibmvscsi_timeout, 0); in ibmvscsi_send_srp_event()
920 evt_struct->timer.expires = jiffies + (timeout * HZ); in ibmvscsi_send_srp_event()
921 add_timer(&evt_struct->timer); in ibmvscsi_send_srp_event()
927 list_del(&evt_struct->list); in ibmvscsi_send_srp_event()
928 del_timer(&evt_struct->timer); in ibmvscsi_send_srp_event()
949 unmap_cmd_data(&evt_struct->iu.srp.cmd, evt_struct, hostdata->dev); in ibmvscsi_send_srp_event()
951 free_event_struct(&hostdata->pool, evt_struct); in ibmvscsi_send_srp_event()
957 unmap_cmd_data(&evt_struct->iu.srp.cmd, evt_struct, hostdata->dev); in ibmvscsi_send_srp_event()
959 if (evt_struct->cmnd != NULL) { in ibmvscsi_send_srp_event()
960 evt_struct->cmnd->result = DID_ERROR << 16; in ibmvscsi_send_srp_event()
961 evt_struct->cmnd_done(evt_struct->cmnd); in ibmvscsi_send_srp_event()
962 } else if (evt_struct->done) in ibmvscsi_send_srp_event()
963 evt_struct->done(evt_struct); in ibmvscsi_send_srp_event()
965 free_event_struct(&hostdata->pool, evt_struct); in ibmvscsi_send_srp_event()
976 static void handle_cmd_rsp(struct srp_event_struct *evt_struct) in handle_cmd_rsp() argument
978 struct srp_rsp *rsp = &evt_struct->xfer_iu->srp.rsp; in handle_cmd_rsp()
979 struct scsi_cmnd *cmnd = evt_struct->cmnd; in handle_cmd_rsp()
983 dev_warn(evt_struct->hostdata->dev, in handle_cmd_rsp()
993 unmap_cmd_data(&evt_struct->iu.srp.cmd, in handle_cmd_rsp()
994 evt_struct, in handle_cmd_rsp()
995 evt_struct->hostdata->dev); in handle_cmd_rsp()
1004 if (evt_struct->cmnd_done) in handle_cmd_rsp()
1005 evt_struct->cmnd_done(cmnd); in handle_cmd_rsp()
1027 struct srp_event_struct *evt_struct; in ibmvscsi_queuecommand_lck() local
1034 evt_struct = get_event_struct(&hostdata->pool); in ibmvscsi_queuecommand_lck()
1035 if (!evt_struct) in ibmvscsi_queuecommand_lck()
1039 srp_cmd = &evt_struct->iu.srp.cmd; in ibmvscsi_queuecommand_lck()
1045 if (!map_data_for_srp_cmd(cmnd, evt_struct, srp_cmd, hostdata->dev)) { in ibmvscsi_queuecommand_lck()
1049 free_event_struct(&hostdata->pool, evt_struct); in ibmvscsi_queuecommand_lck()
1053 init_event_struct(evt_struct, in ibmvscsi_queuecommand_lck()
1058 evt_struct->cmnd = cmnd; in ibmvscsi_queuecommand_lck()
1059 evt_struct->cmnd_done = done; in ibmvscsi_queuecommand_lck()
1069 cpu_to_be64(be64_to_cpu(evt_struct->crq.IU_data_ptr) + in ibmvscsi_queuecommand_lck()
1074 return ibmvscsi_send_srp_event(evt_struct, hostdata, 0); in ibmvscsi_queuecommand_lck()
1137 static void login_rsp(struct srp_event_struct *evt_struct) in login_rsp() argument
1139 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata; in login_rsp()
1140 switch (evt_struct->xfer_iu->srp.login_rsp.opcode) { in login_rsp()
1145 evt_struct->xfer_iu->srp.login_rej.reason); in login_rsp()
1151 evt_struct->xfer_iu->srp.login_rsp.opcode); in login_rsp()
1165 be32_to_cpu(evt_struct->xfer_iu->srp.login_rsp.req_lim_delta)); in login_rsp()
1183 struct srp_event_struct *evt_struct = get_event_struct(&hostdata->pool); in send_srp_login() local
1185 BUG_ON(!evt_struct); in send_srp_login()
1186 init_event_struct(evt_struct, login_rsp, in send_srp_login()
1189 login = &evt_struct->iu.srp.login_req; in send_srp_login()
1203 rc = ibmvscsi_send_srp_event(evt_struct, hostdata, login_timeout * 2); in send_srp_login()
1215 static void capabilities_rsp(struct srp_event_struct *evt_struct) in capabilities_rsp() argument
1217 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata; in capabilities_rsp()
1219 if (evt_struct->xfer_iu->mad.capabilities.common.status) { in capabilities_rsp()
1221 evt_struct->xfer_iu->mad.capabilities.common.status); in capabilities_rsp()
1247 struct srp_event_struct *evt_struct; in send_mad_capabilities() local
1252 evt_struct = get_event_struct(&hostdata->pool); in send_mad_capabilities()
1253 BUG_ON(!evt_struct); in send_mad_capabilities()
1255 init_event_struct(evt_struct, capabilities_rsp, in send_mad_capabilities()
1258 req = &evt_struct->iu.mad.capabilities; in send_mad_capabilities()
1299 if (ibmvscsi_send_srp_event(evt_struct, hostdata, info_timeout * 2)) in send_mad_capabilities()
1311 static void fast_fail_rsp(struct srp_event_struct *evt_struct) in fast_fail_rsp() argument
1313 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata; in fast_fail_rsp()
1314 u16 status = be16_to_cpu(evt_struct->xfer_iu->mad.fast_fail.common.status); in fast_fail_rsp()
1337 struct srp_event_struct *evt_struct; in enable_fast_fail() local
1344 evt_struct = get_event_struct(&hostdata->pool); in enable_fast_fail()
1345 BUG_ON(!evt_struct); in enable_fast_fail()
1347 init_event_struct(evt_struct, fast_fail_rsp, VIOSRP_MAD_FORMAT, info_timeout); in enable_fast_fail()
1349 fast_fail_mad = &evt_struct->iu.mad.fast_fail; in enable_fast_fail()
1355 rc = ibmvscsi_send_srp_event(evt_struct, hostdata, info_timeout * 2); in enable_fast_fail()
1367 static void adapter_info_rsp(struct srp_event_struct *evt_struct) in adapter_info_rsp() argument
1369 struct ibmvscsi_host_data *hostdata = evt_struct->hostdata; in adapter_info_rsp()
1371 if (evt_struct->xfer_iu->mad.adapter_info.common.status) { in adapter_info_rsp()
1373 evt_struct->xfer_iu->mad.adapter_info.common.status); in adapter_info_rsp()
1417 struct srp_event_struct *evt_struct; in send_mad_adapter_info() local
1420 evt_struct = get_event_struct(&hostdata->pool); in send_mad_adapter_info()
1421 BUG_ON(!evt_struct); in send_mad_adapter_info()
1423 init_event_struct(evt_struct, in send_mad_adapter_info()
1428 req = &evt_struct->iu.mad.adapter_info; in send_mad_adapter_info()
1436 if (ibmvscsi_send_srp_event(evt_struct, hostdata, info_timeout * 2)) in send_mad_adapter_info()
1456 static void sync_completion(struct srp_event_struct *evt_struct) in sync_completion() argument
1459 if (evt_struct->sync_srp) in sync_completion()
1460 *evt_struct->sync_srp = *evt_struct->xfer_iu; in sync_completion()
1462 complete(&evt_struct->comp); in sync_completion()
1753 struct srp_event_struct *evt_struct = in ibmvscsi_handle_crq() local
1808 if (!valid_event_struct(&hostdata->pool, evt_struct)) { in ibmvscsi_handle_crq()
1810 evt_struct); in ibmvscsi_handle_crq()
1814 if (atomic_read(&evt_struct->free)) { in ibmvscsi_handle_crq()
1816 evt_struct); in ibmvscsi_handle_crq()
1821 atomic_add(be32_to_cpu(evt_struct->xfer_iu->srp.rsp.req_lim_delta), in ibmvscsi_handle_crq()
1824 del_timer(&evt_struct->timer); in ibmvscsi_handle_crq()
1826 if ((crq->status != VIOSRP_OK && crq->status != VIOSRP_OK2) && evt_struct->cmnd) in ibmvscsi_handle_crq()
1827 evt_struct->cmnd->result = DID_ERROR << 16; in ibmvscsi_handle_crq()
1828 if (evt_struct->done) in ibmvscsi_handle_crq()
1829 evt_struct->done(evt_struct); in ibmvscsi_handle_crq()
1837 spin_lock_irqsave(evt_struct->hostdata->host->host_lock, flags); in ibmvscsi_handle_crq()
1838 list_del(&evt_struct->list); in ibmvscsi_handle_crq()
1839 free_event_struct(&evt_struct->hostdata->pool, evt_struct); in ibmvscsi_handle_crq()
1840 spin_unlock_irqrestore(evt_struct->hostdata->host->host_lock, flags); in ibmvscsi_handle_crq()