Lines Matching refs:qedi

11 #include "qedi.h"
30 static void qedi_process_logout_resp(struct qedi_ctx *qedi,
58 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_TID,
68 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO,
81 static void qedi_process_text_resp(struct qedi_ctx *qedi,
95 task_ctx = qedi_get_task_mem(&qedi->tasks, cmd->task_id);
122 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_TID,
132 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO,
153 struct qedi_ctx *qedi = qedi_conn->qedi;
162 rval = qedi_cleanup_all_io(qedi, qedi_conn, qedi_cmd->task, true);
175 static void qedi_process_tmf_resp(struct qedi_ctx *qedi,
193 QEDI_ERR(&qedi->dbg_ctx,
235 queue_work(qedi->tmf_thread, &qedi_cmd->tmf_work);
246 static void qedi_process_login_resp(struct qedi_ctx *qedi,
262 task_ctx = qedi_get_task_mem(&qedi->tasks, cmd->task_id);
302 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_TID,
308 static void qedi_get_rq_bdq_buf(struct qedi_ctx *qedi,
314 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_CONN,
316 len, qedi->bdq_prod_idx,
317 (qedi->bdq_prod_idx % qedi->rq_num_entries));
322 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_CONN,
328 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_CONN,
331 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_CONN,
337 memcpy(ptr, (void *)qedi->bdq[idx].buf_addr, len);
347 static void qedi_put_rq_bdq_buf(struct qedi_ctx *qedi,
357 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_CONN,
363 pbl = (struct scsi_bd *)qedi->bdq_pbl;
364 pbl += (qedi->bdq_prod_idx % qedi->rq_num_entries);
365 pbl->address.hi = cpu_to_le32(QEDI_U64_HI(qedi->bdq[idx].buf_dma));
366 pbl->address.lo = cpu_to_le32(QEDI_U64_LO(qedi->bdq[idx].buf_dma));
367 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_CONN,
376 qedi->bdq_prod_idx += count;
378 writew(qedi->bdq_prod_idx, qedi->bdq_primary_prod);
379 readw(qedi->bdq_primary_prod);
381 writew(qedi->bdq_prod_idx, qedi->bdq_secondary_prod);
382 readw(qedi->bdq_secondary_prod);
385 static void qedi_unsol_pdu_adjust_bdq(struct qedi_ctx *qedi,
390 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_CONN,
393 qedi_get_rq_bdq_buf(qedi, cqe, bdq_data, pdu_len);
394 qedi_put_rq_bdq_buf(qedi, cqe, (num_bdqs + 1));
397 static int qedi_process_nopin_mesg(struct qedi_ctx *qedi,
429 spin_lock_irqsave(&qedi->hba_lock, flags);
430 qedi_unsol_pdu_adjust_bdq(qedi, &cqe->cqe_unsolicited,
434 spin_unlock_irqrestore(&qedi->hba_lock, flags);
447 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_TID,
468 static void qedi_process_async_mesg(struct qedi_ctx *qedi,
491 spin_lock_irqsave(&qedi->hba_lock, flags);
492 qedi_unsol_pdu_adjust_bdq(qedi, &cqe->cqe_unsolicited,
494 spin_unlock_irqrestore(&qedi->hba_lock, flags);
522 static void qedi_process_reject_mesg(struct qedi_ctx *qedi,
542 spin_lock_irqsave(&qedi->hba_lock, flags);
543 qedi_unsol_pdu_adjust_bdq(qedi, &cqe->cqe_unsolicited,
545 spin_unlock_irqrestore(&qedi->hba_lock, flags);
564 static void qedi_scsi_completion(struct qedi_ctx *qedi,
580 qedi_conn = qedi->cid_que.conn_cid_tbl[iscsi_cid];
591 QEDI_WARN(&qedi->dbg_ctx, "sc_cmd is NULL!\n");
596 QEDI_WARN(&qedi->dbg_ctx,
602 QEDI_WARN(&qedi->dbg_ctx,
609 QEDI_WARN(&qedi->dbg_ctx,
638 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO,
656 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_TID,
661 qedi_trace_io(qedi, task, cmd->task_id, QEDI_IO_TRACE_RSP);
669 static void qedi_mtask_completion(struct qedi_ctx *qedi,
683 qedi_scsi_completion(qedi, cqe, task, iscsi_conn);
686 qedi_process_login_resp(qedi, cqe, task, conn);
689 qedi_process_tmf_resp(qedi, cqe, task, conn);
692 qedi_process_text_resp(qedi, cqe, task, conn);
695 qedi_process_logout_resp(qedi, cqe, task, conn);
698 qedi_process_nopin_mesg(qedi, cqe, task, conn, que_idx);
701 QEDI_ERR(&qedi->dbg_ctx, "unknown opcode\n");
705 static void qedi_process_nopin_local_cmpl(struct qedi_ctx *qedi,
714 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_UNSOL,
725 static void qedi_process_cmd_cleanup_resp(struct qedi_ctx *qedi,
743 qedi_conn = qedi->cid_que.conn_cid_tbl[iscsi_cid];
745 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO,
758 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
775 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
790 QEDI_NOTICE(&qedi->dbg_ctx,
799 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
819 qedi_get_proto_itt(qedi, cqe->itid, &ptmp_itt);
822 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
829 QEDI_NOTICE(&qedi->dbg_ctx,
837 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_TID,
842 qedi_get_proto_itt(qedi, cqe->itid, &ptmp_itt);
845 QEDI_ERR(&qedi->dbg_ctx,
853 struct qedi_ctx *qedi = work->qedi;
871 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_CONN,
876 QEDI_WARN(&qedi->dbg_ctx, "Invalid CqE type\n");
881 q_conn = qedi->cid_que.conn_cid_tbl[iscsi_cid];
883 QEDI_WARN(&qedi->dbg_ctx,
904 QEDI_WARN(&qedi->dbg_ctx, "task is NULL\n");
912 qedi_process_nopin_local_cmpl(qedi, &cqe->cqe_solicited,
918 qedi_mtask_completion(qedi, cqe, task, q_conn, que_idx);
924 qedi_process_nopin_mesg(qedi, cqe, task, q_conn,
928 qedi_process_async_mesg(qedi, cqe, task, q_conn,
932 qedi_process_reject_mesg(qedi, cqe, task, q_conn,
938 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM, "Dummy CqE\n");
941 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM, "CleanUp CqE\n");
942 qedi_process_cmd_cleanup_resp(qedi, &cqe->cqe_solicited, task,
946 QEDI_ERR(&qedi->dbg_ctx, "Error cqe.\n");
973 QEDI_INFO(&qedi_conn->qedi->dbg_ctx, QEDI_LOG_MP_REQ,
1004 struct qedi_ctx *qedi = qedi_conn->qedi;
1018 tid = qedi_get_task_idx(qedi);
1023 (struct e4_iscsi_task_context *)qedi_get_task_mem(&qedi->tasks,
1044 qedi_update_itt_map(qedi, tid, task->itt, qedi_cmd);
1108 struct qedi_ctx *qedi = qedi_conn->qedi;
1119 tid = qedi_get_task_idx(qedi);
1124 (struct e4_iscsi_task_context *)qedi_get_task_mem(&qedi->tasks,
1138 qedi_update_itt_map(qedi, tid, task->itt, qedi_cmd);
1172 int qedi_cleanup_all_io(struct qedi_ctx *qedi, struct qedi_conn *qedi_conn,
1198 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
1216 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
1232 QEDI_WARN(&qedi->dbg_ctx,
1242 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
1251 &qedi->flags)),
1254 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
1263 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
1269 iscsi_host_for_each_session(qedi->shost,
1271 qedi_ops->common->drain(qedi->cdev);
1278 &qedi->flags),
1280 iscsi_host_for_each_session(qedi->shost,
1285 iscsi_host_for_each_session(qedi->shost,
1291 void qedi_clearsq(struct qedi_ctx *qedi, struct qedi_conn *qedi_conn,
1302 QEDI_WARN(&qedi->dbg_ctx,
1308 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO,
1312 qedi_ops->clear_sq(qedi->cdev, qedi_ep->handle);
1314 rval = qedi_cleanup_all_io(qedi, qedi_conn, task, true);
1316 QEDI_ERR(&qedi->dbg_ctx,
1323 static int qedi_wait_for_cleanup_request(struct qedi_ctx *qedi,
1342 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
1356 struct qedi_ctx *qedi = qedi_conn->qedi;
1372 QEDI_ERR(&qedi->dbg_ctx, "Task already completed\n");
1377 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO,
1383 QEDI_ERR(&qedi->dbg_ctx, "DONT SEND CLEANUP/ABORT %d\n",
1390 QEDI_ERR(&qedi->dbg_ctx, "Memory allocation failed\n");
1400 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
1411 rval = qedi_wait_for_cleanup_request(qedi, qedi_conn, ctask, qedi_cmd,
1414 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO,
1420 tid = qedi_get_task_idx(qedi);
1422 QEDI_ERR(&qedi->dbg_ctx, "Invalid tid, cid=0x%x\n",
1459 struct qedi_ctx *qedi = qedi_conn->qedi;
1478 tid = qedi_get_task_idx(qedi);
1483 (struct e4_iscsi_task_context *)qedi_get_task_mem(&qedi->tasks,
1493 qedi_update_itt_map(qedi, tid, mtask->itt, qedi_cmd);
1505 QEDI_ERR(&qedi->dbg_ctx,
1552 struct qedi_ctx *qedi = qedi_conn->qedi;
1565 queue_work(qedi->tmf_thread, &qedi_cmd->tmf_work);
1573 tid = qedi_get_task_idx(qedi);
1575 QEDI_ERR(&qedi->dbg_ctx, "Invalid tid, cid=0x%x\n",
1584 QEDI_ERR(&qedi->dbg_ctx, "Invalid tmf, cid=0x%x\n",
1600 struct qedi_ctx *qedi = qedi_conn->qedi;
1616 tid = qedi_get_task_idx(qedi);
1621 (struct e4_iscsi_task_context *)qedi_get_task_mem(&qedi->tasks,
1636 qedi_update_itt_map(qedi, tid, task->itt, qedi_cmd);
1699 struct qedi_ctx *qedi = qedi_conn->qedi;
1715 tid = qedi_get_task_idx(qedi);
1720 (struct e4_iscsi_task_context *)qedi_get_task_mem(&qedi->tasks,
1742 qedi_update_itt_map(qedi, tid, task->itt, qedi_cmd);
1824 QEDI_INFO(&cmd->conn->qedi->dbg_ctx, QEDI_LOG_IO,
1835 static int qedi_map_scsi_sg(struct qedi_ctx *qedi, struct qedi_cmd *cmd)
1850 sg_count = dma_map_sg(&qedi->pdev->dev, scsi_sglist(sc),
1866 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_IO,
1902 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_IO, "sg[%d] size=0x%x",
1918 QEDI_ERR(&qedi->dbg_ctx,
1922 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_IO, "byte_count = %d\n",
1936 bd_count = qedi_map_scsi_sg(cmd->conn->qedi, cmd);
1970 void qedi_trace_io(struct qedi_ctx *qedi, struct iscsi_task *task,
1979 spin_lock_irqsave(&qedi->io_trace_lock, flags);
1981 io_log = &qedi->io_trace_buf[qedi->io_trace_idx];
1993 io_log->fast_sgs = qedi->fast_sgls;
1994 io_log->cached_sgs = qedi->cached_sgls;
1995 io_log->slow_sgs = qedi->slow_sgls;
1996 io_log->cached_sge = qedi->use_cached_sge;
1997 io_log->slow_sge = qedi->use_slow_sge;
1998 io_log->fast_sge = qedi->use_fast_sge;
2005 io_log->req_cpu = smp_processor_id() % qedi->num_queues;
2009 io_log->req_cpu = smp_processor_id() % qedi->num_queues;
2010 io_log->intr_cpu = qedi->intr_cpu;
2014 qedi->io_trace_idx++;
2015 if (qedi->io_trace_idx == QEDI_IO_TRACE_SIZE)
2016 qedi->io_trace_idx = 0;
2018 qedi->use_cached_sge = false;
2019 qedi->use_slow_sge = false;
2020 qedi->use_fast_sge = false;
2022 spin_unlock_irqrestore(&qedi->io_trace_lock, flags);
2030 struct qedi_ctx *qedi = iscsi_host_priv(shost);
2060 tid = qedi_get_task_idx(qedi);
2065 (struct e4_iscsi_task_context *)qedi_get_task_mem(&qedi->tasks,
2078 cq_idx = smp_processor_id() % qedi->num_queues;
2097 qedi_update_itt_map(qedi, tid, task->itt, cmd);
2152 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_IO,
2195 QEDI_INFO(&qedi_conn->qedi->dbg_ctx, QEDI_LOG_SCSI_TM,