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;
161 rval = qedi_cleanup_all_io(qedi, qedi_conn, qedi_cmd->task, true);
177 static void qedi_process_tmf_resp(struct qedi_ctx *qedi,
195 QEDI_ERR(&qedi->dbg_ctx,
245 queue_work(qedi->tmf_thread, &qedi_cmd->tmf_work);
257 static void qedi_process_login_resp(struct qedi_ctx *qedi,
273 task_ctx = qedi_get_task_mem(&qedi->tasks, cmd->task_id);
313 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_TID,
319 static void qedi_get_rq_bdq_buf(struct qedi_ctx *qedi,
325 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_CONN,
327 len, qedi->bdq_prod_idx,
328 (qedi->bdq_prod_idx % qedi->rq_num_entries));
333 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_CONN,
339 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_CONN,
342 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_CONN,
348 memcpy(ptr, (void *)qedi->bdq[idx].buf_addr, len);
358 static void qedi_put_rq_bdq_buf(struct qedi_ctx *qedi,
368 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_CONN,
374 pbl = (struct scsi_bd *)qedi->bdq_pbl;
375 pbl += (qedi->bdq_prod_idx % qedi->rq_num_entries);
376 pbl->address.hi = cpu_to_le32(QEDI_U64_HI(qedi->bdq[idx].buf_dma));
377 pbl->address.lo = cpu_to_le32(QEDI_U64_LO(qedi->bdq[idx].buf_dma));
378 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_CONN,
387 qedi->bdq_prod_idx += count;
389 writew(qedi->bdq_prod_idx, qedi->bdq_primary_prod);
390 readw(qedi->bdq_primary_prod);
392 writew(qedi->bdq_prod_idx, qedi->bdq_secondary_prod);
393 readw(qedi->bdq_secondary_prod);
396 static void qedi_unsol_pdu_adjust_bdq(struct qedi_ctx *qedi,
401 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_CONN,
404 qedi_get_rq_bdq_buf(qedi, cqe, bdq_data, pdu_len);
405 qedi_put_rq_bdq_buf(qedi, cqe, (num_bdqs + 1));
408 static int qedi_process_nopin_mesg(struct qedi_ctx *qedi,
440 spin_lock_irqsave(&qedi->hba_lock, flags);
441 qedi_unsol_pdu_adjust_bdq(qedi, &cqe->cqe_unsolicited,
445 spin_unlock_irqrestore(&qedi->hba_lock, flags);
458 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_TID,
479 static void qedi_process_async_mesg(struct qedi_ctx *qedi,
502 spin_lock_irqsave(&qedi->hba_lock, flags);
503 qedi_unsol_pdu_adjust_bdq(qedi, &cqe->cqe_unsolicited,
505 spin_unlock_irqrestore(&qedi->hba_lock, flags);
533 static void qedi_process_reject_mesg(struct qedi_ctx *qedi,
553 spin_lock_irqsave(&qedi->hba_lock, flags);
554 qedi_unsol_pdu_adjust_bdq(qedi, &cqe->cqe_unsolicited,
556 spin_unlock_irqrestore(&qedi->hba_lock, flags);
575 static void qedi_scsi_completion(struct qedi_ctx *qedi,
591 qedi_conn = qedi->cid_que.conn_cid_tbl[iscsi_cid];
602 QEDI_WARN(&qedi->dbg_ctx, "sc_cmd is NULL!\n");
607 QEDI_WARN(&qedi->dbg_ctx,
613 QEDI_WARN(&qedi->dbg_ctx,
642 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO,
660 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_TID,
665 qedi_trace_io(qedi, task, cmd->task_id, QEDI_IO_TRACE_RSP);
673 static void qedi_mtask_completion(struct qedi_ctx *qedi,
687 qedi_scsi_completion(qedi, cqe, task, iscsi_conn);
690 qedi_process_login_resp(qedi, cqe, task, conn);
693 qedi_process_tmf_resp(qedi, cqe, task, conn);
696 qedi_process_text_resp(qedi, cqe, task, conn);
699 qedi_process_logout_resp(qedi, cqe, task, conn);
702 qedi_process_nopin_mesg(qedi, cqe, task, conn, que_idx);
705 QEDI_ERR(&qedi->dbg_ctx, "unknown opcode\n");
709 static void qedi_process_nopin_local_cmpl(struct qedi_ctx *qedi,
718 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_UNSOL,
729 static void qedi_process_cmd_cleanup_resp(struct qedi_ctx *qedi,
744 qedi_conn = qedi->cid_que.conn_cid_tbl[iscsi_cid];
746 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO,
759 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
779 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
785 QEDI_NOTICE(&qedi->dbg_ctx,
793 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
814 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
823 struct qedi_ctx *qedi = work->qedi;
841 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_CONN,
846 QEDI_WARN(&qedi->dbg_ctx, "Invalid CqE type\n");
851 q_conn = qedi->cid_que.conn_cid_tbl[iscsi_cid];
853 QEDI_WARN(&qedi->dbg_ctx,
874 QEDI_WARN(&qedi->dbg_ctx, "task is NULL\n");
882 qedi_process_nopin_local_cmpl(qedi, &cqe->cqe_solicited,
888 qedi_mtask_completion(qedi, cqe, task, q_conn, que_idx);
894 qedi_process_nopin_mesg(qedi, cqe, task, q_conn,
898 qedi_process_async_mesg(qedi, cqe, task, q_conn,
902 qedi_process_reject_mesg(qedi, cqe, task, q_conn,
908 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM, "Dummy CqE\n");
911 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM, "CleanUp CqE\n");
912 qedi_process_cmd_cleanup_resp(qedi, &cqe->cqe_solicited, conn);
915 QEDI_ERR(&qedi->dbg_ctx, "Error cqe.\n");
936 QEDI_INFO(&qedi_conn->qedi->dbg_ctx, QEDI_LOG_MP_REQ,
967 struct qedi_ctx *qedi = qedi_conn->qedi;
981 tid = qedi_get_task_idx(qedi);
986 (struct iscsi_task_context *)qedi_get_task_mem(&qedi->tasks,
1007 qedi_update_itt_map(qedi, tid, task->itt, qedi_cmd);
1071 struct qedi_ctx *qedi = qedi_conn->qedi;
1082 tid = qedi_get_task_idx(qedi);
1087 (struct iscsi_task_context *)qedi_get_task_mem(&qedi->tasks,
1101 qedi_update_itt_map(qedi, tid, task->itt, qedi_cmd);
1135 int qedi_cleanup_all_io(struct qedi_ctx *qedi, struct qedi_conn *qedi_conn,
1161 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
1179 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
1195 QEDI_WARN(&qedi->dbg_ctx,
1205 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
1213 test_bit(QEDI_IN_RECOVERY, &qedi->flags),
1216 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
1225 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
1231 iscsi_host_for_each_session(qedi->shost,
1233 qedi_ops->common->drain(qedi->cdev);
1239 test_bit(QEDI_IN_RECOVERY, &qedi->flags),
1241 iscsi_host_for_each_session(qedi->shost,
1246 iscsi_host_for_each_session(qedi->shost,
1252 void qedi_clearsq(struct qedi_ctx *qedi, struct qedi_conn *qedi_conn,
1263 QEDI_WARN(&qedi->dbg_ctx,
1269 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO,
1273 qedi_ops->clear_sq(qedi->cdev, qedi_ep->handle);
1275 rval = qedi_cleanup_all_io(qedi, qedi_conn, task, true);
1277 QEDI_ERR(&qedi->dbg_ctx,
1284 static int qedi_wait_for_cleanup_request(struct qedi_ctx *qedi,
1303 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
1317 struct qedi_ctx *qedi = qedi_conn->qedi;
1333 QEDI_ERR(&qedi->dbg_ctx, "Invalid RTT. Letting abort timeout.\n");
1339 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO,
1350 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO,
1356 QEDI_ERR(&qedi->dbg_ctx, "DONT SEND CLEANUP/ABORT %d\n",
1363 QEDI_ERR(&qedi->dbg_ctx, "Memory allocation failed\n");
1375 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM,
1386 rval = qedi_wait_for_cleanup_request(qedi, qedi_conn, ctask, qedi_cmd,
1389 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO,
1427 struct qedi_ctx *qedi = qedi_conn->qedi;
1443 tid = qedi_get_task_idx(qedi);
1448 (struct iscsi_task_context *)qedi_get_task_mem(&qedi->tasks,
1458 qedi_update_itt_map(qedi, tid, mtask->itt, qedi_cmd);
1509 struct qedi_ctx *qedi = qedi_conn->qedi;
1519 queue_work(qedi->tmf_thread, &qedi_cmd->tmf_work);
1527 QEDI_ERR(&qedi->dbg_ctx, "Invalid tmf, cid=0x%x\n",
1543 struct qedi_ctx *qedi = qedi_conn->qedi;
1559 tid = qedi_get_task_idx(qedi);
1564 (struct iscsi_task_context *)qedi_get_task_mem(&qedi->tasks,
1579 qedi_update_itt_map(qedi, tid, task->itt, qedi_cmd);
1642 struct qedi_ctx *qedi = qedi_conn->qedi;
1658 tid = qedi_get_task_idx(qedi);
1663 (struct iscsi_task_context *)qedi_get_task_mem(&qedi->tasks,
1685 qedi_update_itt_map(qedi, tid, task->itt, qedi_cmd);
1767 QEDI_INFO(&cmd->conn->qedi->dbg_ctx, QEDI_LOG_IO,
1778 static int qedi_map_scsi_sg(struct qedi_ctx *qedi, struct qedi_cmd *cmd)
1793 sg_count = dma_map_sg(&qedi->pdev->dev, scsi_sglist(sc),
1809 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_IO,
1845 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_IO, "sg[%d] size=0x%x",
1861 QEDI_ERR(&qedi->dbg_ctx,
1865 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_IO, "byte_count = %d\n",
1879 bd_count = qedi_map_scsi_sg(cmd->conn->qedi, cmd);
1913 void qedi_trace_io(struct qedi_ctx *qedi, struct iscsi_task *task,
1922 spin_lock_irqsave(&qedi->io_trace_lock, flags);
1924 io_log = &qedi->io_trace_buf[qedi->io_trace_idx];
1936 io_log->fast_sgs = qedi->fast_sgls;
1937 io_log->cached_sgs = qedi->cached_sgls;
1938 io_log->slow_sgs = qedi->slow_sgls;
1939 io_log->cached_sge = qedi->use_cached_sge;
1940 io_log->slow_sge = qedi->use_slow_sge;
1941 io_log->fast_sge = qedi->use_fast_sge;
1948 io_log->req_cpu = smp_processor_id() % qedi->num_queues;
1952 io_log->req_cpu = smp_processor_id() % qedi->num_queues;
1953 io_log->intr_cpu = qedi->intr_cpu;
1957 qedi->io_trace_idx++;
1958 if (qedi->io_trace_idx == QEDI_IO_TRACE_SIZE)
1959 qedi->io_trace_idx = 0;
1961 qedi->use_cached_sge = false;
1962 qedi->use_slow_sge = false;
1963 qedi->use_fast_sge = false;
1965 spin_unlock_irqrestore(&qedi->io_trace_lock, flags);
1973 struct qedi_ctx *qedi = iscsi_host_priv(shost);
2003 tid = qedi_get_task_idx(qedi);
2008 (struct iscsi_task_context *)qedi_get_task_mem(&qedi->tasks,
2021 cq_idx = smp_processor_id() % qedi->num_queues;
2040 qedi_update_itt_map(qedi, tid, task->itt, cmd);
2095 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_IO,
2138 QEDI_INFO(&qedi_conn->qedi->dbg_ctx, QEDI_LOG_SCSI_TM,