Lines Matching refs:mcmd

1202 static int qlt_reset(struct scsi_qla_host *vha, void *iocb, int mcmd)
1232 "scsi(%ld): resetting (session %p from port %8phC mcmd %x, "
1234 mcmd, loop_id);
1236 return qlt_issue_task_mgmt(sess, 0, mcmd, iocb, QLA24XX_MGMT_SEND_NACK);
1758 static int qlt_build_abts_resp_iocb(struct qla_tgt_mgmt_cmd *mcmd)
1760 struct scsi_qla_host *vha = mcmd->vha;
1767 struct abts_recv_from_24xx *abts = &mcmd->orig_iocb.abts;
1768 struct qla_qpair *qpair = mcmd->qpair;
1772 ha, mcmd->fc_tm_rsp);
1794 qpair->req->outstanding_cmds[h] = (srb_t *)mcmd;
1817 if (mcmd->fc_tm_rsp == FCP_TMF_CMPL) {
1920 struct qla_qpair *qpair, response_t *pkt, struct qla_tgt_mgmt_cmd *mcmd)
1934 if (mcmd)
1936 entry = &mcmd->orig_iocb.abts;
1955 if (mcmd) {
1958 if (mcmd->flags & QLA24XX_MGMT_ABORT_IO_ATTR_VALID)
1959 tmp |= (mcmd->abort_io_attr << 9);
1975 (mcmd && mcmd->flags & QLA24XX_MGMT_ABORT_IO_ATTR_VALID) ? 1 : 0);
1984 if (mcmd)
1985 qlt_build_abts_resp_iocb(mcmd);
2049 struct qla_tgt_mgmt_cmd *mcmd =
2051 struct qla_hw_data *ha = mcmd->vha->hw;
2056 switch (mcmd->tmr_func) {
2058 tag = le32_to_cpu(mcmd->orig_iocb.abts.exchange_addr_to_abort);
2065 rc = ha->tgt.tgt_ops->handle_tmr(mcmd, mcmd->unpacked_lun,
2066 mcmd->tmr_func, tag);
2069 spin_lock_irqsave(mcmd->qpair->qp_lock_ptr, flags);
2070 switch (mcmd->tmr_func) {
2072 mcmd->fc_tm_rsp = FCP_TMF_REJECTED;
2073 qlt_build_abts_resp_iocb(mcmd);
2080 qlt_send_busy(mcmd->qpair, &mcmd->orig_iocb.atio,
2087 qlt_send_notify_ack(mcmd->qpair,
2088 &mcmd->orig_iocb.imm_ntfy, 0, 0, 0, 0, 0, 0);
2091 spin_unlock_irqrestore(mcmd->qpair->qp_lock_ptr, flags);
2093 ql_dbg(ql_dbg_tgt_mgt, mcmd->vha, 0xf052,
2095 mcmd->vha->vp_idx, rc);
2096 mempool_free(mcmd, qla_tgt_mgmt_cmd_mempool);
2105 struct qla_tgt_mgmt_cmd *mcmd;
2113 mcmd = mempool_alloc(qla_tgt_mgmt_cmd_mempool, GFP_ATOMIC);
2114 if (mcmd == NULL) {
2120 memset(mcmd, 0, sizeof(*mcmd));
2121 mcmd->cmd_type = TYPE_TGT_TMCMD;
2122 mcmd->sess = sess;
2123 memcpy(&mcmd->orig_iocb.abts, abts, sizeof(mcmd->orig_iocb.abts));
2124 mcmd->reset_count = ha->base_qpair->chip_reset;
2125 mcmd->tmr_func = QLA_TGT_ABTS;
2126 mcmd->qpair = h->qpair;
2127 mcmd->vha = vha;
2133 mcmd->se_cmd.cpuid = h->cpuid;
2138 mempool_free(mcmd, qla_tgt_mgmt_cmd_mempool);
2141 mcmd->unpacked_lun = abort_cmd->se_cmd.orig_fe_lun;
2144 mcmd->qpair = abort_cmd->qpair;
2145 mcmd->se_cmd.cpuid = abort_cmd->se_cmd.cpuid;
2146 mcmd->abort_io_attr = abort_cmd->atio.u.isp24.attr;
2147 mcmd->flags = QLA24XX_MGMT_ABORT_IO_ATTR_VALID;
2150 INIT_WORK(&mcmd->work, qlt_do_tmr_work);
2151 queue_work_on(mcmd->se_cmd.cpuid, qla_tgt_wq, &mcmd->work);
2231 struct qla_tgt_mgmt_cmd *mcmd, uint32_t resp_code)
2233 struct scsi_qla_host *ha = mcmd->vha;
2234 struct atio_from_isp *atio = &mcmd->orig_iocb.atio;
2254 ctio->nport_handle = cpu_to_le16(mcmd->sess->loop_id);
2277 void qlt_free_mcmd(struct qla_tgt_mgmt_cmd *mcmd)
2279 mempool_free(mcmd, qla_tgt_mgmt_cmd_mempool);
2352 void qlt_xmit_tm_rsp(struct qla_tgt_mgmt_cmd *mcmd)
2354 struct scsi_qla_host *vha = mcmd->sess->vha;
2357 struct qla_qpair *qpair = mcmd->qpair;
2361 "TM response mcmd (%p) status %#x state %#x",
2362 mcmd, mcmd->fc_tm_rsp, mcmd->flags);
2366 if (!vha->flags.online || mcmd->reset_count != qpair->chip_reset) {
2374 mcmd->reset_count, qpair->chip_reset);
2375 ha->tgt.tgt_ops->free_mcmd(mcmd);
2380 if (mcmd->flags == QLA24XX_MGMT_SEND_NACK) {
2381 switch (mcmd->orig_iocb.imm_ntfy.u.isp24.status_subcode) {
2387 mcmd->sess->port_name, mcmd->fc_tm_rsp,
2388 mcmd->flags);
2389 qlt_schedule_sess_for_deletion(mcmd->sess);
2393 &mcmd->orig_iocb.imm_ntfy, 0, 0, 0, 0, 0, 0);
2397 if (mcmd->orig_iocb.atio.u.raw.entry_type == ABTS_RECV_24XX) {
2398 qlt_build_abts_resp_iocb(mcmd);
2401 qlt_24xx_send_task_mgmt_ctio(qpair, mcmd,
2402 mcmd->fc_tm_rsp);
2413 ha->tgt.tgt_ops->free_mcmd(mcmd);
4445 struct qla_tgt_mgmt_cmd *mcmd;
4449 mcmd = mempool_alloc(qla_tgt_mgmt_cmd_mempool, GFP_ATOMIC);
4450 if (!mcmd) {
4457 memset(mcmd, 0, sizeof(*mcmd));
4458 mcmd->sess = sess;
4461 memcpy(&mcmd->orig_iocb.imm_ntfy, iocb,
4462 sizeof(mcmd->orig_iocb.imm_ntfy));
4464 mcmd->tmr_func = fn;
4465 mcmd->flags = flags;
4466 mcmd->reset_count = ha->base_qpair->chip_reset;
4467 mcmd->qpair = h->qpair;
4468 mcmd->vha = vha;
4469 mcmd->se_cmd.cpuid = h->cpuid;
4470 mcmd->unpacked_lun = lun;
4479 h = qlt_find_qphint(vha, mcmd->unpacked_lun);
4480 mcmd->qpair = h->qpair;
4481 mcmd->se_cmd.cpuid = h->cpuid;
4493 INIT_WORK(&mcmd->work, qlt_do_tmr_work);
4494 queue_work_on(mcmd->se_cmd.cpuid, qla_tgt_wq,
4495 &mcmd->work);
4532 struct qla_tgt_mgmt_cmd *mcmd;
4536 mcmd = mempool_alloc(qla_tgt_mgmt_cmd_mempool, GFP_ATOMIC);
4537 if (mcmd == NULL) {
4543 memset(mcmd, 0, sizeof(*mcmd));
4545 mcmd->sess = sess;
4546 memcpy(&mcmd->orig_iocb.imm_ntfy, iocb,
4547 sizeof(mcmd->orig_iocb.imm_ntfy));
4551 mcmd->reset_count = ha->base_qpair->chip_reset;
4552 mcmd->tmr_func = QLA_TGT_2G_ABORT_TASK;
4553 mcmd->qpair = ha->base_qpair;
4555 rc = ha->tgt.tgt_ops->handle_tmr(mcmd, unpacked_lun, mcmd->tmr_func,
4561 mempool_free(mcmd, qla_tgt_mgmt_cmd_mempool);
5806 struct qla_tgt_mgmt_cmd *mcmd;
5809 mcmd = qlt_ctio_to_cmd(vha, rsp, pkt->handle, pkt);
5810 if (mcmd == NULL && h != QLA_TGT_SKIP_HANDLE) {
5812 "qla_target(%d): ABTS Comp without mcmd\n",
5817 if (mcmd)
5818 vha = mcmd->vha;
5829 ha->tgt.tgt_ops->free_mcmd(mcmd);
5833 pkt, mcmd);
5840 ha->tgt.tgt_ops->free_mcmd(mcmd);
5842 } else if (mcmd) {
5843 ha->tgt.tgt_ops->free_mcmd(mcmd);