scsi: qedi: Pass send_iscsi_tmf task to abort
authorMike Christie <michael.christie@oracle.com>
Tue, 25 May 2021 18:18:19 +0000 (13:18 -0500)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 2 Jun 2021 05:28:23 +0000 (01:28 -0400)
qedi_abort_work knows what task to abort so just pass it to send_iscsi_tmf.

Link: https://lore.kernel.org/r/20210525181821.7617-27-michael.christie@oracle.com
Reviewed-by: Manish Rangankar <mrangankar@marvell.com>
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qedi/qedi_fw.c

index f08fe967bcfecc5adf7313ae92c71185bc6075ca..4ee1ce1dcdefc5cdcc101173303531cbe93a7f15 100644 (file)
@@ -15,7 +15,7 @@
 #include "qedi_fw_scsi.h"
 
 static int send_iscsi_tmf(struct qedi_conn *qedi_conn,
-                         struct iscsi_task *mtask);
+                         struct iscsi_task *mtask, struct iscsi_task *ctask);
 
 void qedi_iscsi_unmap_sg_list(struct qedi_cmd *cmd)
 {
@@ -1428,7 +1428,7 @@ static void qedi_abort_work(struct work_struct *work)
        }
 
 send_tmf:
-       send_iscsi_tmf(qedi_conn, qedi_cmd->task);
+       send_iscsi_tmf(qedi_conn, qedi_cmd->task, ctask);
 
 clear_cleanup:
        clear_bit(QEDI_CONN_FW_CLEANUP, &qedi_conn->flags);
@@ -1454,14 +1454,13 @@ ldel_exit:
        clear_bit(QEDI_CONN_FW_CLEANUP, &qedi_conn->flags);
 }
 
-static int send_iscsi_tmf(struct qedi_conn *qedi_conn, struct iscsi_task *mtask)
+static int send_iscsi_tmf(struct qedi_conn *qedi_conn, struct iscsi_task *mtask,
+                         struct iscsi_task *ctask)
 {
        struct iscsi_tmf_request_hdr tmf_pdu_header;
        struct iscsi_task_params task_params;
        struct qedi_ctx *qedi = qedi_conn->qedi;
        struct e4_iscsi_task_context *fw_task_ctx;
-       struct iscsi_conn *conn = qedi_conn->cls_conn->dd_data;
-       struct iscsi_task *ctask;
        struct iscsi_tm *tmf_hdr;
        struct qedi_cmd *qedi_cmd;
        struct qedi_cmd *cmd;
@@ -1501,12 +1500,6 @@ static int send_iscsi_tmf(struct qedi_conn *qedi_conn, struct iscsi_task *mtask)
 
        if ((tmf_hdr->flags & ISCSI_FLAG_TM_FUNC_MASK) ==
             ISCSI_TM_FUNC_ABORT_TASK) {
-               ctask = iscsi_itt_to_task(conn, tmf_hdr->rtt);
-               if (!ctask || !ctask->sc) {
-                       QEDI_ERR(&qedi->dbg_ctx,
-                                "Could not get reference task\n");
-                       return 0;
-               }
                cmd = (struct qedi_cmd *)ctask->dd_data;
                tmf_pdu_header.rtt =
                                qedi_set_itt(cmd->task_id,
@@ -1559,7 +1552,7 @@ int qedi_send_iscsi_tmf(struct qedi_conn *qedi_conn, struct iscsi_task *mtask)
        case ISCSI_TM_FUNC_LOGICAL_UNIT_RESET:
        case ISCSI_TM_FUNC_TARGET_WARM_RESET:
        case ISCSI_TM_FUNC_TARGET_COLD_RESET:
-               rc = send_iscsi_tmf(qedi_conn, mtask);
+               rc = send_iscsi_tmf(qedi_conn, mtask, NULL);
                break;
        default:
                QEDI_ERR(&qedi->dbg_ctx, "Invalid tmf, cid=0x%x\n",