Skip to content

Commit 4733fcb

Browse files
avasquez01James Bottomley
authored andcommitted
[SCSI] qla2xxx: Consolidate duplicate sense-data handling codes.
Signed-off-by: Andrew Vasquez <[email protected]> Signed-off-by: James Bottomley <[email protected]>
1 parent fd66c1b commit 4733fcb

File tree

1 file changed

+31
-54
lines changed

1 file changed

+31
-54
lines changed

drivers/scsi/qla2xxx/qla_isr.c

Lines changed: 31 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -822,6 +822,35 @@ qla2x00_process_response_queue(struct scsi_qla_host *ha)
822822
WRT_REG_WORD(ISP_RSP_Q_OUT(ha, reg), ha->rsp_ring_index);
823823
}
824824

825+
static inline void
826+
qla2x00_handle_sense(srb_t *sp, uint8_t *sense_data, uint32_t sense_len)
827+
{
828+
struct scsi_cmnd *cp = sp->cmd;
829+
830+
if (sense_len >= SCSI_SENSE_BUFFERSIZE)
831+
sense_len = SCSI_SENSE_BUFFERSIZE;
832+
833+
CMD_ACTUAL_SNSLEN(cp) = sense_len;
834+
sp->request_sense_length = sense_len;
835+
sp->request_sense_ptr = cp->sense_buffer;
836+
if (sp->request_sense_length > 32)
837+
sense_len = 32;
838+
839+
memcpy(cp->sense_buffer, sense_data, sense_len);
840+
841+
sp->request_sense_ptr += sense_len;
842+
sp->request_sense_length -= sense_len;
843+
if (sp->request_sense_length != 0)
844+
sp->ha->status_srb = sp;
845+
846+
DEBUG5(printk("%s(): Check condition Sense data, scsi(%ld:%d:%d:%d) "
847+
"cmd=%p pid=%ld\n", __func__, sp->ha->host_no, cp->device->channel,
848+
cp->device->id, cp->device->lun, cp, cp->serial_number));
849+
if (sense_len)
850+
DEBUG5(qla2x00_dump_buffer(cp->sense_buffer,
851+
CMD_ACTUAL_SNSLEN(cp)));
852+
}
853+
825854
/**
826855
* qla2x00_status_entry() - Process a Status IOCB entry.
827856
* @ha: SCSI driver HA context
@@ -976,36 +1005,11 @@ qla2x00_status_entry(scsi_qla_host_t *ha, void *pkt)
9761005
if (lscsi_status != SS_CHECK_CONDITION)
9771006
break;
9781007

979-
/* Copy Sense Data into sense buffer. */
9801008
memset(cp->sense_buffer, 0, SCSI_SENSE_BUFFERSIZE);
981-
9821009
if (!(scsi_status & SS_SENSE_LEN_VALID))
9831010
break;
9841011

985-
if (sense_len >= SCSI_SENSE_BUFFERSIZE)
986-
sense_len = SCSI_SENSE_BUFFERSIZE;
987-
988-
CMD_ACTUAL_SNSLEN(cp) = sense_len;
989-
sp->request_sense_length = sense_len;
990-
sp->request_sense_ptr = cp->sense_buffer;
991-
992-
if (sp->request_sense_length > 32)
993-
sense_len = 32;
994-
995-
memcpy(cp->sense_buffer, sense_data, sense_len);
996-
997-
sp->request_sense_ptr += sense_len;
998-
sp->request_sense_length -= sense_len;
999-
if (sp->request_sense_length != 0)
1000-
ha->status_srb = sp;
1001-
1002-
DEBUG5(printk("%s(): Check condition Sense data, "
1003-
"scsi(%ld:%d:%d:%d) cmd=%p pid=%ld\n", __func__,
1004-
ha->host_no, cp->device->channel, cp->device->id,
1005-
cp->device->lun, cp, cp->serial_number));
1006-
if (sense_len)
1007-
DEBUG5(qla2x00_dump_buffer(cp->sense_buffer,
1008-
CMD_ACTUAL_SNSLEN(cp)));
1012+
qla2x00_handle_sense(sp, sense_data, sense_len);
10091013
break;
10101014

10111015
case CS_DATA_UNDERRUN:
@@ -1060,34 +1064,11 @@ qla2x00_status_entry(scsi_qla_host_t *ha, void *pkt)
10601064
if (lscsi_status != SS_CHECK_CONDITION)
10611065
break;
10621066

1063-
/* Copy Sense Data into sense buffer */
10641067
memset(cp->sense_buffer, 0, SCSI_SENSE_BUFFERSIZE);
1065-
10661068
if (!(scsi_status & SS_SENSE_LEN_VALID))
10671069
break;
10681070

1069-
if (sense_len >= SCSI_SENSE_BUFFERSIZE)
1070-
sense_len = SCSI_SENSE_BUFFERSIZE;
1071-
1072-
CMD_ACTUAL_SNSLEN(cp) = sense_len;
1073-
sp->request_sense_length = sense_len;
1074-
sp->request_sense_ptr = cp->sense_buffer;
1075-
1076-
if (sp->request_sense_length > 32)
1077-
sense_len = 32;
1078-
1079-
memcpy(cp->sense_buffer, sense_data, sense_len);
1080-
1081-
sp->request_sense_ptr += sense_len;
1082-
sp->request_sense_length -= sense_len;
1083-
if (sp->request_sense_length != 0)
1084-
ha->status_srb = sp;
1085-
1086-
DEBUG5(printk("%s(): Check condition Sense data, "
1087-
"scsi(%ld:%d:%d:%d) cmd=%p pid=%ld\n",
1088-
__func__, ha->host_no, cp->device->channel,
1089-
cp->device->id, cp->device->lun, cp,
1090-
cp->serial_number));
1071+
qla2x00_handle_sense(sp, sense_data, sense_len);
10911072

10921073
/*
10931074
* In case of a Underrun condition, set both the lscsi
@@ -1107,10 +1088,6 @@ qla2x00_status_entry(scsi_qla_host_t *ha, void *pkt)
11071088

11081089
cp->result = DID_ERROR << 16 | lscsi_status;
11091090
}
1110-
1111-
if (sense_len)
1112-
DEBUG5(qla2x00_dump_buffer(cp->sense_buffer,
1113-
CMD_ACTUAL_SNSLEN(cp)));
11141091
} else {
11151092
/*
11161093
* If RISC reports underrun and target does not report

0 commit comments

Comments
 (0)