Lines Matching refs:mcmd

1202 static int qlt_reset(struct scsi_qla_host *vha, void *iocb, int mcmd)  in qlt_reset()  argument
1234 mcmd, loop_id); in qlt_reset()
1236 return qlt_issue_task_mgmt(sess, 0, mcmd, iocb, QLA24XX_MGMT_SEND_NACK); in qlt_reset()
1758 static int qlt_build_abts_resp_iocb(struct qla_tgt_mgmt_cmd *mcmd) in qlt_build_abts_resp_iocb() argument
1760 struct scsi_qla_host *vha = mcmd->vha; in qlt_build_abts_resp_iocb()
1767 struct abts_recv_from_24xx *abts = &mcmd->orig_iocb.abts; in qlt_build_abts_resp_iocb()
1768 struct qla_qpair *qpair = mcmd->qpair; in qlt_build_abts_resp_iocb()
1772 ha, mcmd->fc_tm_rsp); in qlt_build_abts_resp_iocb()
1794 qpair->req->outstanding_cmds[h] = (srb_t *)mcmd; in qlt_build_abts_resp_iocb()
1817 if (mcmd->fc_tm_rsp == FCP_TMF_CMPL) { in qlt_build_abts_resp_iocb()
1920 struct qla_qpair *qpair, response_t *pkt, struct qla_tgt_mgmt_cmd *mcmd) in qlt_24xx_retry_term_exchange() argument
1934 if (mcmd) in qlt_24xx_retry_term_exchange()
1936 entry = &mcmd->orig_iocb.abts; in qlt_24xx_retry_term_exchange()
1955 if (mcmd) { in qlt_24xx_retry_term_exchange()
1958 if (mcmd->flags & QLA24XX_MGMT_ABORT_IO_ATTR_VALID) in qlt_24xx_retry_term_exchange()
1959 tmp |= (mcmd->abort_io_attr << 9); in qlt_24xx_retry_term_exchange()
1975 (mcmd && mcmd->flags & QLA24XX_MGMT_ABORT_IO_ATTR_VALID) ? 1 : 0); in qlt_24xx_retry_term_exchange()
1984 if (mcmd) in qlt_24xx_retry_term_exchange()
1985 qlt_build_abts_resp_iocb(mcmd); in qlt_24xx_retry_term_exchange()
2049 struct qla_tgt_mgmt_cmd *mcmd = in qlt_do_tmr_work() local
2051 struct qla_hw_data *ha = mcmd->vha->hw; in qlt_do_tmr_work()
2056 switch (mcmd->tmr_func) { in qlt_do_tmr_work()
2058 tag = le32_to_cpu(mcmd->orig_iocb.abts.exchange_addr_to_abort); in qlt_do_tmr_work()
2065 rc = ha->tgt.tgt_ops->handle_tmr(mcmd, mcmd->unpacked_lun, in qlt_do_tmr_work()
2066 mcmd->tmr_func, tag); in qlt_do_tmr_work()
2069 spin_lock_irqsave(mcmd->qpair->qp_lock_ptr, flags); in qlt_do_tmr_work()
2070 switch (mcmd->tmr_func) { in qlt_do_tmr_work()
2072 mcmd->fc_tm_rsp = FCP_TMF_REJECTED; in qlt_do_tmr_work()
2073 qlt_build_abts_resp_iocb(mcmd); in qlt_do_tmr_work()
2080 qlt_send_busy(mcmd->qpair, &mcmd->orig_iocb.atio, in qlt_do_tmr_work()
2087 qlt_send_notify_ack(mcmd->qpair, in qlt_do_tmr_work()
2088 &mcmd->orig_iocb.imm_ntfy, 0, 0, 0, 0, 0, 0); in qlt_do_tmr_work()
2091 spin_unlock_irqrestore(mcmd->qpair->qp_lock_ptr, flags); in qlt_do_tmr_work()
2093 ql_dbg(ql_dbg_tgt_mgt, mcmd->vha, 0xf052, in qlt_do_tmr_work()
2095 mcmd->vha->vp_idx, rc); in qlt_do_tmr_work()
2096 mempool_free(mcmd, qla_tgt_mgmt_cmd_mempool); in qlt_do_tmr_work()
2105 struct qla_tgt_mgmt_cmd *mcmd; in __qlt_24xx_handle_abts() local
2113 mcmd = mempool_alloc(qla_tgt_mgmt_cmd_mempool, GFP_ATOMIC); in __qlt_24xx_handle_abts()
2114 if (mcmd == NULL) { in __qlt_24xx_handle_abts()
2120 memset(mcmd, 0, sizeof(*mcmd)); in __qlt_24xx_handle_abts()
2121 mcmd->cmd_type = TYPE_TGT_TMCMD; in __qlt_24xx_handle_abts()
2122 mcmd->sess = sess; in __qlt_24xx_handle_abts()
2123 memcpy(&mcmd->orig_iocb.abts, abts, sizeof(mcmd->orig_iocb.abts)); in __qlt_24xx_handle_abts()
2124 mcmd->reset_count = ha->base_qpair->chip_reset; in __qlt_24xx_handle_abts()
2125 mcmd->tmr_func = QLA_TGT_ABTS; in __qlt_24xx_handle_abts()
2126 mcmd->qpair = h->qpair; in __qlt_24xx_handle_abts()
2127 mcmd->vha = vha; in __qlt_24xx_handle_abts()
2133 mcmd->se_cmd.cpuid = h->cpuid; in __qlt_24xx_handle_abts()
2138 mempool_free(mcmd, qla_tgt_mgmt_cmd_mempool); in __qlt_24xx_handle_abts()
2141 mcmd->unpacked_lun = abort_cmd->se_cmd.orig_fe_lun; in __qlt_24xx_handle_abts()
2144 mcmd->qpair = abort_cmd->qpair; in __qlt_24xx_handle_abts()
2145 mcmd->se_cmd.cpuid = abort_cmd->se_cmd.cpuid; in __qlt_24xx_handle_abts()
2146 mcmd->abort_io_attr = abort_cmd->atio.u.isp24.attr; in __qlt_24xx_handle_abts()
2147 mcmd->flags = QLA24XX_MGMT_ABORT_IO_ATTR_VALID; in __qlt_24xx_handle_abts()
2150 INIT_WORK(&mcmd->work, qlt_do_tmr_work); in __qlt_24xx_handle_abts()
2151 queue_work_on(mcmd->se_cmd.cpuid, qla_tgt_wq, &mcmd->work); in __qlt_24xx_handle_abts()
2231 struct qla_tgt_mgmt_cmd *mcmd, uint32_t resp_code) in qlt_24xx_send_task_mgmt_ctio() argument
2233 struct scsi_qla_host *ha = mcmd->vha; in qlt_24xx_send_task_mgmt_ctio()
2234 struct atio_from_isp *atio = &mcmd->orig_iocb.atio; in qlt_24xx_send_task_mgmt_ctio()
2254 ctio->nport_handle = cpu_to_le16(mcmd->sess->loop_id); in qlt_24xx_send_task_mgmt_ctio()
2277 void qlt_free_mcmd(struct qla_tgt_mgmt_cmd *mcmd) in qlt_free_mcmd() argument
2279 mempool_free(mcmd, qla_tgt_mgmt_cmd_mempool); in qlt_free_mcmd()
2352 void qlt_xmit_tm_rsp(struct qla_tgt_mgmt_cmd *mcmd) in qlt_xmit_tm_rsp() argument
2354 struct scsi_qla_host *vha = mcmd->sess->vha; in qlt_xmit_tm_rsp()
2357 struct qla_qpair *qpair = mcmd->qpair; in qlt_xmit_tm_rsp()
2362 mcmd, mcmd->fc_tm_rsp, mcmd->flags); in qlt_xmit_tm_rsp()
2366 if (!vha->flags.online || mcmd->reset_count != qpair->chip_reset) { in qlt_xmit_tm_rsp()
2374 mcmd->reset_count, qpair->chip_reset); in qlt_xmit_tm_rsp()
2375 ha->tgt.tgt_ops->free_mcmd(mcmd); in qlt_xmit_tm_rsp()
2380 if (mcmd->flags == QLA24XX_MGMT_SEND_NACK) { in qlt_xmit_tm_rsp()
2381 switch (mcmd->orig_iocb.imm_ntfy.u.isp24.status_subcode) { in qlt_xmit_tm_rsp()
2387 mcmd->sess->port_name, mcmd->fc_tm_rsp, in qlt_xmit_tm_rsp()
2388 mcmd->flags); in qlt_xmit_tm_rsp()
2389 qlt_schedule_sess_for_deletion(mcmd->sess); in qlt_xmit_tm_rsp()
2393 &mcmd->orig_iocb.imm_ntfy, 0, 0, 0, 0, 0, 0); in qlt_xmit_tm_rsp()
2397 if (mcmd->orig_iocb.atio.u.raw.entry_type == ABTS_RECV_24XX) { in qlt_xmit_tm_rsp()
2398 qlt_build_abts_resp_iocb(mcmd); in qlt_xmit_tm_rsp()
2401 qlt_24xx_send_task_mgmt_ctio(qpair, mcmd, in qlt_xmit_tm_rsp()
2402 mcmd->fc_tm_rsp); in qlt_xmit_tm_rsp()
2413 ha->tgt.tgt_ops->free_mcmd(mcmd); in qlt_xmit_tm_rsp()
4446 struct qla_tgt_mgmt_cmd *mcmd; in qlt_issue_task_mgmt() local
4450 mcmd = mempool_alloc(qla_tgt_mgmt_cmd_mempool, GFP_ATOMIC); in qlt_issue_task_mgmt()
4451 if (!mcmd) { in qlt_issue_task_mgmt()
4458 memset(mcmd, 0, sizeof(*mcmd)); in qlt_issue_task_mgmt()
4459 mcmd->sess = sess; in qlt_issue_task_mgmt()
4462 memcpy(&mcmd->orig_iocb.imm_ntfy, iocb, in qlt_issue_task_mgmt()
4463 sizeof(mcmd->orig_iocb.imm_ntfy)); in qlt_issue_task_mgmt()
4465 mcmd->tmr_func = fn; in qlt_issue_task_mgmt()
4466 mcmd->flags = flags; in qlt_issue_task_mgmt()
4467 mcmd->reset_count = ha->base_qpair->chip_reset; in qlt_issue_task_mgmt()
4468 mcmd->qpair = h->qpair; in qlt_issue_task_mgmt()
4469 mcmd->vha = vha; in qlt_issue_task_mgmt()
4470 mcmd->se_cmd.cpuid = h->cpuid; in qlt_issue_task_mgmt()
4471 mcmd->unpacked_lun = lun; in qlt_issue_task_mgmt()
4480 h = qlt_find_qphint(vha, mcmd->unpacked_lun); in qlt_issue_task_mgmt()
4481 mcmd->qpair = h->qpair; in qlt_issue_task_mgmt()
4482 mcmd->se_cmd.cpuid = h->cpuid; in qlt_issue_task_mgmt()
4494 INIT_WORK(&mcmd->work, qlt_do_tmr_work); in qlt_issue_task_mgmt()
4495 queue_work_on(mcmd->se_cmd.cpuid, qla_tgt_wq, in qlt_issue_task_mgmt()
4496 &mcmd->work); in qlt_issue_task_mgmt()
4533 struct qla_tgt_mgmt_cmd *mcmd; in __qlt_abort_task() local
4537 mcmd = mempool_alloc(qla_tgt_mgmt_cmd_mempool, GFP_ATOMIC); in __qlt_abort_task()
4538 if (mcmd == NULL) { in __qlt_abort_task()
4544 memset(mcmd, 0, sizeof(*mcmd)); in __qlt_abort_task()
4546 mcmd->sess = sess; in __qlt_abort_task()
4547 memcpy(&mcmd->orig_iocb.imm_ntfy, iocb, in __qlt_abort_task()
4548 sizeof(mcmd->orig_iocb.imm_ntfy)); in __qlt_abort_task()
4552 mcmd->reset_count = ha->base_qpair->chip_reset; in __qlt_abort_task()
4553 mcmd->tmr_func = QLA_TGT_2G_ABORT_TASK; in __qlt_abort_task()
4554 mcmd->qpair = ha->base_qpair; in __qlt_abort_task()
4556 rc = ha->tgt.tgt_ops->handle_tmr(mcmd, unpacked_lun, mcmd->tmr_func, in __qlt_abort_task()
4562 mempool_free(mcmd, qla_tgt_mgmt_cmd_mempool); in __qlt_abort_task()
5807 struct qla_tgt_mgmt_cmd *mcmd; in qlt_handle_abts_completion() local
5810 mcmd = qlt_ctio_to_cmd(vha, rsp, pkt->handle, pkt); in qlt_handle_abts_completion()
5811 if (mcmd == NULL && h != QLA_TGT_SKIP_HANDLE) { in qlt_handle_abts_completion()
5818 if (mcmd) in qlt_handle_abts_completion()
5819 vha = mcmd->vha; in qlt_handle_abts_completion()
5830 ha->tgt.tgt_ops->free_mcmd(mcmd); in qlt_handle_abts_completion()
5834 pkt, mcmd); in qlt_handle_abts_completion()
5841 ha->tgt.tgt_ops->free_mcmd(mcmd); in qlt_handle_abts_completion()
5843 } else if (mcmd) { in qlt_handle_abts_completion()
5844 ha->tgt.tgt_ops->free_mcmd(mcmd); in qlt_handle_abts_completion()