From: Damien Le Moal <dlemoal@kernel.org>
To: "Martin K . Petersen" <martin.petersen@oracle.com>,
"James E . J . Bottomley" <James.Bottomley@HansenPartnership.com>,
linux-scsi@vger.kernel.org, linux-ide@vger.kernel.org,
Niklas Cassel <cassel@kernel.org>,
linux-usb@vger.kernel.org, Alan Stern <stern@rowland.harvard.edu>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-s390@vger.kernel.org, Heiko Carstens <hca@linux.ibm.com>
Subject: [PATCH v5 24/40] scsi: qla2xxx: use 16-bits defined sense codes
Date: Mon, 7 Sep 2026 11:43:27 +0900 [thread overview]
Message-ID: <20260907024343.1046387-25-dlemoal@kernel.org> (raw)
In-Reply-To: <20260907024343.1046387-1-dlemoal@kernel.org>
Refactor the qla2xxx driver to use scsi_set_sense() and replace all
hard-coded additional sense codes and additional sense code qualifiers
with the enum values defined in include/scsi/scsi_sense.h. This helps with
code clarity as the sense codes being processed are easier to test and
self-documented.
While at it, the declaration function qlt_send_resp_ctio(), which is
modified to take a single 16-bits sense code argument, is changed to a
static function declaration since that function is used only in the file
where it is defined.
No functional change intended.
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
---
drivers/scsi/qla2xxx/qla_isr.c | 9 ++-
drivers/scsi/qla2xxx/qla_target.c | 99 ++++++++++++++++---------------
drivers/scsi/qla2xxx/qla_target.h | 3 -
3 files changed, 57 insertions(+), 54 deletions(-)
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 63b70d4abbf0..89c2af3fee4f 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -3263,21 +3263,24 @@ qla2x00_handle_dif_error(srb_t *sp, void *pkt)
/* check guard */
if (e_guard != a_guard) {
- scsi_build_sense(cmd, 1, ILLEGAL_REQUEST, 0x10, 0x1);
+ scsi_set_sense(cmd, 1, ILLEGAL_REQUEST,
+ LOGICAL_BLOCK_GUARD_CHECK_FAILED);
set_host_byte(cmd, DID_ABORT);
return 1;
}
/* check ref tag */
if (e_ref_tag != a_ref_tag) {
- scsi_build_sense(cmd, 1, ILLEGAL_REQUEST, 0x10, 0x3);
+ scsi_set_sense(cmd, 1, ILLEGAL_REQUEST,
+ LOGICAL_BLOCK_REFERENCE_TAG_CHECK_FAILED);
set_host_byte(cmd, DID_ABORT);
return 1;
}
/* check appl tag */
if (e_app_tag != a_app_tag) {
- scsi_build_sense(cmd, 1, ILLEGAL_REQUEST, 0x10, 0x2);
+ scsi_set_sense(cmd, 1, ILLEGAL_REQUEST,
+ LOGICAL_BLOCK_APPLICATION_TAG_CHECK_FAILED);
set_host_byte(cmd, DID_ABORT);
return 1;
}
diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c
index 53a505df8da0..431a59d499b3 100644
--- a/drivers/scsi/qla2xxx/qla_target.c
+++ b/drivers/scsi/qla2xxx/qla_target.c
@@ -2243,18 +2243,20 @@ void qlt_free_ul_mcmd(struct qla_hw_data *ha, struct qla_tgt_mgmt_cmd *mcmd)
* ha->hardware_lock supposed to be held on entry. Might drop it, then
* reacquire
*/
-void qlt_send_resp_ctio(struct qla_qpair *qpair, struct qla_tgt_cmd *cmd,
- uint8_t scsi_status, uint8_t sense_key, uint8_t asc, uint8_t ascq)
+static void qlt_send_resp_ctio(struct qla_qpair *qpair, struct qla_tgt_cmd *cmd,
+ uint8_t scsi_status, uint8_t sense_key, uint16_t sense_code)
{
struct atio_from_isp *atio = &cmd->atio;
struct ctio7_to_24xx *ctio;
uint16_t temp;
struct scsi_qla_host *vha = cmd->vha;
+ uint8_t asc = scsi_sense_code_asc(sense_code);
+ uint8_t ascq = scsi_sense_code_ascq(sense_code);
ql_dbg(ql_dbg_tgt_dif, vha, 0x3066,
"Sending response CTIO7 (vha=%p, atio=%p, scsi_status=%02x, "
"sense_key=%02x, asc=%02x, ascq=%02x",
- vha, atio, scsi_status, sense_key, asc, ascq);
+ vha, atio, scsi_status, sense_key, asc, ascq);
ctio = (struct ctio7_to_24xx *)qla2x00_alloc_iocbs(vha, NULL);
if (!ctio) {
@@ -2677,44 +2679,47 @@ static void qlt_print_dif_err(struct qla_tgt_prm *prm)
{
struct qla_tgt_cmd *cmd;
struct scsi_qla_host *vha;
+ u16 scode;
/* asc 0x10=dif error */
- if (prm->sense_buffer && (prm->sense_buffer[12] == 0x10)) {
- cmd = prm->cmd;
- vha = cmd->vha;
- /* ASCQ */
- switch (prm->sense_buffer[13]) {
- case 1:
- ql_dbg(ql_dbg_tgt_dif, vha, 0xe00b,
- "BE detected Guard TAG ERR: lba[0x%llx|%lld] len[0x%x] "
- "se_cmd=%p tag[%x]",
- cmd->lba, cmd->lba, cmd->num_blks, &cmd->se_cmd,
- cmd->atio.u.isp24.exchange_addr);
- break;
- case 2:
- ql_dbg(ql_dbg_tgt_dif, vha, 0xe00c,
- "BE detected APP TAG ERR: lba[0x%llx|%lld] len[0x%x] "
- "se_cmd=%p tag[%x]",
- cmd->lba, cmd->lba, cmd->num_blks, &cmd->se_cmd,
- cmd->atio.u.isp24.exchange_addr);
- break;
- case 3:
- ql_dbg(ql_dbg_tgt_dif, vha, 0xe00f,
- "BE detected REF TAG ERR: lba[0x%llx|%lld] len[0x%x] "
- "se_cmd=%p tag[%x]",
- cmd->lba, cmd->lba, cmd->num_blks, &cmd->se_cmd,
- cmd->atio.u.isp24.exchange_addr);
- break;
- default:
- ql_dbg(ql_dbg_tgt_dif, vha, 0xe010,
- "BE detected Dif ERR: lba[%llx|%lld] len[%x] "
- "se_cmd=%p tag[%x]",
- cmd->lba, cmd->lba, cmd->num_blks, &cmd->se_cmd,
- cmd->atio.u.isp24.exchange_addr);
- break;
- }
- ql_dump_buffer(ql_dbg_tgt_dif, vha, 0xe011, cmd->cdb, 16);
+ if (!prm->sense_buffer ||
+ prm->sense_buffer[12] != ASC_ID_CRC_OR_ECC_ERROR)
+ return;
+
+ cmd = prm->cmd;
+ vha = cmd->vha;
+ scode = scsi_sense_code(prm->sense_buffer[12], prm->sense_buffer[13]);
+ switch (scode) {
+ case LOGICAL_BLOCK_GUARD_CHECK_FAILED:
+ ql_dbg(ql_dbg_tgt_dif, vha, 0xe00b,
+ "BE detected Guard TAG ERR: lba[0x%llx|%lld] len[0x%x] "
+ "se_cmd=%p tag[%x]",
+ cmd->lba, cmd->lba, cmd->num_blks, &cmd->se_cmd,
+ cmd->atio.u.isp24.exchange_addr);
+ break;
+ case LOGICAL_BLOCK_APPLICATION_TAG_CHECK_FAILED:
+ ql_dbg(ql_dbg_tgt_dif, vha, 0xe00c,
+ "BE detected APP TAG ERR: lba[0x%llx|%lld] len[0x%x] "
+ "se_cmd=%p tag[%x]",
+ cmd->lba, cmd->lba, cmd->num_blks, &cmd->se_cmd,
+ cmd->atio.u.isp24.exchange_addr);
+ break;
+ case LOGICAL_BLOCK_REFERENCE_TAG_CHECK_FAILED:
+ ql_dbg(ql_dbg_tgt_dif, vha, 0xe00f,
+ "BE detected REF TAG ERR: lba[0x%llx|%lld] len[0x%x] "
+ "se_cmd=%p tag[%x]",
+ cmd->lba, cmd->lba, cmd->num_blks, &cmd->se_cmd,
+ cmd->atio.u.isp24.exchange_addr);
+ break;
+ default:
+ ql_dbg(ql_dbg_tgt_dif, vha, 0xe010,
+ "BE detected Dif ERR: lba[%llx|%lld] len[%x] "
+ "se_cmd=%p tag[%x]",
+ cmd->lba, cmd->lba, cmd->num_blks, &cmd->se_cmd,
+ cmd->atio.u.isp24.exchange_addr);
+ break;
}
+ ql_dump_buffer(ql_dbg_tgt_dif, vha, 0xe011, cmd->cdb, 16);
}
/*
@@ -3467,7 +3472,8 @@ qlt_handle_dif_error(struct qla_qpair *qpair, struct qla_tgt_cmd *cmd,
uint8_t *ap = &sts->actual_dif[0];
uint8_t *ep = &sts->expected_dif[0];
uint64_t lba = cmd->se_cmd.t_task_lba;
- uint8_t scsi_status, sense_key, asc, ascq;
+ uint8_t scsi_status, sense_key;
+ uint16_t sense_code = 0;
struct scsi_qla_host *vha = cmd->vha;
cmd->trc_flags |= TRC_DIF_ERR;
@@ -3483,7 +3489,7 @@ qlt_handle_dif_error(struct qla_qpair *qpair, struct qla_tgt_cmd *cmd,
ql_dbg(ql_dbg_tgt_dif, vha, 0xf075,
"%s: aborted %d state %d\n", __func__, cmd->aborted, cmd->state);
- scsi_status = sense_key = asc = ascq = 0;
+ scsi_status = sense_key = 0;
/* check appl tag */
if (cmd->e_app_tag != cmd->a_app_tag) {
@@ -3497,8 +3503,7 @@ qlt_handle_dif_error(struct qla_qpair *qpair, struct qla_tgt_cmd *cmd,
cmd->dif_err_code = DIF_ERR_APP;
scsi_status = SAM_STAT_CHECK_CONDITION;
sense_key = ABORTED_COMMAND;
- asc = 0x10;
- ascq = 0x2;
+ sense_code = LOGICAL_BLOCK_APPLICATION_TAG_CHECK_FAILED;
}
/* check ref tag */
@@ -3513,8 +3518,7 @@ qlt_handle_dif_error(struct qla_qpair *qpair, struct qla_tgt_cmd *cmd,
cmd->dif_err_code = DIF_ERR_REF;
scsi_status = SAM_STAT_CHECK_CONDITION;
sense_key = ABORTED_COMMAND;
- asc = 0x10;
- ascq = 0x3;
+ sense_code = LOGICAL_BLOCK_REFERENCE_TAG_CHECK_FAILED;
goto out;
}
@@ -3530,8 +3534,7 @@ qlt_handle_dif_error(struct qla_qpair *qpair, struct qla_tgt_cmd *cmd,
cmd->dif_err_code = DIF_ERR_GRD;
scsi_status = SAM_STAT_CHECK_CONDITION;
sense_key = ABORTED_COMMAND;
- asc = 0x10;
- ascq = 0x1;
+ sense_code = LOGICAL_BLOCK_GUARD_CHECK_FAILED;
}
out:
switch (cmd->state) {
@@ -3547,8 +3550,8 @@ qlt_handle_dif_error(struct qla_qpair *qpair, struct qla_tgt_cmd *cmd,
break;
}
- qlt_send_resp_ctio(qpair, cmd, scsi_status, sense_key, asc,
- ascq);
+ qlt_send_resp_ctio(qpair, cmd, scsi_status, sense_key,
+ sense_code);
/* assume scsi status gets out on the wire.
* Will not wait for completion.
*/
diff --git a/drivers/scsi/qla2xxx/qla_target.h b/drivers/scsi/qla2xxx/qla_target.h
index 61072fb41b29..71bc1affb1bc 100644
--- a/drivers/scsi/qla2xxx/qla_target.h
+++ b/drivers/scsi/qla2xxx/qla_target.h
@@ -1178,7 +1178,4 @@ extern irqreturn_t qla83xx_msix_atio_q(int, void *);
extern void qlt_logo_completion_handler(fc_port_t *, int);
extern void qlt_do_generation_tick(struct scsi_qla_host *, int *);
-void qlt_send_resp_ctio(struct qla_qpair *, struct qla_tgt_cmd *, uint8_t,
- uint8_t, uint8_t, uint8_t);
-
#endif /* __QLA_TARGET_H */
--
2.55.0
next prev parent reply other threads:[~2026-09-07 2:44 UTC|newest]
Thread overview: 112+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-07 2:43 [PATCH v5 00/40] Use defined 16-bits ASC/ASCQ combinations Damien Le Moal
2026-09-07 2:43 ` [PATCH v5 01/40] scsi: define all additional sense codes and their qualifiers Damien Le Moal
2026-09-07 3:14 ` sashiko-bot
2026-09-07 2:43 ` [PATCH v5 02/40] scsi: constants: use defined sense codes Damien Le Moal
2026-09-07 2:51 ` sashiko-bot
2026-09-07 2:43 ` [PATCH v5 03/40] scsi: constants: rename internal struct field names Damien Le Moal
2026-09-07 2:48 ` sashiko-bot
2026-09-07 2:43 ` [PATCH v5 04/40] scsi: rename sense field of struct scsi_failure Damien Le Moal
2026-09-07 2:54 ` sashiko-bot
2026-09-07 2:43 ` [PATCH v5 05/40] scsi: prepare for using 16-bits defined sense codes Damien Le Moal
2026-09-07 2:54 ` sashiko-bot
2026-09-07 2:43 ` [PATCH v5 06/40] scsi: use struct scsi_sense_hdr to log sense keys and codes Damien Le Moal
2026-09-07 2:52 ` sashiko-bot
2026-09-07 20:05 ` Bart Van Assche
2026-09-08 0:32 ` Damien Le Moal
2026-09-07 2:43 ` [PATCH v5 07/40] scsi: core: use 16-bits defined sense codes Damien Le Moal
2026-09-07 2:54 ` sashiko-bot
2026-09-07 20:03 ` Bart Van Assche
2026-09-08 0:32 ` Damien Le Moal
2026-09-07 2:43 ` [PATCH v5 08/40] scsi: sd: " Damien Le Moal
2026-09-07 3:11 ` sashiko-bot
2026-09-07 2:43 ` [PATCH v5 09/40] scsi: sr: " Damien Le Moal
2026-09-07 2:54 ` sashiko-bot
2026-09-07 2:43 ` [PATCH v5 10/40] scsi: ses: " Damien Le Moal
2026-09-07 2:56 ` sashiko-bot
2026-09-07 2:43 ` [PATCH v5 11/40] scsi: ch: " Damien Le Moal
2026-09-07 2:54 ` sashiko-bot
2026-09-07 2:43 ` [PATCH v5 12/40] scsi: st: " Damien Le Moal
2026-09-07 2:57 ` sashiko-bot
2026-09-07 2:43 ` [PATCH v5 13/40] scsi: device_handlers: hp_sw: " Damien Le Moal
2026-09-07 2:50 ` sashiko-bot
2026-09-07 2:43 ` [PATCH v5 14/40] scsi: device_handlers: rdac: " Damien Le Moal
2026-09-07 2:52 ` sashiko-bot
2026-09-07 14:11 ` Johannes Thumshirn
2026-09-07 2:43 ` [PATCH v5 15/40] scsi: device_handlers: emc: " Damien Le Moal
2026-09-07 3:02 ` sashiko-bot
2026-09-07 14:13 ` Johannes Thumshirn
2026-09-07 2:43 ` [PATCH v5 16/40] scsi: device_handlers: alua: " Damien Le Moal
2026-09-07 2:57 ` sashiko-bot
2026-09-07 14:21 ` Johannes Thumshirn
2026-09-07 2:43 ` [PATCH v5 17/40] scsi: mpt3sas: " Damien Le Moal
2026-09-07 2:55 ` sashiko-bot
2026-09-07 14:28 ` Johannes Thumshirn
2026-09-07 2:43 ` [PATCH v5 18/40] scsi: mpi3mr: " Damien Le Moal
2026-09-07 2:55 ` sashiko-bot
2026-09-07 14:30 ` Johannes Thumshirn
2026-09-07 2:43 ` [PATCH v5 19/40] scsi: 3w-xxxx: " Damien Le Moal
2026-09-07 2:58 ` sashiko-bot
2026-09-07 14:39 ` Johannes Thumshirn
2026-09-07 2:43 ` [PATCH v5 20/40] scsi: leapraid: " Damien Le Moal
2026-09-07 3:00 ` sashiko-bot
2026-09-07 14:48 ` Johannes Thumshirn
2026-09-07 2:43 ` [PATCH v5 21/40] scsi: megaraid: " Damien Le Moal
2026-09-07 2:56 ` sashiko-bot
2026-09-07 14:50 ` Johannes Thumshirn
2026-09-07 2:43 ` [PATCH v5 22/40] scsi: myrX: " Damien Le Moal
2026-09-07 2:59 ` sashiko-bot
2026-09-07 14:54 ` Johannes Thumshirn
2026-09-07 2:43 ` [PATCH v5 23/40] scsi: smartpqi: " Damien Le Moal
2026-09-07 2:57 ` sashiko-bot
2026-09-07 14:57 ` Johannes Thumshirn
2026-09-07 2:43 ` Damien Le Moal [this message]
2026-09-07 2:58 ` [PATCH v5 24/40] scsi: qla2xxx: " sashiko-bot
2026-09-07 2:43 ` [PATCH v5 25/40] scsi: ps3rom: " Damien Le Moal
2026-09-07 3:03 ` sashiko-bot
2026-09-07 15:25 ` Johannes Thumshirn
2026-09-07 2:43 ` [PATCH v5 26/40] scsi: lpfc: " Damien Le Moal
2026-09-07 3:02 ` sashiko-bot
2026-09-07 15:26 ` Johannes Thumshirn
2026-09-07 2:43 ` [PATCH v5 27/40] scsi: stex: " Damien Le Moal
2026-09-07 3:04 ` sashiko-bot
2026-09-07 15:26 ` Johannes Thumshirn
2026-09-07 2:43 ` [PATCH v5 28/40] scsi: mvumi: " Damien Le Moal
2026-09-07 3:03 ` sashiko-bot
2026-09-07 15:29 ` Johannes Thumshirn
2026-09-07 2:43 ` [PATCH v5 29/40] scsi: libiscsi: " Damien Le Moal
2026-09-07 3:03 ` sashiko-bot
2026-09-07 15:29 ` Johannes Thumshirn
2026-09-07 2:43 ` [PATCH v5 30/40] scsi: ibmvscsi_tgt: " Damien Le Moal
2026-09-07 3:05 ` sashiko-bot
2026-09-07 15:32 ` Johannes Thumshirn
2026-09-07 2:43 ` [PATCH v5 31/40] scsi: scsi_debug: " Damien Le Moal
2026-09-07 3:12 ` sashiko-bot
2026-09-07 15:41 ` Johannes Thumshirn
2026-09-07 2:43 ` [PATCH v5 32/40] scsi: hpsa: " Damien Le Moal
2026-09-07 3:03 ` sashiko-bot
2026-09-07 15:57 ` Johannes Thumshirn
2026-09-07 2:43 ` [PATCH v5 33/40] scsi: storvsc: " Damien Le Moal
2026-09-07 3:06 ` sashiko-bot
2026-09-07 15:59 ` Johannes Thumshirn
2026-09-07 2:43 ` [PATCH v5 34/40] target: " Damien Le Moal
2026-09-07 3:11 ` sashiko-bot
2026-09-07 2:43 ` [PATCH v5 35/40] usb: storage: " Damien Le Moal
2026-09-07 3:02 ` sashiko-bot
2026-09-07 16:13 ` Johannes Thumshirn
2026-09-08 0:27 ` Damien Le Moal
2026-09-08 1:20 ` Alan Stern
2026-09-07 2:43 ` [PATCH v5 36/40] cdrom: " Damien Le Moal
2026-09-07 3:03 ` sashiko-bot
2026-09-07 16:21 ` Johannes Thumshirn
2026-09-07 2:43 ` [PATCH v5 37/40] ata: libata: " Damien Le Moal
2026-09-07 3:04 ` sashiko-bot
2026-09-07 16:21 ` Johannes Thumshirn
2026-09-07 2:43 ` [PATCH v5 38/40] s390: scsi: " Damien Le Moal
2026-09-07 3:09 ` sashiko-bot
2026-09-07 16:25 ` Johannes Thumshirn
2026-09-07 2:43 ` [PATCH v5 39/40] scsi: cleanup scsi_proto.h Damien Le Moal
2026-09-07 3:07 ` sashiko-bot
2026-09-07 16:45 ` Johannes Thumshirn
2026-09-07 2:43 ` [PATCH v5 40/40] scsi: remove scsi_build_sense() and scsi_build_sense_buffer() Damien Le Moal
2026-09-07 3:02 ` sashiko-bot
2026-09-07 16:57 ` Johannes Thumshirn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260907024343.1046387-25-dlemoal@kernel.org \
--to=dlemoal@kernel.org \
--cc=James.Bottomley@HansenPartnership.com \
--cc=cassel@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=hca@linux.ibm.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=stern@rowland.harvard.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox