Lines Matching refs:mcmd

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