Lines Matching refs:mcmd

1178 static int qlt_reset(struct scsi_qla_host *vha, void *iocb, int mcmd)  in qlt_reset()  argument
1210 mcmd, loop_id); in qlt_reset()
1212 return qlt_issue_task_mgmt(sess, 0, mcmd, iocb, QLA24XX_MGMT_SEND_NACK); in qlt_reset()
1728 static int qlt_build_abts_resp_iocb(struct qla_tgt_mgmt_cmd *mcmd) in qlt_build_abts_resp_iocb() argument
1730 struct scsi_qla_host *vha = mcmd->vha; in qlt_build_abts_resp_iocb()
1737 struct abts_recv_from_24xx *abts = &mcmd->orig_iocb.abts; in qlt_build_abts_resp_iocb()
1738 struct qla_qpair *qpair = mcmd->qpair; in qlt_build_abts_resp_iocb()
1742 ha, mcmd->fc_tm_rsp); in qlt_build_abts_resp_iocb()
1764 qpair->req->outstanding_cmds[h] = (srb_t *)mcmd; in qlt_build_abts_resp_iocb()
1787 if (mcmd->fc_tm_rsp == FCP_TMF_CMPL) { in qlt_build_abts_resp_iocb()
1890 struct qla_qpair *qpair, response_t *pkt, struct qla_tgt_mgmt_cmd *mcmd) in qlt_24xx_retry_term_exchange() argument
1904 if (mcmd) in qlt_24xx_retry_term_exchange()
1906 entry = &mcmd->orig_iocb.abts; in qlt_24xx_retry_term_exchange()
1925 if (mcmd) { in qlt_24xx_retry_term_exchange()
1928 if (mcmd->flags & QLA24XX_MGMT_ABORT_IO_ATTR_VALID) in qlt_24xx_retry_term_exchange()
1929 tmp |= (mcmd->abort_io_attr << 9); in qlt_24xx_retry_term_exchange()
1945 (mcmd && mcmd->flags & QLA24XX_MGMT_ABORT_IO_ATTR_VALID) ? 1 : 0); in qlt_24xx_retry_term_exchange()
1954 if (mcmd) in qlt_24xx_retry_term_exchange()
1955 qlt_build_abts_resp_iocb(mcmd); in qlt_24xx_retry_term_exchange()
2030 struct qla_tgt_mgmt_cmd *mcmd = in qlt_do_tmr_work() local
2032 struct qla_hw_data *ha = mcmd->vha->hw; in qlt_do_tmr_work()
2037 switch (mcmd->tmr_func) { in qlt_do_tmr_work()
2039 tag = le32_to_cpu(mcmd->orig_iocb.abts.exchange_addr_to_abort); in qlt_do_tmr_work()
2046 rc = ha->tgt.tgt_ops->handle_tmr(mcmd, mcmd->unpacked_lun, in qlt_do_tmr_work()
2047 mcmd->tmr_func, tag); in qlt_do_tmr_work()
2050 spin_lock_irqsave(mcmd->qpair->qp_lock_ptr, flags); in qlt_do_tmr_work()
2051 switch (mcmd->tmr_func) { in qlt_do_tmr_work()
2053 mcmd->fc_tm_rsp = FCP_TMF_REJECTED; in qlt_do_tmr_work()
2054 qlt_build_abts_resp_iocb(mcmd); in qlt_do_tmr_work()
2061 qlt_send_busy(mcmd->qpair, &mcmd->orig_iocb.atio, in qlt_do_tmr_work()
2068 qlt_send_notify_ack(mcmd->qpair, in qlt_do_tmr_work()
2069 &mcmd->orig_iocb.imm_ntfy, 0, 0, 0, 0, 0, 0); in qlt_do_tmr_work()
2072 spin_unlock_irqrestore(mcmd->qpair->qp_lock_ptr, flags); in qlt_do_tmr_work()
2074 ql_dbg(ql_dbg_tgt_mgt, mcmd->vha, 0xf052, in qlt_do_tmr_work()
2076 mcmd->vha->vp_idx, rc); in qlt_do_tmr_work()
2077 mempool_free(mcmd, qla_tgt_mgmt_cmd_mempool); in qlt_do_tmr_work()
2086 struct qla_tgt_mgmt_cmd *mcmd; in __qlt_24xx_handle_abts() local
2093 mcmd = mempool_alloc(qla_tgt_mgmt_cmd_mempool, GFP_ATOMIC); in __qlt_24xx_handle_abts()
2094 if (mcmd == NULL) { in __qlt_24xx_handle_abts()
2100 memset(mcmd, 0, sizeof(*mcmd)); in __qlt_24xx_handle_abts()
2101 mcmd->cmd_type = TYPE_TGT_TMCMD; in __qlt_24xx_handle_abts()
2102 mcmd->sess = sess; in __qlt_24xx_handle_abts()
2103 memcpy(&mcmd->orig_iocb.abts, abts, sizeof(mcmd->orig_iocb.abts)); in __qlt_24xx_handle_abts()
2104 mcmd->reset_count = ha->base_qpair->chip_reset; in __qlt_24xx_handle_abts()
2105 mcmd->tmr_func = QLA_TGT_ABTS; in __qlt_24xx_handle_abts()
2106 mcmd->qpair = h->qpair; in __qlt_24xx_handle_abts()
2107 mcmd->vha = vha; in __qlt_24xx_handle_abts()
2113 mcmd->se_cmd.cpuid = h->cpuid; in __qlt_24xx_handle_abts()
2121 mcmd->qpair = abort_cmd->qpair; in __qlt_24xx_handle_abts()
2122 mcmd->se_cmd.cpuid = abort_cmd->se_cmd.cpuid; in __qlt_24xx_handle_abts()
2123 mcmd->abort_io_attr = abort_cmd->atio.u.isp24.attr; in __qlt_24xx_handle_abts()
2124 mcmd->flags = QLA24XX_MGMT_ABORT_IO_ATTR_VALID; in __qlt_24xx_handle_abts()
2128 INIT_WORK(&mcmd->work, qlt_do_tmr_work); in __qlt_24xx_handle_abts()
2129 queue_work_on(mcmd->se_cmd.cpuid, qla_tgt_wq, &mcmd->work); in __qlt_24xx_handle_abts()
2209 struct qla_tgt_mgmt_cmd *mcmd, uint32_t resp_code) in qlt_24xx_send_task_mgmt_ctio() argument
2211 struct scsi_qla_host *ha = mcmd->vha; in qlt_24xx_send_task_mgmt_ctio()
2212 struct atio_from_isp *atio = &mcmd->orig_iocb.atio; in qlt_24xx_send_task_mgmt_ctio()
2232 ctio->nport_handle = cpu_to_le16(mcmd->sess->loop_id); in qlt_24xx_send_task_mgmt_ctio()
2255 void qlt_free_mcmd(struct qla_tgt_mgmt_cmd *mcmd) in qlt_free_mcmd() argument
2257 mempool_free(mcmd, qla_tgt_mgmt_cmd_mempool); in qlt_free_mcmd()
2330 void qlt_xmit_tm_rsp(struct qla_tgt_mgmt_cmd *mcmd) in qlt_xmit_tm_rsp() argument
2332 struct scsi_qla_host *vha = mcmd->sess->vha; in qlt_xmit_tm_rsp()
2335 struct qla_qpair *qpair = mcmd->qpair; in qlt_xmit_tm_rsp()
2340 mcmd, mcmd->fc_tm_rsp, mcmd->flags); in qlt_xmit_tm_rsp()
2344 if (!vha->flags.online || mcmd->reset_count != qpair->chip_reset) { in qlt_xmit_tm_rsp()
2352 mcmd->reset_count, qpair->chip_reset); in qlt_xmit_tm_rsp()
2353 ha->tgt.tgt_ops->free_mcmd(mcmd); in qlt_xmit_tm_rsp()
2358 if (mcmd->flags == QLA24XX_MGMT_SEND_NACK) { in qlt_xmit_tm_rsp()
2359 switch (mcmd->orig_iocb.imm_ntfy.u.isp24.status_subcode) { in qlt_xmit_tm_rsp()
2365 mcmd->sess->port_name, mcmd->fc_tm_rsp, in qlt_xmit_tm_rsp()
2366 mcmd->flags); in qlt_xmit_tm_rsp()
2367 qlt_schedule_sess_for_deletion(mcmd->sess); in qlt_xmit_tm_rsp()
2371 &mcmd->orig_iocb.imm_ntfy, 0, 0, 0, 0, 0, 0); in qlt_xmit_tm_rsp()
2375 if (mcmd->orig_iocb.atio.u.raw.entry_type == ABTS_RECV_24XX) { in qlt_xmit_tm_rsp()
2376 qlt_build_abts_resp_iocb(mcmd); in qlt_xmit_tm_rsp()
2379 qlt_24xx_send_task_mgmt_ctio(qpair, mcmd, in qlt_xmit_tm_rsp()
2380 mcmd->fc_tm_rsp); in qlt_xmit_tm_rsp()
2391 ha->tgt.tgt_ops->free_mcmd(mcmd); in qlt_xmit_tm_rsp()
4396 struct qla_tgt_mgmt_cmd *mcmd; in qlt_issue_task_mgmt() local
4400 mcmd = mempool_alloc(qla_tgt_mgmt_cmd_mempool, GFP_ATOMIC); in qlt_issue_task_mgmt()
4401 if (!mcmd) { in qlt_issue_task_mgmt()
4408 memset(mcmd, 0, sizeof(*mcmd)); in qlt_issue_task_mgmt()
4409 mcmd->sess = sess; in qlt_issue_task_mgmt()
4412 memcpy(&mcmd->orig_iocb.imm_ntfy, iocb, in qlt_issue_task_mgmt()
4413 sizeof(mcmd->orig_iocb.imm_ntfy)); in qlt_issue_task_mgmt()
4415 mcmd->tmr_func = fn; in qlt_issue_task_mgmt()
4416 mcmd->flags = flags; in qlt_issue_task_mgmt()
4417 mcmd->reset_count = ha->base_qpair->chip_reset; in qlt_issue_task_mgmt()
4418 mcmd->qpair = h->qpair; in qlt_issue_task_mgmt()
4419 mcmd->vha = vha; in qlt_issue_task_mgmt()
4420 mcmd->se_cmd.cpuid = h->cpuid; in qlt_issue_task_mgmt()
4421 mcmd->unpacked_lun = lun; in qlt_issue_task_mgmt()
4430 h = qlt_find_qphint(vha, mcmd->unpacked_lun); in qlt_issue_task_mgmt()
4431 mcmd->qpair = h->qpair; in qlt_issue_task_mgmt()
4432 mcmd->se_cmd.cpuid = h->cpuid; in qlt_issue_task_mgmt()
4444 INIT_WORK(&mcmd->work, qlt_do_tmr_work); in qlt_issue_task_mgmt()
4445 queue_work_on(mcmd->se_cmd.cpuid, qla_tgt_wq, in qlt_issue_task_mgmt()
4446 &mcmd->work); in qlt_issue_task_mgmt()
4483 struct qla_tgt_mgmt_cmd *mcmd; in __qlt_abort_task() local
4487 mcmd = mempool_alloc(qla_tgt_mgmt_cmd_mempool, GFP_ATOMIC); in __qlt_abort_task()
4488 if (mcmd == NULL) { in __qlt_abort_task()
4494 memset(mcmd, 0, sizeof(*mcmd)); in __qlt_abort_task()
4496 mcmd->sess = sess; in __qlt_abort_task()
4497 memcpy(&mcmd->orig_iocb.imm_ntfy, iocb, in __qlt_abort_task()
4498 sizeof(mcmd->orig_iocb.imm_ntfy)); in __qlt_abort_task()
4502 mcmd->reset_count = ha->base_qpair->chip_reset; in __qlt_abort_task()
4503 mcmd->tmr_func = QLA_TGT_2G_ABORT_TASK; in __qlt_abort_task()
4504 mcmd->qpair = ha->base_qpair; in __qlt_abort_task()
4506 rc = ha->tgt.tgt_ops->handle_tmr(mcmd, unpacked_lun, mcmd->tmr_func, in __qlt_abort_task()
4512 mempool_free(mcmd, qla_tgt_mgmt_cmd_mempool); in __qlt_abort_task()
5704 struct qla_tgt_mgmt_cmd *mcmd; in qlt_handle_abts_completion() local
5707 mcmd = qlt_ctio_to_cmd(vha, rsp, pkt->handle, pkt); in qlt_handle_abts_completion()
5708 if (mcmd == NULL && h != QLA_TGT_SKIP_HANDLE) { in qlt_handle_abts_completion()
5715 if (mcmd) in qlt_handle_abts_completion()
5716 vha = mcmd->vha; in qlt_handle_abts_completion()
5727 ha->tgt.tgt_ops->free_mcmd(mcmd); in qlt_handle_abts_completion()
5731 pkt, mcmd); in qlt_handle_abts_completion()
5738 ha->tgt.tgt_ops->free_mcmd(mcmd); in qlt_handle_abts_completion()
5740 } else if (mcmd) { in qlt_handle_abts_completion()
5741 ha->tgt.tgt_ops->free_mcmd(mcmd); in qlt_handle_abts_completion()