xref: /freebsd/tools/cam/mps.d (revision 92f251f36b31519ed336ac67b768d39b62ebf896)
1 inline string scsi_op[int k] =
2 	k == 0x00 ? "TEST UNIT READY" :
3 	k == 0x01 ? "REZERO UNIT" :
4 	k == 0x03 ? "REQUEST SENSE" :
5 	k == 0x04 ? "FORMAT UNIT" :
6 	k == 0x05 ? "READ BLOCK LIMITS" :
7 	k == 0x07 ? "REASSIGN BLOCKS" :
8 	k == 0x08 ? "READ(6)" :
9 	k == 0x0a ? "WRITE(6)" :
10 	k == 0x0b ? "SEEK(6)" :
11 	k == 0x0f ? "READ REVERSE(6)" :
12 	k == 0x10 ? "WRITE FILEMARKS(6)" :
13 	k == 0x11 ? "SPACE(6)" :
14 	k == 0x12 ? "INQUIRY" :
15 	k == 0x14 ? "RECOVER BUFFERED DATA" :
16 	k == 0x15 ? "MODE SELECT(6)" :
17 	k == 0x16 ? "RESERVE(6)" :
18 	k == 0x17 ? "RELEASE(6)" :
19 	k == 0x18 ? "COPY" :
20 	k == 0x19 ? "ERASE(6)" :
21 	k == 0x1a ? "MODE SENSE(6)" :
22 	k == 0x1b ? "START STOP UNIT" :
23 	k == 0x1c ? "RECEIVE DIAGNOSTIC RESULTS" :
24 	k == 0x1d ? "SEND DIAGNOSTIC" :
25 	k == 0x1e ? "PREVENT ALLOW MEDIUM REMOVAL" :
26 	k == 0x24 ? "SET WINDOW" :
27 	k == 0x25 ? "READ CAPACITY(10)" :
28 	k == 0x28 ? "READ(10)" :
29 	k == 0x29 ? "READ GENERATION" :
30 	k == 0x2a ? "WRITE(10)" :
31 	k == 0x2b ? "SEEK(10)" :
32 	k == 0x2c ? "ERASE(10)" :
33 	k == 0x2e ? "WRITE AND VERIFY(10)" :
34 	k == 0x2f ? "VERIFY(10)" :
35 	k == 0x30 ? "SEARCH DATA HIGH(10)" :
36 	k == 0x31 ? "SEARCH DATA EQUAL(10)" :
37 	k == 0x32 ? "SEARCH DATA LOW(10)" :
38 	k == 0x33 ? "SET LIMITS(10)" :
39 	k == 0x35 ? "SYNCHRONIZE CACHE(10)" :
40 	k == 0x36 ? "LOCK UNLOCK CACHE(10)" :
41 	k == 0x37 ? "READ DEFECT DATA(10)" :
42 	k == 0x39 ? "COMPARE" :
43 	k == 0x3a ? "COPY AND VERIFY" :
44 	k == 0x3b ? "WRITE BUFFER" :
45 	k == 0x3c ? "READ BUFFER(10)" :
46 	k == 0x3e ? "READ LONG(10)" :
47 	k == 0x3f ? "WRITE LONG(10)" :
48 	k == 0x40 ? "CHANGE DEFINITION" :
49 	k == 0x41 ? "WRITE SAME(10)" :
50 	k == 0x42 ? "UNMAP" :
51 	k == 0x48 ? "SANITIZE" :
52 	k == 0x4c ? "LOG SELECT" :
53 	k == 0x4d ? "LOG SENSE" :
54 	k == 0x50 ? "XDWRITE(10)" :
55 	k == 0x51 ? "XPWRITE(10)" :
56 	k == 0x52 ? "XDREAD(10)" :
57 	k == 0x53 ? "XDWRITEREAD(10)" :
58 	k == 0x55 ? "MODE SELECT(10)" :
59 	k == 0x56 ? "RESERVE(10)" :
60 	k == 0x57 ? "RELEASE(10)" :
61 	k == 0x5a ? "MODE SENSE(10)" :
62 	k == 0x5e ? "PERSISTENT RESERVE IN" :
63 	k == 0x5f ? "PERSISTENT RESERVE OUT" :
64 	k == 0x7e ? "extended CDB" :
65 	k == 0x7f ? "variable length CDB (more than 16 bytes)" :
66 	k == 0x80 ? "XDWRITE EXTENDED(16)" :
67 	k == 0x81 ? "REBUILD(16)" :
68 	k == 0x82 ? "REGENERATE(16)" :
69 	k == 0x83 ? "Third-party Copy OUT" :
70 	k == 0x84 ? "Third-party Copy IN" :
71 	k == 0x85 ? "ATA PASS-THROUGH(16)" :
72 	k == 0x86 ? "ACCESS CONTROL IN" :
73 	k == 0x87 ? "ACCESS CONTROL OUT" :
74 	k == 0x88 ? "READ(16)" :
75 	k == 0x89 ? "COMPARE AND WRITE" :
76 	k == 0x8a ? "WRITE(16)" :
77 	k == 0x8b ? "ORWRITE" :
78 	k == 0x8c ? "READ ATTRIBUTE" :
79 	k == 0x8d ? "WRITE ATTRIBUTE" :
80 	k == 0x8e ? "WRITE AND VERIFY(16)" :
81 	k == 0x8f ? "VERIFY(16)" :
82 	k == 0x90 ? "PRE-FETCH(16)" :
83 	k == 0x91 ? "SYNCHRONIZE CACHE(16)" :
84 	k == 0x92 ? "LOCK UNLOCK CACHE(16)" :
85 	k == 0x93 ? "WRITE SAME(16)" :
86 	k == 0x94 ? "ZBC OUT" :
87 	k == 0x95 ? "ZBC IN" :
88 	k == 0x9a ? "WRITE STREAM(16)" :
89 	k == 0x9b ? "READ BUFFER(16)" :
90 	k == 0x9c ? "WRITE ATOMIC(16)" :
91 	k == 0x9e ? "SERVICE ACTION IN(16)" :
92 	k == 0xa0 ? "REPORT LUNS" :
93 	k == 0xa1 ? "ATA PASS-THROUGH(12)" :
94 	k == 0xa2 ? "SECURITY PROTOCOL IN" :
95 	k == 0xa3 ? "MAINTENANCE IN" :
96 	k == 0xa4 ? "MAINTENANCE OUT" :
97 	k == 0xa7 ? "MOVE MEDIUM ATTACHED" :
98 	k == 0xa8 ? "READ(12)" :
99 	k == 0xaa ? "WRITE(12)" :
100 	k == 0xae ? "WRITE AND VERIFY(12)" :
101 	k == 0xaf ? "VERIFY(12)" :
102 	k == 0xb3 ? "SET LIMITS(12)" :
103 	k == 0xb4 ? "READ ELEMENT STATUS ATTACHED" :
104 	k == 0xb5 ? "SECURITY PROTOCOL OUT" :
105 	k == 0xb7 ? "READ DEFECT DATA(12)" :
106 	k == 0xba ? "REDUNDANCY GROUP (IN)" :
107 	k == 0xbb ? "REDUNDANCY GROUP (OUT)" :
108 	k == 0xbc ? "SPARE (IN)" :
109 	k == 0xbd ? "SPARE (OUT)" :
110 	k == 0xbe ? "VOLUME SET (IN)" :
111 	k == 0xbf ? "VOLUME SET (OUT)" :
112 	"Unknown";
113 
114 inline string xpt_action_string[int key] =
115 	key ==  0 ? "XPT_NOOP" :
116 	key ==  1 ? "XPT_SCSI_IO" :
117 	key ==  2 ? "XPT_GDEV_TYPE" :
118 	key ==  3 ? "XPT_GDEVLIST" :
119 	key ==  4 ? "XPT_PATH_INQ" :
120 	key ==  5 ? "XPT_REL_SIMQ" :
121 	key ==  6 ? "XPT_SASYNC_CB" :
122 	key ==  7 ? "XPT_SDEV_TYPE" :
123 	key ==  8 ? "XPT_SCAN_BUS" :
124 	key ==  9 ? "XPT_DEV_MATCH" :
125 	key == 10 ? "XPT_DEBUG" :
126 	key == 11 ? "XPT_PATH_STATS" :
127 	key == 12 ? "XPT_GDEV_STATS" :
128 	key == 13 ? "XPT_0X0d" :
129 	key == 14 ? "XPT_DEV_ADVINFO" :
130 	key == 15 ? "XPT_ASYNC" :
131 	key == 16 ? "XPT_ABORT" :
132 	key == 17 ? "XPT_RESET_BUS" :
133 	key == 18 ? "XPT_RESET_DEV" :
134 	key == 19 ? "XPT_TERM_IO" :
135 	key == 20 ? "XPT_SCAN_LUN" :
136 	key == 21 ? "XPT_GET_TRAN_SETTINGS" :
137 	key == 22 ? "XPT_SET_TRAN_SETTINGS" :
138 	key == 23 ? "XPT_CALC_GEOMETRY" :
139 	key == 24 ? "XPT_ATA_IO" :
140 	key == 25 ? "XPT_SET_SIM_KNOB" :
141 	key == 26 ? "XPT_GET_SIM_KNOB" :
142 	key == 27 ? "XPT_SMP_IO" :
143 	key == 28 ? "XPT_NVME_IO" :
144 	key == 29 ? "XPT_MMC_IO" :
145 	key == 30 ? "XPT_SCAN_TGT" :
146 	key == 31 ? "XPT_NVME_ADMIN" :
147 	"Too big" ;
148 
149 inline int CAM_CDB_POINTER = 1;
150 inline int XPT_SCSI_IO = 0x01;
151 inline int XPT_ATA_IO = 0x18;
152 inline int XPT_NVME_IO = 0x1c;
153 inline int XPT_NVME_ADMIN = 0x1f;
154 
155 /*
156  * key >> 5 gives the group:
157  * Group 0:  six byte commands
158  * Group 1:  ten byte commands
159  * Group 2:  ten byte commands
160  * Group 3:  reserved (7e and 7f are de-facto 32 bytes though)
161  * Group 4:  sixteen byte commands
162  * Group 5:  twelve byte commands
163  * Group 6:  vendor specific
164  * Group 7:  vendor specific
165  */
166 inline int scsi_cdb_len[int key] =
167         key == 0 ? 6 :
168         key == 1 ? 10 :
169         key == 2 ? 10 :
170         key == 3 ? 1 :          /* reserved */
171         key == 4 ? 16 :
172         key == 5 ? 12 :
173         key == 6 ? 1 :          /* reserved */
174         /* key == 7 */ 1;       /* reserved */
175 
176 inline int MPI2_IOCSTATUS_MASK                        =(0x7FFF);
177 inline int MPI2_IOCSTATUS_SUCCESS                     =(0x0000);
178 inline int MPI2_IOCSTATUS_INVALID_FUNCTION            =(0x0001);
179 inline int MPI2_IOCSTATUS_BUSY                        =(0x0002);
180 inline int MPI2_IOCSTATUS_INVALID_SGL                 =(0x0003);
181 inline int MPI2_IOCSTATUS_INTERNAL_ERROR              =(0x0004);
182 inline int MPI2_IOCSTATUS_INVALID_VPID                =(0x0005);
183 inline int MPI2_IOCSTATUS_INSUFFICIENT_RESOURCES      =(0x0006);
184 inline int MPI2_IOCSTATUS_INVALID_FIELD               =(0x0007);
185 inline int MPI2_IOCSTATUS_INVALID_STATE               =(0x0008);
186 inline int MPI2_IOCSTATUS_OP_STATE_NOT_SUPPORTED      =(0x0009);
187 inline int MPI2_IOCSTATUS_CONFIG_INVALID_ACTION       =(0x0020);
188 inline int MPI2_IOCSTATUS_CONFIG_INVALID_TYPE         =(0x0021);
189 inline int MPI2_IOCSTATUS_CONFIG_INVALID_PAGE         =(0x0022);
190 inline int MPI2_IOCSTATUS_CONFIG_INVALID_DATA         =(0x0023);
191 inline int MPI2_IOCSTATUS_CONFIG_NO_DEFAULTS          =(0x0024);
192 inline int MPI2_IOCSTATUS_CONFIG_CANT_COMMIT          =(0x0025);
193 inline int MPI2_IOCSTATUS_SCSI_RECOVERED_ERROR        =(0x0040);
194 inline int MPI2_IOCSTATUS_SCSI_INVALID_DEVHANDLE      =(0x0042);
195 inline int MPI2_IOCSTATUS_SCSI_DEVICE_NOT_THERE       =(0x0043);
196 inline int MPI2_IOCSTATUS_SCSI_DATA_OVERRUN           =(0x0044);
197 inline int MPI2_IOCSTATUS_SCSI_DATA_UNDERRUN          =(0x0045);
198 inline int MPI2_IOCSTATUS_SCSI_IO_DATA_ERROR          =(0x0046);
199 inline int MPI2_IOCSTATUS_SCSI_PROTOCOL_ERROR         =(0x0047);
200 inline int MPI2_IOCSTATUS_SCSI_TASK_TERMINATED        =(0x0048);
201 inline int MPI2_IOCSTATUS_SCSI_RESIDUAL_MISMATCH      =(0x0049);
202 inline int MPI2_IOCSTATUS_SCSI_TASK_MGMT_FAILED       =(0x004A);
203 inline int MPI2_IOCSTATUS_SCSI_IOC_TERMINATED         =(0x004B);
204 inline int MPI2_IOCSTATUS_SCSI_EXT_TERMINATED         =(0x004C);
205 inline int MPI2_IOCSTATUS_EEDP_GUARD_ERROR            =(0x004D);
206 inline int MPI2_IOCSTATUS_EEDP_REF_TAG_ERROR          =(0x004E);
207 inline int MPI2_IOCSTATUS_EEDP_APP_TAG_ERROR          =(0x004F);
208 inline int MPI2_IOCSTATUS_TARGET_INVALID_IO_INDEX     =(0x0062);
209 inline int MPI2_IOCSTATUS_TARGET_ABORTED              =(0x0063);
210 inline int MPI2_IOCSTATUS_TARGET_NO_CONN_RETRYABLE    =(0x0064);
211 inline int MPI2_IOCSTATUS_TARGET_NO_CONNECTION        =(0x0065);
212 inline int MPI2_IOCSTATUS_TARGET_XFER_COUNT_MISMATCH  =(0x006A);
213 inline int MPI2_IOCSTATUS_TARGET_DATA_OFFSET_ERROR    =(0x006D);
214 inline int MPI2_IOCSTATUS_TARGET_TOO_MUCH_WRITE_DATA  =(0x006E);
215 inline int MPI2_IOCSTATUS_TARGET_IU_TOO_SHORT         =(0x006F);
216 inline int MPI2_IOCSTATUS_TARGET_ACK_NAK_TIMEOUT      =(0x0070);
217 inline int MPI2_IOCSTATUS_TARGET_NAK_RECEIVED         =(0x0071);
218 inline int MPI2_IOCSTATUS_SAS_SMP_REQUEST_FAILED      =(0x0090);
219 inline int MPI2_IOCSTATUS_SAS_SMP_DATA_OVERRUN        =(0x0091);
220 inline int MPI2_IOCSTATUS_DIAGNOSTIC_RELEASED         =(0x00A0);
221 inline int MPI2_IOCSTATUS_RAID_ACCEL_ERROR            =(0x00B0);
222 
223 inline int MPI2_IOCSTATUS_FLAG_LOG_INFO_AVAILABLE     =(0x8000);
224 
225 inline string mpi2_iocstatus_str[int key] =
226 	key == MPI2_IOCSTATUS_SUCCESS ? "MPI2_IOCSTATUS_SUCCESS" :
227 	key == MPI2_IOCSTATUS_INVALID_FUNCTION ? "MPI2_IOCSTATUS_INVALID_FUNCTION" :
228 	key == MPI2_IOCSTATUS_BUSY ? "MPI2_IOCSTATUS_BUSY" :
229 	key == MPI2_IOCSTATUS_INVALID_SGL ? "MPI2_IOCSTATUS_INVALID_SGL" :
230 	key == MPI2_IOCSTATUS_INTERNAL_ERROR ? "MPI2_IOCSTATUS_INTERNAL_ERROR" :
231 	key == MPI2_IOCSTATUS_INVALID_VPID ? "MPI2_IOCSTATUS_INVALID_VPID" :
232 	key == MPI2_IOCSTATUS_INSUFFICIENT_RESOURCES ? "MPI2_IOCSTATUS_INSUFFICIENT_RESOURCES" :
233 	key == MPI2_IOCSTATUS_INVALID_FIELD ? "MPI2_IOCSTATUS_INVALID_FIELD" :
234 	key == MPI2_IOCSTATUS_INVALID_STATE ? "MPI2_IOCSTATUS_INVALID_STATE" :
235 	key == MPI2_IOCSTATUS_OP_STATE_NOT_SUPPORTED ? "MPI2_IOCSTATUS_OP_STATE_NOT_SUPPORTED" :
236 	key == MPI2_IOCSTATUS_CONFIG_INVALID_ACTION ? "MPI2_IOCSTATUS_CONFIG_INVALID_ACTION" :
237 	key == MPI2_IOCSTATUS_CONFIG_INVALID_TYPE ? "MPI2_IOCSTATUS_CONFIG_INVALID_TYPE" :
238 	key == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE ? "MPI2_IOCSTATUS_CONFIG_INVALID_PAGE" :
239 	key == MPI2_IOCSTATUS_CONFIG_INVALID_DATA ? "MPI2_IOCSTATUS_CONFIG_INVALID_DATA" :
240 	key == MPI2_IOCSTATUS_CONFIG_NO_DEFAULTS ? "MPI2_IOCSTATUS_CONFIG_NO_DEFAULTS" :
241 	key == MPI2_IOCSTATUS_CONFIG_CANT_COMMIT ? "MPI2_IOCSTATUS_CONFIG_CANT_COMMIT" :
242 	key == MPI2_IOCSTATUS_SCSI_RECOVERED_ERROR ? "MPI2_IOCSTATUS_SCSI_RECOVERED_ERROR" :
243 	key == MPI2_IOCSTATUS_SCSI_INVALID_DEVHANDLE ? "MPI2_IOCSTATUS_SCSI_INVALID_DEVHANDLE" :
244 	key == MPI2_IOCSTATUS_SCSI_DEVICE_NOT_THERE ? "MPI2_IOCSTATUS_SCSI_DEVICE_NOT_THERE" :
245 	key == MPI2_IOCSTATUS_SCSI_DATA_OVERRUN ? "MPI2_IOCSTATUS_SCSI_DATA_OVERRUN" :
246 	key == MPI2_IOCSTATUS_SCSI_DATA_UNDERRUN ? "MPI2_IOCSTATUS_SCSI_DATA_UNDERRUN" :
247 	key == MPI2_IOCSTATUS_SCSI_IO_DATA_ERROR ? "MPI2_IOCSTATUS_SCSI_IO_DATA_ERROR" :
248 	key == MPI2_IOCSTATUS_SCSI_PROTOCOL_ERROR ? "MPI2_IOCSTATUS_SCSI_PROTOCOL_ERROR" :
249 	key == MPI2_IOCSTATUS_SCSI_TASK_TERMINATED ? "MPI2_IOCSTATUS_SCSI_TASK_TERMINATED" :
250 	key == MPI2_IOCSTATUS_SCSI_RESIDUAL_MISMATCH ? "MPI2_IOCSTATUS_SCSI_RESIDUAL_MISMATCH" :
251 	key == MPI2_IOCSTATUS_SCSI_TASK_MGMT_FAILED ? "MPI2_IOCSTATUS_SCSI_TASK_MGMT_FAILED" :
252 	key == MPI2_IOCSTATUS_SCSI_IOC_TERMINATED ? "MPI2_IOCSTATUS_SCSI_IOC_TERMINATED" :
253 	key == MPI2_IOCSTATUS_SCSI_EXT_TERMINATED ? "MPI2_IOCSTATUS_SCSI_EXT_TERMINATED" :
254 	key == MPI2_IOCSTATUS_EEDP_GUARD_ERROR ? "MPI2_IOCSTATUS_EEDP_GUARD_ERROR" :
255 	key == MPI2_IOCSTATUS_EEDP_REF_TAG_ERROR ? "MPI2_IOCSTATUS_EEDP_REF_TAG_ERROR" :
256 	key == MPI2_IOCSTATUS_EEDP_APP_TAG_ERROR ? "MPI2_IOCSTATUS_EEDP_APP_TAG_ERROR" :
257 	key == MPI2_IOCSTATUS_TARGET_INVALID_IO_INDEX ? "MPI2_IOCSTATUS_TARGET_INVALID_IO_INDEX" :
258 	key == MPI2_IOCSTATUS_TARGET_ABORTED ? "MPI2_IOCSTATUS_TARGET_ABORTED" :
259 	key == MPI2_IOCSTATUS_TARGET_NO_CONN_RETRYABLE ? "MPI2_IOCSTATUS_TARGET_NO_CONN_RETRYABLE" :
260 	key == MPI2_IOCSTATUS_TARGET_NO_CONNECTION ? "MPI2_IOCSTATUS_TARGET_NO_CONNECTION" :
261 	key == MPI2_IOCSTATUS_TARGET_XFER_COUNT_MISMATCH ? "MPI2_IOCSTATUS_TARGET_XFER_COUNT_MISMATCH" :
262 	key == MPI2_IOCSTATUS_TARGET_DATA_OFFSET_ERROR ? "MPI2_IOCSTATUS_TARGET_DATA_OFFSET_ERROR" :
263 	key == MPI2_IOCSTATUS_TARGET_TOO_MUCH_WRITE_DATA ? "MPI2_IOCSTATUS_TARGET_TOO_MUCH_WRITE_DATA" :
264 	key == MPI2_IOCSTATUS_TARGET_IU_TOO_SHORT ? "MPI2_IOCSTATUS_TARGET_IU_TOO_SHORT" :
265 	key == MPI2_IOCSTATUS_TARGET_ACK_NAK_TIMEOUT ? "MPI2_IOCSTATUS_TARGET_ACK_NAK_TIMEOUT" :
266 	key == MPI2_IOCSTATUS_TARGET_NAK_RECEIVED ? "MPI2_IOCSTATUS_TARGET_NAK_RECEIVED" :
267 	key == MPI2_IOCSTATUS_SAS_SMP_REQUEST_FAILED ? "MPI2_IOCSTATUS_SAS_SMP_REQUEST_FAILED" :
268 	key == MPI2_IOCSTATUS_SAS_SMP_DATA_OVERRUN ? "MPI2_IOCSTATUS_SAS_SMP_DATA_OVERRUN" :
269 	key == MPI2_IOCSTATUS_DIAGNOSTIC_RELEASED ? "MPI2_IOCSTATUS_DIAGNOSTIC_RELEASED" :
270 	key == MPI2_IOCSTATUS_RAID_ACCEL_ERROR ? "MPI2_IOCSTATUS_RAID_ACCEL_ERROR" :
271 	"MPI2_unknown value";
272 
273 
274 
275 /*
276  * arg0 union *ccb
277  * arg1 mps_command *cm
278  * arg2 sassc->flags
279  * arg3 device_info
280  */
281 cam::mps:complete
282 {
283 	this->ccb = (union ccb *)arg0;
284         this->func = this->ccb->ccb_h.func_code & 0xff;
285         this->periph = this->ccb->ccb_h.path->periph;
286 	this->cm = (struct mps_command *)arg1;
287 	this->rep = (MPI2_SCSI_IO_REPLY *)this->cm->cm_reply;
288 	this->sassc_flags = arg2;
289 	this->device_info = arg3;
290         this->trace = 0;
291 	this->do_fast = 0;
292 }
293 
294 
295 cam::mps:complete
296 /this->periph->unit_number == 1 || this->periph->unit_number == 2/
297 {
298 	this->trace = 1;
299 }
300 
301 cam::mps:complete
302 /this->trace && this->rep != NULL/
303 {
304 	this->IOCStatus = /* le16toh */ this->rep->IOCStatus & MPI2_IOCSTATUS_MASK;
305 }
306 
307 cam::mps:complete
308 /this->trace && this->rep == NULL/
309 {
310 /*	printf("mps: da%d: FAST", this->periph->unit_number); */
311 	this->trace = 0
312 }
313 
314 cam::mps:complete
315 /this->func == XPT_SCSI_IO/
316 {
317         this->hdr = &this->ccb->ccb_h;
318         this->csio = &this->ccb->csio;
319         this->cdb = this->hdr->flags & CAM_CDB_POINTER ?
320                 this->csio->cdb_io.cdb_ptr :
321                 &this->csio->cdb_io.cdb_bytes[0];
322         this->cdb_len = this->csio->cdb_len ? this->csio->cdb_len :
323                 scsi_cdb_len[this->cdb[0] >> 5];
324 }
325 
326 cam::mps:complete
327 /this->trace && this->rep != NULL && this->func == XPT_SCSI_IO/
328 {
329 	printf("mps: da%d: SLOW CDB: %s Status: %s", this->periph->unit_number, scsi_op[this->cdb[0]],
330 	    mpi2_iocstatus_str[this->IOCStatus]);
331 }
332