@@ -822,6 +822,35 @@ qla2x00_process_response_queue(struct scsi_qla_host *ha)
822
822
WRT_REG_WORD (ISP_RSP_Q_OUT (ha , reg ), ha -> rsp_ring_index );
823
823
}
824
824
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
+
825
854
/**
826
855
* qla2x00_status_entry() - Process a Status IOCB entry.
827
856
* @ha: SCSI driver HA context
@@ -976,36 +1005,11 @@ qla2x00_status_entry(scsi_qla_host_t *ha, void *pkt)
976
1005
if (lscsi_status != SS_CHECK_CONDITION )
977
1006
break ;
978
1007
979
- /* Copy Sense Data into sense buffer. */
980
1008
memset (cp -> sense_buffer , 0 , SCSI_SENSE_BUFFERSIZE );
981
-
982
1009
if (!(scsi_status & SS_SENSE_LEN_VALID ))
983
1010
break ;
984
1011
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 );
1009
1013
break ;
1010
1014
1011
1015
case CS_DATA_UNDERRUN :
@@ -1060,34 +1064,11 @@ qla2x00_status_entry(scsi_qla_host_t *ha, void *pkt)
1060
1064
if (lscsi_status != SS_CHECK_CONDITION )
1061
1065
break ;
1062
1066
1063
- /* Copy Sense Data into sense buffer */
1064
1067
memset (cp -> sense_buffer , 0 , SCSI_SENSE_BUFFERSIZE );
1065
-
1066
1068
if (!(scsi_status & SS_SENSE_LEN_VALID ))
1067
1069
break ;
1068
1070
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 );
1091
1072
1092
1073
/*
1093
1074
* In case of a Underrun condition, set both the lscsi
@@ -1107,10 +1088,6 @@ qla2x00_status_entry(scsi_qla_host_t *ha, void *pkt)
1107
1088
1108
1089
cp -> result = DID_ERROR << 16 | lscsi_status ;
1109
1090
}
1110
-
1111
- if (sense_len )
1112
- DEBUG5 (qla2x00_dump_buffer (cp -> sense_buffer ,
1113
- CMD_ACTUAL_SNSLEN (cp )));
1114
1091
} else {
1115
1092
/*
1116
1093
* If RISC reports underrun and target does not report
0 commit comments