Lines Matching refs:cmd
65 struct megasas_cmd *cmd, u8 alt_status);
67 wait_and_poll(struct megasas_instance *instance, struct megasas_cmd *cmd,
71 megasas_return_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd);
77 struct megasas_cmd *cmd);
167 struct megasas_cmd_fusion *cmd = NULL; in megasas_get_cmd_fusion() local
172 cmd = list_entry((&fusion->cmd_pool)->next, in megasas_get_cmd_fusion()
174 list_del_init(&cmd->list); in megasas_get_cmd_fusion()
180 return cmd; in megasas_get_cmd_fusion()
189 struct megasas_cmd_fusion *cmd) in megasas_return_cmd_fusion() argument
197 cmd->scmd = NULL; in megasas_return_cmd_fusion()
198 cmd->sync_cmd_idx = (u32)ULONG_MAX; in megasas_return_cmd_fusion()
199 memset(cmd->io_request, 0, sizeof(struct MPI2_RAID_SCSI_IO_REQUEST)); in megasas_return_cmd_fusion()
200 list_add(&cmd->list, (&fusion->cmd_pool)->next); in megasas_return_cmd_fusion()
244 struct megasas_cmd_fusion *cmd; in megasas_teardown_frame_pool_fusion() local
258 cmd = fusion->cmd_list[i]; in megasas_teardown_frame_pool_fusion()
260 if (cmd->sg_frame) in megasas_teardown_frame_pool_fusion()
261 pci_pool_free(fusion->sg_dma_pool, cmd->sg_frame, in megasas_teardown_frame_pool_fusion()
262 cmd->sg_frame_phys_addr); in megasas_teardown_frame_pool_fusion()
264 if (cmd->sense) in megasas_teardown_frame_pool_fusion()
265 pci_pool_free(fusion->sense_dma_pool, cmd->sense, in megasas_teardown_frame_pool_fusion()
266 cmd->sense_phys_addr); in megasas_teardown_frame_pool_fusion()
342 struct megasas_cmd_fusion *cmd; in megasas_create_frame_pool_fusion() local
380 cmd = fusion->cmd_list[i]; in megasas_create_frame_pool_fusion()
382 cmd->sg_frame = pci_pool_alloc(fusion->sg_dma_pool, in megasas_create_frame_pool_fusion()
384 &cmd->sg_frame_phys_addr); in megasas_create_frame_pool_fusion()
386 cmd->sense = pci_pool_alloc(fusion->sense_dma_pool, in megasas_create_frame_pool_fusion()
387 GFP_KERNEL, &cmd->sense_phys_addr); in megasas_create_frame_pool_fusion()
392 if (!cmd->sg_frame || !cmd->sense) { in megasas_create_frame_pool_fusion()
423 struct megasas_cmd_fusion *cmd; in megasas_alloc_cmds_fusion() local
533 cmd = fusion->cmd_list[i]; in megasas_alloc_cmds_fusion()
535 memset(cmd, 0, sizeof(struct megasas_cmd_fusion)); in megasas_alloc_cmds_fusion()
536 cmd->index = i + 1; in megasas_alloc_cmds_fusion()
537 cmd->scmd = NULL; in megasas_alloc_cmds_fusion()
538 cmd->sync_cmd_idx = (u32)ULONG_MAX; /* Set to Invalid */ in megasas_alloc_cmds_fusion()
539 cmd->instance = instance; in megasas_alloc_cmds_fusion()
540 cmd->io_request = in megasas_alloc_cmds_fusion()
543 memset(cmd->io_request, 0, in megasas_alloc_cmds_fusion()
545 cmd->io_request_phys_addr = io_req_base_phys + offset; in megasas_alloc_cmds_fusion()
547 list_add_tail(&cmd->list, &fusion->cmd_pool); in megasas_alloc_cmds_fusion()
590 wait_and_poll(struct megasas_instance *instance, struct megasas_cmd *cmd, in wait_and_poll() argument
594 struct megasas_header *frame_hdr = &cmd->frame->hdr; in wait_and_poll()
610 megasas_return_mfi_mpt_pthr(instance, cmd, in wait_and_poll()
611 cmd->mpt_pthr_cmd_blocked); in wait_and_poll()
630 struct megasas_cmd *cmd; in megasas_ioc_init_fusion() local
639 cmd = megasas_get_cmd(instance); in megasas_ioc_init_fusion()
641 if (!cmd) { in megasas_ioc_init_fusion()
671 init_frame = (struct megasas_init_frame *)cmd->frame; in megasas_ioc_init_fusion()
674 frame_hdr = &cmd->frame->hdr; in megasas_ioc_init_fusion()
678 init_frame->cmd = MFI_CMD_INIT; in megasas_ioc_init_fusion()
704 req_desc.u.low = cpu_to_le32(lower_32_bits(cmd->frame_phys_addr)); in megasas_ioc_init_fusion()
705 req_desc.u.high = cpu_to_le32(upper_32_bits(cmd->frame_phys_addr)); in megasas_ioc_init_fusion()
725 wait_and_poll(instance, cmd, MFI_POLL_TIMEOUT_SECS); in megasas_ioc_init_fusion()
727 frame_hdr = &cmd->frame->hdr; in megasas_ioc_init_fusion()
737 megasas_return_cmd(instance, cmd); in megasas_ioc_init_fusion()
765 struct megasas_cmd *cmd; in megasas_get_ld_map_info() local
772 cmd = megasas_get_cmd(instance); in megasas_get_ld_map_info()
774 if (!cmd) { in megasas_get_ld_map_info()
782 megasas_return_cmd(instance, cmd); in megasas_get_ld_map_info()
786 dcmd = &cmd->frame->dcmd; in megasas_get_ld_map_info()
795 megasas_return_cmd(instance, cmd); in megasas_get_ld_map_info()
806 dcmd->cmd = MFI_CMD_DCMD; in megasas_get_ld_map_info()
818 ret = megasas_issue_blocked_cmd(instance, cmd, in megasas_get_ld_map_info()
821 ret = megasas_issue_polled(instance, cmd); in megasas_get_ld_map_info()
823 if (instance->ctrl_context && cmd->mpt_pthr_cmd_blocked) in megasas_get_ld_map_info()
824 megasas_return_mfi_mpt_pthr(instance, cmd, in megasas_get_ld_map_info()
825 cmd->mpt_pthr_cmd_blocked); in megasas_get_ld_map_info()
827 megasas_return_cmd(instance, cmd); in megasas_get_ld_map_info()
859 struct megasas_cmd *cmd; in megasas_sync_map_info() local
870 cmd = megasas_get_cmd(instance); in megasas_sync_map_info()
872 if (!cmd) { in megasas_sync_map_info()
881 megasas_return_cmd(instance, cmd); in megasas_sync_map_info()
889 dcmd = &cmd->frame->dcmd; in megasas_sync_map_info()
911 dcmd->cmd = MFI_CMD_DCMD; in megasas_sync_map_info()
924 instance->map_update_cmd = cmd; in megasas_sync_map_info()
926 instance->instancet->issue_dcmd(instance, cmd); in megasas_sync_map_info()
1169 map_cmd_status(struct megasas_cmd_fusion *cmd, u8 status, u8 ext_status) in map_cmd_status() argument
1175 cmd->scmd->result = DID_OK << 16; in map_cmd_status()
1180 cmd->scmd->result = (DID_ERROR << 16) | ext_status; in map_cmd_status()
1185 cmd->scmd->result = (DID_OK << 16) | ext_status; in map_cmd_status()
1187 memset(cmd->scmd->sense_buffer, 0, in map_cmd_status()
1189 memcpy(cmd->scmd->sense_buffer, cmd->sense, in map_cmd_status()
1191 cmd->scmd->result |= DRIVER_SENSE << 24; in map_cmd_status()
1197 cmd->scmd->result = DID_BAD_TARGET << 16; in map_cmd_status()
1200 cmd->scmd->result = DID_IMM_RETRY << 16; in map_cmd_status()
1204 cmd->scmd->result = DID_ERROR << 16; in map_cmd_status()
1222 struct megasas_cmd_fusion *cmd) in megasas_make_sgl_fusion() argument
1265 if ((le16_to_cpu(cmd->io_request->IoFlags) & in megasas_make_sgl_fusion()
1268 cmd->io_request->ChainOffset = in megasas_make_sgl_fusion()
1272 cmd->io_request->ChainOffset = 0; in megasas_make_sgl_fusion()
1274 cmd->io_request->ChainOffset = in megasas_make_sgl_fusion()
1290 sg_chain->Address = cpu_to_le64(cmd->sg_frame_phys_addr); in megasas_make_sgl_fusion()
1293 (struct MPI25_IEEE_SGE_CHAIN64 *)cmd->sg_frame; in megasas_make_sgl_fusion()
1489 struct megasas_cmd_fusion *cmd) in megasas_build_ldio_fusion() argument
1504 io_request = cmd->io_request; in megasas_build_ldio_fusion()
1509 req_desc = (union MEGASAS_REQUEST_DESCRIPTOR_UNION *)cmd->request_desc; in megasas_build_ldio_fusion()
1590 cmd->request_desc->SCSIIO.MSIxIndex = instance->msix_vectors ? in megasas_build_ldio_fusion()
1597 cmd->request_desc->SCSIIO.RequestFlags = in megasas_build_ldio_fusion()
1604 cmd->request_desc->SCSIIO.RequestFlags = in megasas_build_ldio_fusion()
1621 cmd->pd_r1_lb = io_info.pd_after_lb; in megasas_build_ldio_fusion()
1624 cmd->request_desc->SCSIIO.DevHandle = io_info.devHandle; in megasas_build_ldio_fusion()
1631 cmd->request_desc->SCSIIO.RequestFlags = in megasas_build_ldio_fusion()
1638 cmd->request_desc->SCSIIO.RequestFlags = in megasas_build_ldio_fusion()
1663 struct megasas_cmd_fusion *cmd) in megasas_build_dcdb_fusion() argument
1678 io_request = cmd->io_request; in megasas_build_dcdb_fusion()
1694 cmd->request_desc->SCSIIO.DevHandle = io_request->DevHandle; in megasas_build_dcdb_fusion()
1695 cmd->request_desc->SCSIIO.MSIxIndex = in megasas_build_dcdb_fusion()
1707 cmd->request_desc->SCSIIO.RequestFlags = in megasas_build_dcdb_fusion()
1728 cmd->request_desc->SCSIIO.RequestFlags = in megasas_build_dcdb_fusion()
1777 cmd->request_desc->SCSIIO.RequestFlags = in megasas_build_dcdb_fusion()
1780 cmd->request_desc->SCSIIO.DevHandle = devHandle; in megasas_build_dcdb_fusion()
1794 cmd->request_desc->SCSIIO.RequestFlags = in megasas_build_dcdb_fusion()
1814 struct megasas_cmd_fusion *cmd) in megasas_build_io_fusion() argument
1817 struct MPI2_RAID_SCSI_IO_REQUEST *io_request = cmd->io_request; in megasas_build_io_fusion()
1841 megasas_build_ldio_fusion(instance, scp, cmd); in megasas_build_io_fusion()
1843 megasas_build_dcdb_fusion(instance, scp, cmd); in megasas_build_io_fusion()
1852 &io_request->SGL, cmd); in megasas_build_io_fusion()
1873 io_request->SenseBufferLowAddress = cpu_to_le32(cmd->sense_phys_addr); in megasas_build_io_fusion()
1876 cmd->scmd = scp; in megasas_build_io_fusion()
1877 scp->SCp.ptr = (char *)cmd; in megasas_build_io_fusion()
1911 struct megasas_cmd_fusion *cmd; in megasas_build_and_issue_cmd_fusion() local
1918 cmd = megasas_get_cmd_fusion(instance); in megasas_build_and_issue_cmd_fusion()
1919 if (!cmd) in megasas_build_and_issue_cmd_fusion()
1922 index = cmd->index; in megasas_build_and_issue_cmd_fusion()
1929 cmd->request_desc = req_desc; in megasas_build_and_issue_cmd_fusion()
1931 if (megasas_build_io_fusion(instance, scmd, cmd)) { in megasas_build_and_issue_cmd_fusion()
1932 megasas_return_cmd_fusion(instance, cmd); in megasas_build_and_issue_cmd_fusion()
1934 cmd->request_desc = NULL; in megasas_build_and_issue_cmd_fusion()
1938 req_desc = cmd->request_desc; in megasas_build_and_issue_cmd_fusion()
1941 if (cmd->io_request->ChainOffset != 0 && in megasas_build_and_issue_cmd_fusion()
1942 cmd->io_request->ChainOffset != 0xF) in megasas_build_and_issue_cmd_fusion()
1944 "correct : %x\n", cmd->io_request->ChainOffset); in megasas_build_and_issue_cmd_fusion()
2217 struct megasas_cmd_fusion *cmd; in build_mpt_mfi_pass_thru() local
2222 cmd = megasas_get_cmd_fusion(instance); in build_mpt_mfi_pass_thru()
2223 if (!cmd) in build_mpt_mfi_pass_thru()
2227 mfi_cmd->context.smid = cmd->index; in build_mpt_mfi_pass_thru()
2228 cmd->sync_cmd_idx = mfi_cmd->index; in build_mpt_mfi_pass_thru()
2240 mfi_cmd->mpt_pthr_cmd_blocked = cmd; in build_mpt_mfi_pass_thru()
2249 cmd->flags = MFI_FRAME_DONT_POST_IN_REPLY_QUEUE; in build_mpt_mfi_pass_thru()
2252 io_req = cmd->io_request; in build_mpt_mfi_pass_thru()
2287 build_mpt_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd) in build_mpt_cmd() argument
2292 if (build_mpt_mfi_pass_thru(instance, cmd)) { in build_mpt_cmd()
2297 index = cmd->context.smid; in build_mpt_cmd()
2321 struct megasas_cmd *cmd) in megasas_issue_dcmd_fusion() argument
2325 req_desc = build_mpt_cmd(instance, cmd); in megasas_issue_dcmd_fusion()
2330 atomic_set(&cmd->mfi_mpt_pthr, MFI_MPT_ATTACHED); in megasas_issue_dcmd_fusion()