Lines Matching +full:phy +full:- +full:pma
1 /*-
4 * SPDX-License-Identifier: BSD-2-Clause
78 #define ERESTART -1 /* restart syscall */
79 #define EJUSTRETURN -2 /* don't modify regs, just return */
91 * a minimum value of 100ms. Note that this is pertinent only for SPI-
142 { 0xD8, R, "CD-DA READ" }
149 * to read CD-DA data. I'm not sure which Plextor CDROM
152 * 12-20X does. I don't know about any earlier models,
156 {T_CDROM, SIP_MEDIA_REMOVABLE, "PLEXTOR", "CD-ROM PX*", "*"},
164 * From: http://www.t10.org/lists/op-num.txt
166 * and Jung-uk Kim (jkim@FreeBSD.org)
174 /* File: OP-NUM.TXT
180 * D - DIRECT ACCESS DEVICE (SBC-2) device column key
181 * .T - SEQUENTIAL ACCESS DEVICE (SSC-2) -----------------
182 * . L - PRINTER DEVICE (SSC) M = Mandatory
183 * . P - PROCESSOR DEVICE (SPC) O = Optional
184 * . .W - WRITE ONCE READ MULTIPLE DEVICE (SBC-2) V = Vendor spec.
185 * . . R - CD/DVE DEVICE (MMC-3) Z = Obsolete
186 * . . O - OPTICAL MEMORY DEVICE (SBC-2)
187 * . . .M - MEDIA CHANGER DEVICE (SMC-2)
188 * . . . A - STORAGE ARRAY DEVICE (SCC-2)
189 * . . . .E - ENCLOSURE SERVICES DEVICE (SES)
190 * . . . .B - SIMPLIFIED DIRECT-ACCESS DEVICE (RBC)
191 * . . . . K - OPTICAL CARD READER/WRITER DEVICE (OCRW)
192 * . . . . V - AUTOMATION/DRIVE INTERFACE (ADC)
193 * . . . . .F - OBJECT-BASED STORAGE (OSD)
195 * -- -------------- ---------------------------------------------- */
345 /* 34 O O O O PRE-FETCH(10) */
346 { 0x34, D | W | O | K, "PRE-FETCH(10)" },
381 /* 42 O READ SUB-CHANNEL */
382 { 0x42, R, "READ SUB-CHANNEL" },
383 /* 43 O READ TOC/PMA/ATIP */
384 { 0x43, R, "READ TOC/PMA/ATIP" },
491 /* 90 O O O O PRE-FETCH(16) */
492 { 0x90, D | W | O | B, "PRE-FETCH(16)" },
521 /* XXX KDM ALL for this? op-num.txt defines it for none.. */
654 table[0] = ((struct scsi_op_quirk_entry *)match)->op_table; in scsi_op_desc()
655 num_ops[0] = ((struct scsi_op_quirk_entry *)match)->num_ops; in scsi_op_desc()
756 "Vendor Unique - Logical Unit Not Ready") },
764 "Unrecovered Self-Test Hard-Cache Test Fail") },
766 "Unrecovered Self-Test OTF-Cache Fail") },
778 "Vendor Unique - Internal Target Failure") },
780 "Vendor Unique - Internal Target Failure") },
782 "Vendor Unique - Internal Target Failure") },
784 "Vendor Unique - Internal Target Failure") },
786 "Vendor Unique - Internal Target Failure") },
788 "Extreme Over-Temperature Warning") },
792 "Vendor Unique - Internal Logic Error") },
794 "Vendor Unique - Internal Key Seed Error") },
807 "Pre-SMART Warning") },
813 "Write Error - Too many error recovery revs") },
815 "Unrecovered Read Error - Too many error recovery revs") },
829 "Invalid Field Parameter - CAP File") },
831 "Invalid Field Parameter - RAP File") },
833 "Invalid Field Parameter - TMS Firmware Tag") },
835 "Invalid Field Parameter - Check Sum") },
837 "Invalid Field Parameter - Firmware Tag") },
851 "Defect List - Length exceeds Command Allocated Length") },
937 {T_DIRECT, SIP_MEDIA_REMOVABLE, "SONY", "SMO-*", "*"},
945 * HGST vendor-specific error codes
955 * SEAGATE vendor-specific error codes
969 * From: http://www.t10.org/lists/asc-num.txt
970 * Modifications by Jung-uk Kim (jkim@FreeBSD.org)
973 * File: ASC-NUM.TXT
979 * D - DIRECT ACCESS DEVICE (SBC-2) device column key
980 * .T - SEQUENTIAL ACCESS DEVICE (SSC) -------------------
981 * . L - PRINTER DEVICE (SSC) blank = reserved
982 * . P - PROCESSOR DEVICE (SPC) not blank = allowed
983 * . .W - WRITE ONCE READ MULTIPLE DEVICE (SBC-2)
984 * . . R - CD DEVICE (MMC)
985 * . . O - OPTICAL MEMORY DEVICE (SBC-2)
986 * . . .M - MEDIA CHANGER DEVICE (SMC)
987 * . . . A - STORAGE ARRAY DEVICE (SCC)
988 * . . . E - ENCLOSURE SERVICES DEVICE (SES)
989 * . . . .B - SIMPLIFIED DIRECT-ACCESS DEVICE (RBC)
990 * . . . . K - OPTICAL CARD READER/WRITER DEVICE (OCRW)
991 * . . . . V - AUTOMATION/DRIVE INTERFACE (ADC)
992 * . . . . .F - OBJECT-BASED STORAGE (OSD)
1005 "End-of-partition/medium detected") },
1011 "Beginning-of-partition/medium detected") },
1014 "End-of-data detected") },
1122 "Logical unit not ready, self-test in progress") },
1218 "Logical unit communication time-out") },
1224 "Logical unit communication CRC error (Ultra-DMA/32)") },
1254 "Warning - specified temperature exceeded") },
1257 "Warning - enclosure degraded") },
1260 "Warning - background self-test failed") },
1263 "Warning - background pre-scan detected medium error") },
1266 "Warning - background medium scan detected medium error") },
1269 "Warning - non-volatile cache now volatile") },
1272 "Warning - degraded power to non-volatile cache") },
1275 "Warning - power loss expected") },
1278 "Warning - device statistics notification available") },
1281 "Warning - High critical temperature limit exceeded") },
1284 "Warning - Low critical temperature limit exceeded") },
1287 "Warning - High operating temperature limit exceeded") },
1290 "Warning - Low operating temperature limit exceeded") },
1293 "Warning - High citical humidity limit exceeded") },
1296 "Warning - Low citical humidity limit exceeded") },
1299 "Warning - High operating humidity limit exceeded") },
1302 "Warning - Low operating humidity limit exceeded") },
1305 "Warning - Microcode security at risk") },
1308 "Warning - Microcode digital signature validation failure") },
1311 "Warning - Physical element status change") },
1317 "Write error - recovered with auto reallocation") },
1320 "Write error - auto reallocation failed") },
1323 "Write error - recommend reassignment") },
1335 "Write error - recovery needed") },
1338 "Write error - recovery failed") },
1341 "Write error - loss of streaming") },
1344 "Write error - padding blocks added") },
1350 "Write error - unexpected unsolicited data") },
1353 "Write error - not enough unsolicited data") },
1365 "Write error - recovery scan needed") },
1368 "Write error - insufficient zone resources") },
1431 "Unrecovered read error - auto reallocate failed") },
1434 "L-EC uncorrectable error") },
1440 "Data re-synchronization error") },
1452 "Unrecovered read error - recommend reassignment") },
1455 "Unrecovered read error - recommend rewrite the data") },
1458 "De-compression CRC error") },
1470 "Read error - loss of streaming") },
1476 "Read error - failed retransmission request") },
1479 "Read error - LBA marked bad by application client") },
1500 "End-of-data not found") },
1506 "Record not found - recommend reassignment") },
1509 "Record not found - data auto-reallocated") },
1527 "Data sync error - data rewritten") },
1530 "Data sync error - recommend rewrite") },
1533 "Data sync error - data auto-reallocated") },
1536 "Data sync error - recommend reassignment") },
1557 "Recovered data without ECC - data auto-reallocated") },
1560 "Recovered data without ECC - recommend reassignment") },
1563 "Recovered data without ECC - recommend rewrite") },
1566 "Recovered data without ECC - data rewritten") },
1575 "Recovered data - data auto-reallocated") },
1581 "Recovered data with L-EC") },
1584 "Recovered data - recommend reassignment") },
1587 "Recovered data - recommend rewrite") },
1590 "Recovered data with ECC - data rewritten") },
1638 "Access denied - initiator pending-enrolled") },
1641 "Access denied - no access rights") },
1644 "Access denied - invalid mgmt ID key") },
1659 "Access denied - enrollment conflict") },
1662 "Access denied - invalid LU identifier") },
1665 "Access denied - invalid proxy token") },
1668 "Access denied - ACL LUN conflict") },
1671 "Illegal command when not in append-only mode") },
1827 "Invalid data-out buffer integrity check value") },
1833 "Incomplete key-associated data set") },
1884 "Format-layer may have changed") },
1889 * XXX JGibbs - All of these should use the same errno, but I don't
1910 "Transceiver mode changed to single-ended") },
2075 "Cannot read medium - unknown format") },
2078 "Cannot read medium - incompatible format") },
2084 "Cannot write medium - unknown format") },
2087 "Cannot write medium - incompatible format") },
2090 "Cannot format medium - incompatible medium") },
2096 "Cannot write - application code mismatch") },
2105 "WORM medium - overwrite attempted") },
2108 "WORM medium - integrity check") },
2180 "ESN - power management class event") },
2183 "ESN - media class event") },
2186 "ESN - device busy class event") },
2201 "Medium not present - tray closed") },
2204 "Medium not present - tray open") },
2207 "Medium not present - loadable") },
2210 "Medium not present - medium auxiliary memory accessible") },
2216 "Tape position error at beginning-of-medium") },
2219 "Tape position error at end-of-medium") },
2231 "Failed to sense top-of-form") },
2234 "Failed to sense bottom-of-form") },
2303 "Logical unit has not self-configured yet") },
2312 "Logical unit failed self-test") },
2315 "Logical unit unable to update self-test log") },
2398 "RAM failure") }, /* deprecated - use 40 NN instead */
2404 NULL) }, /* Range 0x80->0xFF */
2407 "Data path failure") }, /* deprecated - use 40 NN instead */
2410 "Power-on or self-test failure") },
2411 /* deprecated - use 40 NN instead */
2450 "PHY test function in progress") },
2489 "Data-in buffer overflow - data buffer size") },
2492 "Data-in buffer overflow - data buffer descriptor area") },
2495 "Data-in buffer error") },
2498 "Data-out buffer overflow - data buffer size") },
2501 "Data-out buffer overflow - data buffer descriptor area") },
2504 "Data-out buffer error") },
2531 "Logical unit failed self-configuration") },
2537 NULL) }, /* Range 0x00->0xFF */
2555 "Erase failure - incomplete erase operation detected") },
2588 "Data transfer device error - load failed") },
2591 "Data transfer device error - unload failed") },
2594 "Data transfer device error - unload missing") },
2597 "Data transfer device error - eject failed") },
2600 "Data transfer device error - library communication failed") },
2660 "Unable to recover table-of-contents") },
2747 "Hardware impending failure spin-up retry count") },
2789 "Controller impending failure spin-up retry count") },
2828 "Data channel impending failure spin-up retry count") },
2867 "Servo impending failure spin-up retry count") },
2906 "Spindle impending failure spin-up retry count") },
2945 "Firmware impending failure spin-up retry count") },
2972 "Idle-B condition activated by timer") },
2975 "Idle-B condition activated by command") },
2978 "Idle-C condition activated by timer") },
2981 "Idle-C condition activated by command") },
2984 "Standby-Y condition activated by timer") },
2987 "Standby-Y condition activated by command") },
3125 "Copy protection key exchange failure - authentication failure") },
3128 "Copy protection key exchange failure - key not present") },
3131 "Copy protection key exchange failure - key not established") },
3152 "Invalid drive-host pairing server") },
3155 "Drive-host pairing suspended") },
3161 NULL) }, /* Range 0x00 -> 0xFF */
3167 NULL) }, /* Range 0x00 -> 0xFF */
3173 "Session fixation error writing lead-in") },
3176 "Session fixation error writing lead-out") },
3179 "Session fixation error - incomplete track in session") },
3212 "RMA/PMA is almost full") },
3323 asc = ((const struct asc_key *)key)->asc; in ascentrycomp()
3324 ascq = ((const struct asc_key *)key)->ascq; in ascentrycomp()
3327 if (asc >= table_entry->asc) { in ascentrycomp()
3328 if (asc > table_entry->asc) in ascentrycomp()
3331 if (ascq <= table_entry->ascq) { in ascentrycomp()
3333 if (ascq == table_entry->ascq in ascentrycomp()
3334 || ((table_entry->action & SSQ_RANGE) != 0 in ascentrycomp()
3335 && ascq >= (table_entry - 1)->ascq)) in ascentrycomp()
3337 return (-1); in ascentrycomp()
3341 return (-1); in ascentrycomp()
3353 if (sense_key >= table_entry->sense_key) { in senseentrycomp()
3354 if (sense_key == table_entry->sense_key) in senseentrycomp()
3358 return (-1); in senseentrycomp()
3392 asc_tables[0] = quirk->asc_info; in fetchtableentries()
3393 asc_tables_size[0] = quirk->num_ascs; in fetchtableentries()
3397 sense_tables[0] = quirk->sense_key_info; in fetchtableentries()
3398 sense_tables_size[0] = quirk->num_sense_keys; in fetchtableentries()
3429 if (((*asc_entry)->action & SSQ_RANGE) != 0) in fetchtableentries()
3430 (*asc_entry)--; in fetchtableentries()
3465 *sense_key_desc = sense_entry->desc; in scsi_sense_desc()
3470 *asc_desc = asc_entry->desc; in scsi_sense_desc()
3534 action = asc_entry->action; in scsi_error_action()
3536 action = sense_entry->action; in scsi_error_action()
3614 * This is taken from the SCSI-3 draft spec. in scsi_cdb_sbuf()
3658 switch(csio->scsi_status) { in scsi_status_string()
3668 return("Intermediate-Condition Met"); in scsi_status_string()
3682 csio->scsi_status); in scsi_status_string()
3689 * scsi_command_string() returns 0 for success and -1 for failure.
3707 return(-1); in scsi_command_string()
3711 xpt_setup_ccb(&cgd->ccb_h, in scsi_command_string()
3712 csio->ccb_h.path, in scsi_command_string()
3714 cgd->ccb_h.func_code = XPT_GDEV_TYPE; in scsi_command_string()
3721 if (cgd->ccb_h.status == CAM_DEV_NOT_THERE) in scsi_command_string()
3722 cgd->inq_data.device = T_DIRECT; in scsi_command_string()
3724 inq_data = &cgd->inq_data; in scsi_command_string()
3728 inq_data = &device->inq_data; in scsi_command_string()
3746 * returns non-zero, list traversal is stopped.
3767 desc_len = sense_len -offsetof(struct scsi_sense_data_desc, sense_desc); in scsi_desc_iterate()
3773 desc_len = MIN(desc_len, MIN(sense->extra_len, SSD_EXTRA_MAX)); in scsi_desc_iterate()
3781 desc_len -= sizeof(struct scsi_sense_desc_header); in scsi_desc_iterate()
3787 &sense->sense_desc[cur_pos]; in scsi_desc_iterate()
3797 * desc_len - cur_pos is correct. in scsi_desc_iterate()
3799 if (header->length > (desc_len - cur_pos)) in scsi_desc_iterate()
3805 cur_pos += sizeof(*header) + header->length; in scsi_desc_iterate()
3822 if (header->desc_type == desc_info->desc_type) { in scsi_find_desc_func()
3823 desc_info->header = header; in scsi_find_desc_func()
3866 sense->error_code = SSD_DESC_CURRENT_ERROR; in scsi_set_sense_data_desc_va()
3868 sense->error_code = SSD_DESC_DEFERRED_ERROR; in scsi_set_sense_data_desc_va()
3869 sense->sense_key = sense_key; in scsi_set_sense_data_desc_va()
3870 sense->add_sense_code = asc; in scsi_set_sense_data_desc_va()
3871 sense->add_sense_code_qual = ascq; in scsi_set_sense_data_desc_va()
3872 sense->flags = 0; in scsi_set_sense_data_desc_va()
3874 desc = &sense->sense_desc[0]; in scsi_set_sense_data_desc_va()
3875 space = *sense_len - offsetof(struct scsi_sense_data_desc, sense_desc); in scsi_set_sense_data_desc_va()
3891 sense->flags |= SSDD_SDAT_OVFL; in scsi_set_sense_data_desc_va()
3896 space -= len; in scsi_set_sense_data_desc_va()
3901 if (len > sizeof(sks->sense_key_spec)) in scsi_set_sense_data_desc_va()
3904 sense->flags |= SSDD_SDAT_OVFL; in scsi_set_sense_data_desc_va()
3907 sks->desc_type = SSD_DESC_SKS; in scsi_set_sense_data_desc_va()
3908 sks->length = sizeof(*sks) - in scsi_set_sense_data_desc_va()
3910 bcopy(data, &sks->sense_key_spec, len); in scsi_set_sense_data_desc_va()
3912 space -= sizeof(*sks); in scsi_set_sense_data_desc_va()
3918 if (len > sizeof(cmd->command_info)) in scsi_set_sense_data_desc_va()
3921 sense->flags |= SSDD_SDAT_OVFL; in scsi_set_sense_data_desc_va()
3924 cmd->desc_type = SSD_DESC_COMMAND; in scsi_set_sense_data_desc_va()
3925 cmd->length = sizeof(*cmd) - in scsi_set_sense_data_desc_va()
3927 bcopy(data, &cmd->command_info[ in scsi_set_sense_data_desc_va()
3928 sizeof(cmd->command_info) - len], len); in scsi_set_sense_data_desc_va()
3930 space -= sizeof(*cmd); in scsi_set_sense_data_desc_va()
3936 if (len > sizeof(info->info)) in scsi_set_sense_data_desc_va()
3939 sense->flags |= SSDD_SDAT_OVFL; in scsi_set_sense_data_desc_va()
3942 info->desc_type = SSD_DESC_INFO; in scsi_set_sense_data_desc_va()
3943 info->length = sizeof(*info) - in scsi_set_sense_data_desc_va()
3945 info->byte2 = SSD_INFO_VALID; in scsi_set_sense_data_desc_va()
3946 bcopy(data, &info->info[sizeof(info->info) - len], len); in scsi_set_sense_data_desc_va()
3948 space -= sizeof(*info); in scsi_set_sense_data_desc_va()
3954 if (len > sizeof(fru->fru)) in scsi_set_sense_data_desc_va()
3957 sense->flags |= SSDD_SDAT_OVFL; in scsi_set_sense_data_desc_va()
3960 fru->desc_type = SSD_DESC_FRU; in scsi_set_sense_data_desc_va()
3961 fru->length = sizeof(*fru) - in scsi_set_sense_data_desc_va()
3963 fru->fru = *data; in scsi_set_sense_data_desc_va()
3965 space -= sizeof(*fru); in scsi_set_sense_data_desc_va()
3971 if (len > sizeof(stream->byte3)) in scsi_set_sense_data_desc_va()
3974 sense->flags |= SSDD_SDAT_OVFL; in scsi_set_sense_data_desc_va()
3977 stream->desc_type = SSD_DESC_STREAM; in scsi_set_sense_data_desc_va()
3978 stream->length = sizeof(*stream) - in scsi_set_sense_data_desc_va()
3980 stream->byte3 = *data; in scsi_set_sense_data_desc_va()
3982 space -= sizeof(*stream); in scsi_set_sense_data_desc_va()
3993 sense->extra_len = desc - &sense->sense_desc[0]; in scsi_set_sense_data_desc_va()
3995 sense->extra_len; in scsi_set_sense_data_desc_va()
4014 sense->error_code = SSD_CURRENT_ERROR; in scsi_set_sense_data_fixed_va()
4016 sense->error_code = SSD_DEFERRED_ERROR; in scsi_set_sense_data_fixed_va()
4017 sense->flags = sense_key & SSD_KEY; in scsi_set_sense_data_fixed_va()
4018 sense->extra_len = 0; in scsi_set_sense_data_fixed_va()
4020 sense->add_sense_code = asc; in scsi_set_sense_data_fixed_va()
4021 sense->extra_len = MAX(sense->extra_len, 5); in scsi_set_sense_data_fixed_va()
4023 sense->flags |= SSD_SDAT_OVFL; in scsi_set_sense_data_fixed_va()
4025 sense->add_sense_code_qual = ascq; in scsi_set_sense_data_fixed_va()
4026 sense->extra_len = MAX(sense->extra_len, 6); in scsi_set_sense_data_fixed_va()
4028 sense->flags |= SSD_SDAT_OVFL; in scsi_set_sense_data_fixed_va()
4044 if (len > sizeof(sense->sense_key_spec)) in scsi_set_sense_data_fixed_va()
4047 sense->flags |= SSD_SDAT_OVFL; in scsi_set_sense_data_fixed_va()
4050 bcopy(data, &sense->sense_key_spec[0], len); in scsi_set_sense_data_fixed_va()
4051 sense->extra_len = MAX(sense->extra_len, 10); in scsi_set_sense_data_fixed_va()
4055 sense->flags |= SSD_SDAT_OVFL; in scsi_set_sense_data_fixed_va()
4058 if (len > sizeof(sense->cmd_spec_info)) { in scsi_set_sense_data_fixed_va()
4059 data += len - sizeof(sense->cmd_spec_info); in scsi_set_sense_data_fixed_va()
4060 len = sizeof(sense->cmd_spec_info); in scsi_set_sense_data_fixed_va()
4062 bcopy(data, &sense->cmd_spec_info[ in scsi_set_sense_data_fixed_va()
4063 sizeof(sense->cmd_spec_info) - len], len); in scsi_set_sense_data_fixed_va()
4064 sense->extra_len = MAX(sense->extra_len, 4); in scsi_set_sense_data_fixed_va()
4068 sense->error_code |= SSD_ERRCODE_VALID; in scsi_set_sense_data_fixed_va()
4069 while (len > sizeof(sense->info)) { in scsi_set_sense_data_fixed_va()
4071 sense->error_code &= ~SSD_ERRCODE_VALID; in scsi_set_sense_data_fixed_va()
4073 len --; in scsi_set_sense_data_fixed_va()
4075 bcopy(data, &sense->info[sizeof(sense->info) - len], len); in scsi_set_sense_data_fixed_va()
4079 sense->flags |= SSD_SDAT_OVFL; in scsi_set_sense_data_fixed_va()
4082 sense->fru = *data; in scsi_set_sense_data_fixed_va()
4083 sense->extra_len = MAX(sense->extra_len, 7); in scsi_set_sense_data_fixed_va()
4086 sense->flags |= *data & in scsi_set_sense_data_fixed_va()
4098 sense->extra_len; in scsi_set_sense_data_fixed_va()
4179 if ((info_desc->byte2 & SSD_INFO_VALID) == 0) in scsi_get_sense_info()
4182 *info = scsi_8btou64(info_desc->info); in scsi_get_sense_info()
4192 *info = scsi_8btou64(cmd_desc->command_info); in scsi_get_sense_info()
4202 if (fru_desc->fru == 0) in scsi_get_sense_info()
4205 *info = fru_desc->fru; in scsi_get_sense_info()
4207 *signed_info = (int8_t)fru_desc->fru; in scsi_get_sense_info()
4225 if ((sense->error_code & SSD_ERRCODE_VALID) == 0) in scsi_get_sense_info()
4231 info_val = scsi_4btoul(sense->info); in scsi_get_sense_info()
4246 cmd_val = scsi_4btoul(sense->cmd_spec_info); in scsi_get_sense_info()
4260 if (sense->fru == 0) in scsi_get_sense_info()
4263 *info = sense->fru; in scsi_get_sense_info()
4265 *signed_info = (int8_t)sense->fru; in scsi_get_sense_info()
4305 if ((desc->sense_key_spec[0] & SSD_SKS_VALID) == 0) in scsi_get_sks()
4308 bcopy(desc->sense_key_spec, sks, sizeof(desc->sense_key_spec)); in scsi_get_sks()
4320 if ((sense->sense_key_spec[0] & SSD_SCS_VALID) == 0) in scsi_get_sks()
4323 bcopy(sense->sense_key_spec, sks,sizeof(sense->sense_key_spec)); in scsi_get_sks()
4337 * whether we have block-specific sense information. It is clear by the
4373 *block_bits = block->byte3; in scsi_get_block_info()
4384 *block_bits = sense->flags & SSD_ILI; in scsi_get_block_info()
4426 *stream_bits = stream->byte3; in scsi_get_stream_info()
4437 *stream_bits = sense->flags & (SSD_ILI|SSD_EOM|SSD_FILEMARK); in scsi_get_stream_info()
4487 if (field->byte0 & SSD_SKS_FIELD_CMD) in scsi_sks_sbuf()
4495 if (field->byte0 & SSD_SKS_BPV) in scsi_sks_sbuf()
4497 field->byte0 & SSD_SKS_BIT_VALUE); in scsi_sks_sbuf()
4501 scsi_2btoul(field->field), tmpstr); in scsi_sks_sbuf()
4511 (overflow->byte0 & SSD_SKS_OVERFLOW_SET) ? in scsi_sks_sbuf()
4524 scsi_2btoul(retry->actual_retry_count)); in scsi_sks_sbuf()
4534 progress_val = scsi_2btoul(progress->progress); in scsi_sks_sbuf()
4548 if (segment->byte0 & SSD_SKS_SEGMENT_BPV) in scsi_sks_sbuf()
4550 segment->byte0 & SSD_SKS_SEGMENT_BITPTR); in scsi_sks_sbuf()
4552 sbuf_printf(sb, "%s byte %d %sis invalid", (segment->byte0 & in scsi_sks_sbuf()
4554 scsi_2btoul(segment->field), tmpstr); in scsi_sks_sbuf()
4615 if ((info->byte2 & SSD_INFO_VALID) == 0) in scsi_sense_info_sbuf()
4618 scsi_info_sbuf(sb, cdb, cdb_len, inq_data, scsi_8btou64(info->info)); in scsi_sense_info_sbuf()
4632 scsi_8btou64(command->command_info)); in scsi_sense_command_sbuf()
4646 if ((sks->sense_key_spec[0] & SSD_SKS_VALID) == 0) in scsi_sense_sks_sbuf()
4652 scsi_sks_sbuf(sb, sense_key, sks->sense_key_spec); in scsi_sense_sks_sbuf()
4665 if (fru->fru == 0) in scsi_sense_fru_sbuf()
4668 scsi_fru_sbuf(sb, (uint64_t)fru->fru); in scsi_sense_fru_sbuf()
4680 scsi_stream_sbuf(sb, stream->byte3); in scsi_sense_stream_sbuf()
4692 scsi_block_sbuf(sb, block->byte3); in scsi_sense_block_sbuf()
4713 scsi_sense_desc(progress->sense_key, progress->add_sense_code, in scsi_sense_progress_sbuf()
4714 progress->add_sense_code_qual, inq_data, in scsi_sense_progress_sbuf()
4717 progress_val = scsi_2btoul(progress->progress); in scsi_sense_progress_sbuf()
4724 sbuf_printf(sb, " asc:%x,%x (%s): ", progress->add_sense_code, in scsi_sense_progress_sbuf()
4725 progress->add_sense_code_qual, asc_desc); in scsi_sense_progress_sbuf()
4740 res->status, in scsi_sense_ata_sbuf()
4741 (res->status & 0x80) ? "BSY " : "", in scsi_sense_ata_sbuf()
4742 (res->status & 0x40) ? "DRDY " : "", in scsi_sense_ata_sbuf()
4743 (res->status & 0x20) ? "DF " : "", in scsi_sense_ata_sbuf()
4744 (res->status & 0x10) ? "SERV " : "", in scsi_sense_ata_sbuf()
4745 (res->status & 0x08) ? "DRQ " : "", in scsi_sense_ata_sbuf()
4746 (res->status & 0x04) ? "CORR " : "", in scsi_sense_ata_sbuf()
4747 (res->status & 0x02) ? "IDX " : "", in scsi_sense_ata_sbuf()
4748 (res->status & 0x01) ? "ERR" : ""); in scsi_sense_ata_sbuf()
4749 if (res->status & 1) { in scsi_sense_ata_sbuf()
4751 res->error, in scsi_sense_ata_sbuf()
4752 (res->error & 0x80) ? "ICRC " : "", in scsi_sense_ata_sbuf()
4753 (res->error & 0x40) ? "UNC " : "", in scsi_sense_ata_sbuf()
4754 (res->error & 0x20) ? "MC " : "", in scsi_sense_ata_sbuf()
4755 (res->error & 0x10) ? "IDNF " : "", in scsi_sense_ata_sbuf()
4756 (res->error & 0x08) ? "MCR " : "", in scsi_sense_ata_sbuf()
4757 (res->error & 0x04) ? "ABRT " : "", in scsi_sense_ata_sbuf()
4758 (res->error & 0x02) ? "NM " : "", in scsi_sense_ata_sbuf()
4759 (res->error & 0x01) ? "ILI" : ""); in scsi_sense_ata_sbuf()
4762 if (res->flags & SSD_DESC_ATA_FLAG_EXTEND) { in scsi_sense_ata_sbuf()
4764 res->count_15_8, res->count_7_0); in scsi_sense_ata_sbuf()
4766 res->lba_47_40, res->lba_39_32, res->lba_31_24, in scsi_sense_ata_sbuf()
4767 res->lba_23_16, res->lba_15_8, res->lba_7_0); in scsi_sense_ata_sbuf()
4769 sbuf_printf(sb, "count: %02x, ", res->count_7_0); in scsi_sense_ata_sbuf()
4771 res->lba_23_16, res->lba_15_8, res->lba_7_0); in scsi_sense_ata_sbuf()
4773 sbuf_printf(sb, "device: %02x, ", res->device); in scsi_sense_ata_sbuf()
4788 scsi_extract_sense_len((struct scsi_sense_data *)forwarded->sense_data, in scsi_sense_forwarded_sbuf()
4789 forwarded->length - 2, &error_code, &sense_key, &asc, &ascq, 1); in scsi_sense_forwarded_sbuf()
4809 sbuf_printf(sb, "Descriptor %#x:", header->desc_type); in scsi_sense_generic_sbuf()
4813 for (i = 0; i < header->length; i++, buf_ptr++) in scsi_sense_generic_sbuf()
4864 if (printer->desc_type > header->desc_type) in scsi_sense_desc_sbuf()
4867 if (printer->desc_type != header->desc_type) in scsi_sense_desc_sbuf()
4870 printer->print_func(sb, sense, sense_len, cdb, cdb_len, in scsi_sense_desc_sbuf()
4886 switch (sense_data->error_code & SSD_ERRCODE) { in scsi_sense_type()
4918 switch (header->desc_type) { in scsi_print_desc_func()
4931 sbuf_printf(print_info->sb, "%s", print_info->path_str); in scsi_print_desc_func()
4932 scsi_sense_desc_sbuf(print_info->sb, in scsi_print_desc_func()
4934 print_info->cdb, print_info->cdb_len, in scsi_print_desc_func()
4935 print_info->inq_data, header); in scsi_print_desc_func()
4936 sbuf_putc(print_info->sb, '\n'); in scsi_print_desc_func()
4982 * data isn't long enough), the -1 values that in scsi_sense_only_sbuf()
4996 * Print any block or stream device-specific information. in scsi_sense_only_sbuf()
5031 * Print any command-specific information. in scsi_sense_only_sbuf()
5041 * Print out any sense-key-specific information. in scsi_sense_only_sbuf()
5072 case -1: in scsi_sense_only_sbuf()
5074 * scsi_extract_sense_len() sets values to -1 if the in scsi_sense_only_sbuf()
5082 if (sense->error_code & SSD_ERRCODE_VALID) { in scsi_sense_only_sbuf()
5090 info = scsi_4btoul(fixed_sense->info); in scsi_sense_only_sbuf()
5103 * scsi_sense_sbuf() returns 0 for success and -1 for failure.
5124 return(-1); in scsi_sense_sbuf()
5127 return(-1); in scsi_sense_sbuf()
5132 if ((csio->ccb_h.flags & CAM_CDB_PHYS) != 0) in scsi_sense_sbuf()
5136 xpt_path_string(csio->ccb_h.path, path_str, sizeof(path_str)); in scsi_sense_sbuf()
5143 return(-1); in scsi_sense_sbuf()
5147 xpt_setup_ccb(&cgd->ccb_h, in scsi_sense_sbuf()
5148 csio->ccb_h.path, in scsi_sense_sbuf()
5150 cgd->ccb_h.func_code = XPT_GDEV_TYPE; in scsi_sense_sbuf()
5157 if (cgd->ccb_h.status == CAM_DEV_NOT_THERE) in scsi_sense_sbuf()
5158 cgd->inq_data.device = T_DIRECT; in scsi_sense_sbuf()
5160 inq_data = &cgd->inq_data; in scsi_sense_sbuf()
5164 inq_data = &device->inq_data; in scsi_sense_sbuf()
5184 if (csio->ccb_h.flags & CAM_SENSE_PTR) { in scsi_sense_sbuf()
5185 if (csio->ccb_h.flags & CAM_SENSE_PHYS) { in scsi_sense_sbuf()
5189 return(-1); in scsi_sense_sbuf()
5196 bcopy((struct scsi_sense_data **)&csio->sense_data, in scsi_sense_sbuf()
5208 if (csio->ccb_h.flags & CAM_SENSE_PHYS) { in scsi_sense_sbuf()
5212 return(-1); in scsi_sense_sbuf()
5214 sense = &csio->sense_data; in scsi_sense_sbuf()
5217 scsi_sense_only_sbuf(sense, csio->sense_len - csio->sense_resid, sb, in scsi_sense_sbuf()
5218 path_str, inq_data, scsiio_cdb_ptr(csio), csio->cdb_len); in scsi_sense_sbuf()
5289 * Extract basic sense information. This is backward-compatible with the
5311 if (ccb->ccb_h.func_code != XPT_SCSI_IO || in scsi_extract_sense_ccb()
5312 (ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_SCSI_STATUS_ERROR || in scsi_extract_sense_ccb()
5313 (ccb->csio.scsi_status != SCSI_STATUS_CHECK_COND) || in scsi_extract_sense_ccb()
5314 (ccb->ccb_h.status & CAM_AUTOSNS_VALID) == 0 || in scsi_extract_sense_ccb()
5315 (ccb->ccb_h.flags & CAM_SENSE_PHYS)) in scsi_extract_sense_ccb()
5318 if (ccb->ccb_h.flags & CAM_SENSE_PTR) in scsi_extract_sense_ccb()
5319 bcopy((struct scsi_sense_data **)&ccb->csio.sense_data, in scsi_extract_sense_ccb()
5322 sense_data = &ccb->csio.sense_data; in scsi_extract_sense_ccb()
5324 ccb->csio.sense_len - ccb->csio.sense_resid, in scsi_extract_sense_ccb()
5326 if (*error_code == -1) in scsi_extract_sense_ccb()
5333 * will be set to -1 if they are not present.
5350 *error_code = -1; in scsi_extract_sense_len()
5351 *sense_key = -1; in scsi_extract_sense_len()
5352 *asc = -1; in scsi_extract_sense_len()
5353 *ascq = -1; in scsi_extract_sense_len()
5358 *error_code = sense_data->error_code & SSD_ERRCODE; in scsi_extract_sense_len()
5368 *sense_key = sense->sense_key & SSD_KEY; in scsi_extract_sense_len()
5370 *sense_key = (show_errors) ? -1 : 0; in scsi_extract_sense_len()
5373 *asc = sense->add_sense_code; in scsi_extract_sense_len()
5375 *asc = (show_errors) ? -1 : 0; in scsi_extract_sense_len()
5378 *ascq = sense->add_sense_code_qual; in scsi_extract_sense_len()
5380 *ascq = (show_errors) ? -1 : 0; in scsi_extract_sense_len()
5391 *sense_key = sense->flags & SSD_KEY; in scsi_extract_sense_len()
5393 *sense_key = (show_errors) ? -1 : 0; in scsi_extract_sense_len()
5397 *asc = sense->add_sense_code; in scsi_extract_sense_len()
5399 *asc = (show_errors) ? -1 : 0; in scsi_extract_sense_len()
5403 *ascq = sense->add_sense_code_qual; in scsi_extract_sense_len()
5405 *ascq = (show_errors) ? -1 : 0; in scsi_extract_sense_len()
5466 qtype = " (vendor-unique qualifier)"; in scsi_print_inquiry_sbuf()
5504 dtype = "CD-ROM"; in scsi_print_inquiry_sbuf()
5531 dtype = "Object-Based Storage"; in scsi_print_inquiry_sbuf()
5554 sbuf_printf(sb, "SCSI-%d ", SID_ANSI_REV(inq_data)); in scsi_print_inquiry_sbuf()
5556 sbuf_printf(sb, "SPC-%d SCSI ", SID_ANSI_REV(inq_data) - 2); in scsi_print_inquiry_sbuf()
5578 cam_strvis_sbuf(sb, inq_data->vendor, sizeof(inq_data->vendor), 0); in scsi_print_inquiry_short_sbuf()
5580 cam_strvis_sbuf(sb, inq_data->product, sizeof(inq_data->product), 0); in scsi_print_inquiry_short_sbuf()
5582 cam_strvis_sbuf(sb, inq_data->revision, sizeof(inq_data->revision), 0); in scsi_print_inquiry_short_sbuf()
5606 { 0x08, 625 }, /* FAST-160 */
5607 { 0x09, 1250 }, /* FAST-80 */
5608 { 0x0a, 2500 }, /* FAST-40 40MHz */
5609 { 0x0b, 3030 }, /* FAST-40 33MHz */
5610 { 0x0c, 5000 } /* FAST-20 */
5625 * die with a divide fault- instead return something which in scsi_calc_syncsrate()
5687 naa = (struct scsi_vpd_id_naa_basic *)descr->identifier; in scsi_devid_is_naa_ieee_reg()
5688 if ((descr->id_type & SVPD_ID_TYPE_MASK) != SVPD_ID_TYPE_NAA) in scsi_devid_is_naa_ieee_reg()
5690 if (descr->length < sizeof(struct scsi_vpd_id_naa_ieee_reg)) in scsi_devid_is_naa_ieee_reg()
5692 n = naa->naa >> SVPD_ID_NAA_NAA_SHIFT; in scsi_devid_is_naa_ieee_reg()
5706 if ((descr->id_type & SVPD_ID_PIV) == 0) /* proto field reserved */ in scsi_devid_is_sas_target()
5708 if ((descr->proto_codeset >> SVPD_ID_PROTO_SHIFT) != SCSI_PROTO_SAS) in scsi_devid_is_sas_target()
5719 if ((descr->id_type & SVPD_ID_ASSOC_MASK) != SVPD_ID_ASSOC_LUN) in scsi_devid_is_lun_eui64()
5721 if ((descr->id_type & SVPD_ID_TYPE_MASK) != SVPD_ID_TYPE_EUI64) in scsi_devid_is_lun_eui64()
5732 if ((descr->id_type & SVPD_ID_ASSOC_MASK) != SVPD_ID_ASSOC_LUN) in scsi_devid_is_lun_naa()
5734 if ((descr->id_type & SVPD_ID_TYPE_MASK) != SVPD_ID_TYPE_NAA) in scsi_devid_is_lun_naa()
5745 if ((descr->id_type & SVPD_ID_ASSOC_MASK) != SVPD_ID_ASSOC_LUN) in scsi_devid_is_lun_t10()
5747 if ((descr->id_type & SVPD_ID_TYPE_MASK) != SVPD_ID_TYPE_T10) in scsi_devid_is_lun_t10()
5758 if ((descr->id_type & SVPD_ID_ASSOC_MASK) != SVPD_ID_ASSOC_LUN) in scsi_devid_is_lun_name()
5760 if ((descr->id_type & SVPD_ID_TYPE_MASK) != SVPD_ID_TYPE_SCSI_NAME) in scsi_devid_is_lun_name()
5771 if ((descr->id_type & SVPD_ID_ASSOC_MASK) != SVPD_ID_ASSOC_LUN) in scsi_devid_is_lun_md5()
5773 if ((descr->id_type & SVPD_ID_TYPE_MASK) != SVPD_ID_TYPE_MD5_LUN_ID) in scsi_devid_is_lun_md5()
5784 if ((descr->id_type & SVPD_ID_ASSOC_MASK) != SVPD_ID_ASSOC_LUN) in scsi_devid_is_lun_uuid()
5786 if ((descr->id_type & SVPD_ID_TYPE_MASK) != SVPD_ID_TYPE_UUID) in scsi_devid_is_lun_uuid()
5797 if ((descr->id_type & SVPD_ID_ASSOC_MASK) != SVPD_ID_ASSOC_PORT) in scsi_devid_is_port_naa()
5799 if ((descr->id_type & SVPD_ID_TYPE_MASK) != SVPD_ID_TYPE_NAA) in scsi_devid_is_port_naa()
5812 for (; desc->identifier <= desc_buf_end && in scsi_get_devid_desc()
5813 desc->identifier + desc->length <= desc_buf_end; in scsi_get_devid_desc()
5814 desc = (struct scsi_vpd_id_descriptor *)(desc->identifier in scsi_get_devid_desc()
5815 + desc->length)) { in scsi_get_devid_desc()
5830 len = MIN(scsi_2btoul(id->length), page_len - sizeof(*id)); in scsi_get_devid()
5832 id->desc_list, len, ck_fn)); in scsi_get_devid()
5839 switch (hdr->format_protocol & SCSI_TRN_PROTO_MASK) { in scsi_transportid_sbuf()
5846 n_port_name = scsi_8btou64(fcp->n_port_name); in scsi_transportid_sbuf()
5857 scsi_2btoul(spi->scsi_addr), in scsi_transportid_sbuf()
5858 scsi_2btoul(spi->rel_trgt_port_id)); in scsi_transportid_sbuf()
5863 * XXX KDM there is no transport ID defined in SPC-4 for in scsi_transportid_sbuf()
5873 eui64 = scsi_8btou64(sbp->eui64); in scsi_transportid_sbuf()
5884 for (i = 0; i < sizeof(rdma->initiator_port_id); i++) in scsi_transportid_sbuf()
5885 sbuf_printf(sb, "%02x", rdma->initiator_port_id[i]); in scsi_transportid_sbuf()
5894 if ((hdr->format_protocol & SCSI_TRN_FORMAT_MASK) == in scsi_transportid_sbuf()
5903 add_len = scsi_2btoul(dev->additional_length); in scsi_transportid_sbuf()
5904 add_len = MIN(add_len, valid_len - in scsi_transportid_sbuf()
5907 iscsi_name = &dev->iscsi_name[0]; in scsi_transportid_sbuf()
5909 } else if ((hdr->format_protocol & SCSI_TRN_FORMAT_MASK) == in scsi_transportid_sbuf()
5915 add_len = scsi_2btoul(port->additional_length); in scsi_transportid_sbuf()
5916 add_len = MIN(add_len, valid_len - in scsi_transportid_sbuf()
5919 iscsi_name = &port->iscsi_name[0]; in scsi_transportid_sbuf()
5922 (hdr->format_protocol & in scsi_transportid_sbuf()
5932 * This is supposed to be a NUL-terminated ASCII in scsi_transportid_sbuf()
5959 sas_addr = scsi_8btou64(sas->sas_address); in scsi_transportid_sbuf()
5968 * SPC-4. in scsi_transportid_sbuf()
5971 "%#x", hdr->format_protocol & SCSI_TRN_PROTO_MASK); in scsi_transportid_sbuf()
5978 rid = (struct scsi_sop_routing_id_norm *)sop->routing_id; in scsi_transportid_sbuf()
5981 * Note that there is no alternate format specified in SPC-4 in scsi_transportid_sbuf()
5988 rid->bus, rid->devfunc >> SCSI_TRN_SOP_DEV_SHIFT, in scsi_transportid_sbuf()
5989 rid->devfunc & SCSI_TRN_SOP_FUNC_NORM_MAX); in scsi_transportid_sbuf()
5995 hdr->format_protocol & SCSI_TRN_PROTO_MASK); in scsi_transportid_sbuf()
6036 * SCSI_NV_FOUND - match found
6037 * SCSI_NV_AMBIGUOUS - more than one match, none of them exact
6038 * SCSI_NV_NOT_FOUND - no match found
6085 * all 64-bit numbers, the code is similar.
6107 "parsing ID %s, 64-bit number required", in scsi_parse_transportid_64bit()
6156 fcp->format_protocol = SCSI_PROTO_FC | in scsi_parse_transportid_64bit()
6158 scsi_u64to8b(value, fcp->n_port_name); in scsi_parse_transportid_64bit()
6165 sbp->format_protocol = SCSI_PROTO_1394 | in scsi_parse_transportid_64bit()
6167 scsi_u64to8b(value, sbp->eui64); in scsi_parse_transportid_64bit()
6174 sas->format_protocol = SCSI_PROTO_SAS | in scsi_parse_transportid_64bit()
6176 scsi_u64to8b(value, sas->sas_address); in scsi_parse_transportid_64bit()
6260 spi->format_protocol = SCSI_PROTO_SPI | SCSI_TRN_SPI_FORMAT_DEFAULT; in scsi_parse_transportid_spi()
6261 scsi_ulto2b(scsi_addr, spi->scsi_addr); in scsi_parse_transportid_spi()
6262 scsi_ulto2b(target_port, spi->rel_trgt_port_id); in scsi_parse_transportid_spi()
6329 * 128-bit integer type, and so no strtou128t() routine to convert in scsi_parse_transportid_rdma()
6354 c -= '0'; in scsi_parse_transportid_rdma()
6356 c -= isupper(c) ? 'A' - 10 : 'a' - 10; in scsi_parse_transportid_rdma()
6405 rdma->format_protocol = SCSI_PROTO_RDMA | SCSI_TRN_RDMA_FORMAT_DEFAULT; in scsi_parse_transportid_rdma()
6406 bcopy(rdma_id, rdma->initiator_port_id, SCSI_TRN_RDMA_PORT_LEN); in scsi_parse_transportid_rdma()
6417 * iqn.2012-06.com.example:target0
6420 * iqn.2012-06.com.example:target0,i,0x123
6516 iscsi->format_protocol = SCSI_PROTO_ISCSI; in scsi_parse_transportid_iscsi()
6518 iscsi->format_protocol |= SCSI_TRN_ISCSI_FORMAT_DEVICE; in scsi_parse_transportid_iscsi()
6520 iscsi->format_protocol |= SCSI_TRN_ISCSI_FORMAT_PORT; in scsi_parse_transportid_iscsi()
6521 name_len = id_size - sizeof(*iscsi); in scsi_parse_transportid_iscsi()
6522 scsi_ulto2b(name_len, iscsi->additional_length); in scsi_parse_transportid_iscsi()
6523 snprintf(iscsi->iscsi_name, name_len, "%s%s", iqn_prefix, id_str); in scsi_parse_transportid_iscsi()
6669 sop->format_protocol = SCSI_PROTO_SOP | SCSI_TRN_SOP_FORMAT_DEFAULT; in scsi_parse_transportid_sop()
6675 bcopy(&rid, sop->routing_id, MIN(sizeof(rid), in scsi_parse_transportid_sop()
6676 sizeof(sop->routing_id))); in scsi_parse_transportid_sop()
6682 bcopy(&rid, sop->routing_id, MIN(sizeof(rid), in scsi_parse_transportid_sop()
6683 sizeof(sop->routing_id))); in scsi_parse_transportid_sop()
6692 * transportid_str: NUL-terminated string with format: protcol,id
6698 * error_str: If non-NULL, it will contain error information (without
6702 * Returns 0 for success, non-zero for failure.
6857 "Device Vendor/Serial at Last Load - 1",
6861 "Device Vendor/Serial at Last Load - 2",
6865 "Device Vendor/Serial at Last Load - 3",
7071 field_size = scsi_2btoul(hdr->length); in scsi_attrib_volcoh_sbuf()
7072 avail_len = valid_len - sizeof(*hdr); in scsi_attrib_volcoh_sbuf()
7077 "length %u", scsi_2btoul(hdr->id), avail_len, in scsi_attrib_volcoh_sbuf()
7090 cur_ptr = hdr->attribute; in scsi_attrib_volcoh_sbuf()
7177 field_size = scsi_2btoul(hdr->length); in scsi_attrib_vendser_sbuf()
7178 avail_len = valid_len - sizeof(*hdr); in scsi_attrib_vendser_sbuf()
7183 "length %u", scsi_2btoul(hdr->id), avail_len, in scsi_attrib_vendser_sbuf()
7197 scsi_2btoul(hdr->id)); in scsi_attrib_vendser_sbuf()
7202 vendser = (struct scsi_attrib_vendser *)hdr->attribute; in scsi_attrib_vendser_sbuf()
7216 cam_strvis_sbuf(sb, vendser->vendor, sizeof(vendser->vendor), in scsi_attrib_vendser_sbuf()
7219 cam_strvis_sbuf(sb, vendser->serial_num, sizeof(vendser->serial_num), in scsi_attrib_vendser_sbuf()
7237 field_size = scsi_2btoul(hdr->length); in scsi_attrib_hexdump_sbuf()
7238 avail_len = valid_len - sizeof(*hdr); in scsi_attrib_hexdump_sbuf()
7240 num_ptr = hdr->attribute; in scsi_attrib_hexdump_sbuf()
7261 number_size = scsi_2btoul(hdr->length); in scsi_attrib_int_sbuf()
7263 avail_len = valid_len - sizeof(*hdr); in scsi_attrib_int_sbuf()
7268 "length %u", scsi_2btoul(hdr->id), avail_len, in scsi_attrib_int_sbuf()
7285 print_number = hdr->attribute[0]; in scsi_attrib_int_sbuf()
7288 print_number = scsi_2btoul(hdr->attribute); in scsi_attrib_int_sbuf()
7291 print_number = scsi_3btoul(hdr->attribute); in scsi_attrib_int_sbuf()
7294 print_number = scsi_4btoul(hdr->attribute); in scsi_attrib_int_sbuf()
7297 print_number = scsi_8btou64(hdr->attribute); in scsi_attrib_int_sbuf()
7345 avail_len = valid_len - sizeof(*hdr); in scsi_attrib_ascii_sbuf()
7346 field_size = scsi_2btoul(hdr->length); in scsi_attrib_ascii_sbuf()
7364 cam_strvis_sbuf(sb, hdr->attribute, print_size, strvis_flags); in scsi_attrib_ascii_sbuf()
7370 * e.g. in SPC-4r37, section 7.4.2.2.5, VOLUME IDENTIFIER in scsi_attrib_ascii_sbuf()
7372 * (see SMC-3) of the medium. If the device server supports in scsi_attrib_ascii_sbuf()
7380 "length %u", scsi_2btoul(hdr->id), avail_len, in scsi_attrib_ascii_sbuf()
7400 avail_len = valid_len - sizeof(*hdr); in scsi_attrib_text_sbuf()
7401 field_size = scsi_2btoul(hdr->length); in scsi_attrib_text_sbuf()
7412 if (hdr->attribute[i] == '\0') in scsi_attrib_text_sbuf()
7414 else if (((unsigned char)hdr->attribute[i] < 0x80) in scsi_attrib_text_sbuf()
7416 sbuf_putc(sb, hdr->attribute[i]); in scsi_attrib_text_sbuf()
7419 (unsigned char)hdr->attribute[i]); in scsi_attrib_text_sbuf()
7429 "length %u", scsi_2btoul(hdr->id), avail_len, in scsi_attrib_text_sbuf()
7466 switch (hdr->byte2 & SMA_FORMAT_MASK) { in scsi_attrib_value_sbuf()
7472 if (scsi_2btoul(hdr->length) <= 8) in scsi_attrib_value_sbuf()
7489 "format 0x%x", hdr->byte2 & SMA_FORMAT_MASK); in scsi_attrib_value_sbuf()
7519 id = scsi_2btoul(hdr->id); in scsi_attrib_prefix_sbuf()
7528 len = scsi_2btoul(hdr->length); in scsi_attrib_prefix_sbuf()
7551 (hdr->byte2 & SMA_READ_ONLY) ? "RO" : "RW"); in scsi_attrib_prefix_sbuf()
7575 id = scsi_2btoul(hdr->id); in scsi_attrib_sbuf()
7597 entry->desc); in scsi_attrib_sbuf()
7598 if (entry->to_str == NULL) in scsi_attrib_sbuf()
7600 retval = entry->to_str(sb, hdr, valid_len, entry->flags, in scsi_attrib_sbuf()
7607 if (entry->to_str == NULL) in scsi_attrib_sbuf()
7611 valid_len, entry->desc); in scsi_attrib_sbuf()
7612 retval = entry->to_str(sb, hdr, valid_len, entry->flags, in scsi_attrib_sbuf()
7627 && (entry->suffix != NULL)) in scsi_attrib_sbuf()
7628 sbuf_printf(sb, " %s", entry->suffix); in scsi_attrib_sbuf()
7655 scsi_cmd = (struct scsi_test_unit_ready *)&csio->cdb_io.cdb_bytes; in scsi_test_unit_ready()
7657 scsi_cmd->opcode = TEST_UNIT_READY; in scsi_test_unit_ready()
7679 scsi_cmd = (struct scsi_request_sense *)&csio->cdb_io.cdb_bytes; in scsi_request_sense()
7681 scsi_cmd->opcode = REQUEST_SENSE; in scsi_request_sense()
7682 scsi_cmd->length = dxfer_len; in scsi_request_sense()
7705 scsi_cmd = (struct scsi_inquiry *)&csio->cdb_io.cdb_bytes; in scsi_inquiry()
7707 scsi_cmd->opcode = INQUIRY; in scsi_inquiry()
7709 scsi_cmd->byte2 |= SI_EVPD; in scsi_inquiry()
7710 scsi_cmd->page_code = page_code; in scsi_inquiry()
7712 scsi_ulto2b(inq_len, scsi_cmd->length); in scsi_inquiry()
7757 scsi_cmd = (struct scsi_mode_sense_6 *)&csio->cdb_io.cdb_bytes; in scsi_mode_sense_subpage()
7759 scsi_cmd->opcode = MODE_SENSE_6; in scsi_mode_sense_subpage()
7761 scsi_cmd->byte2 |= SMS_DBD; in scsi_mode_sense_subpage()
7762 scsi_cmd->page = pc | page; in scsi_mode_sense_subpage()
7763 scsi_cmd->subpage = subpage; in scsi_mode_sense_subpage()
7764 scsi_cmd->length = param_len; in scsi_mode_sense_subpage()
7772 scsi_cmd = (struct scsi_mode_sense_10 *)&csio->cdb_io.cdb_bytes; in scsi_mode_sense_subpage()
7774 scsi_cmd->opcode = MODE_SENSE_10; in scsi_mode_sense_subpage()
7776 scsi_cmd->byte2 |= SMS_DBD; in scsi_mode_sense_subpage()
7777 scsi_cmd->page = pc | page; in scsi_mode_sense_subpage()
7778 scsi_cmd->subpage = subpage; in scsi_mode_sense_subpage()
7779 scsi_ulto2b(param_len, scsi_cmd->length); in scsi_mode_sense_subpage()
7826 scsi_cmd = (struct scsi_mode_select_6 *)&csio->cdb_io.cdb_bytes; in scsi_mode_select_len()
7828 scsi_cmd->opcode = MODE_SELECT_6; in scsi_mode_select_len()
7830 scsi_cmd->byte2 |= SMS_PF; in scsi_mode_select_len()
7832 scsi_cmd->byte2 |= SMS_SP; in scsi_mode_select_len()
7833 scsi_cmd->length = param_len; in scsi_mode_select_len()
7842 (struct scsi_mode_select_10 *)&csio->cdb_io.cdb_bytes; in scsi_mode_select_len()
7844 scsi_cmd->opcode = MODE_SELECT_10; in scsi_mode_select_len()
7846 scsi_cmd->byte2 |= SMS_PF; in scsi_mode_select_len()
7848 scsi_cmd->byte2 |= SMS_SP; in scsi_mode_select_len()
7849 scsi_ulto2b(param_len, scsi_cmd->length); in scsi_mode_select_len()
7875 scsi_cmd = (struct scsi_log_sense *)&csio->cdb_io.cdb_bytes; in scsi_log_sense()
7877 scsi_cmd->opcode = LOG_SENSE; in scsi_log_sense()
7878 scsi_cmd->page = page_code | page; in scsi_log_sense()
7880 scsi_cmd->byte2 |= SLS_SP; in scsi_log_sense()
7882 scsi_cmd->byte2 |= SLS_PPC; in scsi_log_sense()
7883 scsi_ulto2b(paramptr, scsi_cmd->paramptr); in scsi_log_sense()
7884 scsi_ulto2b(param_len, scsi_cmd->length); in scsi_log_sense()
7909 scsi_cmd = (struct scsi_log_select *)&csio->cdb_io.cdb_bytes; in scsi_log_select()
7911 scsi_cmd->opcode = LOG_SELECT; in scsi_log_select()
7912 scsi_cmd->page = page_code & SLS_PAGE_CODE; in scsi_log_select()
7914 scsi_cmd->byte2 |= SLS_SP; in scsi_log_select()
7916 scsi_cmd->byte2 |= SLS_PCR; in scsi_log_select()
7917 scsi_ulto2b(param_len, scsi_cmd->length); in scsi_log_select()
7954 scsi_cmd = (struct scsi_prevent *)&csio->cdb_io.cdb_bytes; in scsi_prevent()
7956 scsi_cmd->opcode = PREVENT_ALLOW; in scsi_prevent()
7957 scsi_cmd->how = action; in scsi_prevent()
7981 scsi_cmd = (struct scsi_read_capacity *)&csio->cdb_io.cdb_bytes; in scsi_read_capacity()
7983 scsi_cmd->opcode = READ_CAPACITY; in scsi_read_capacity()
8005 scsi_cmd = (struct scsi_read_capacity_16 *)&csio->cdb_io.cdb_bytes; in scsi_read_capacity_16()
8007 scsi_cmd->opcode = SERVICE_ACTION_IN; in scsi_read_capacity_16()
8008 scsi_cmd->service_action = SRC16_SERVICE_ACTION; in scsi_read_capacity_16()
8009 scsi_u64to8b(lba, scsi_cmd->addr); in scsi_read_capacity_16()
8010 scsi_ulto4b(rcap_buf_len, scsi_cmd->alloc_len); in scsi_read_capacity_16()
8036 scsi_cmd = (struct scsi_report_luns *)&csio->cdb_io.cdb_bytes; in scsi_report_luns()
8038 scsi_cmd->opcode = REPORT_LUNS; in scsi_report_luns()
8039 scsi_cmd->select_report = select_report; in scsi_report_luns()
8040 scsi_ulto4b(alloc_len, scsi_cmd->length); in scsi_report_luns()
8062 scsi_cmd = (struct scsi_target_group *)&csio->cdb_io.cdb_bytes; in scsi_report_target_group()
8064 scsi_cmd->opcode = MAINTENANCE_IN; in scsi_report_target_group()
8065 scsi_cmd->service_action = REPORT_TARGET_PORT_GROUPS | pdf; in scsi_report_target_group()
8066 scsi_ulto4b(alloc_len, scsi_cmd->length); in scsi_report_target_group()
8088 scsi_cmd = (struct scsi_timestamp *)&csio->cdb_io.cdb_bytes; in scsi_report_timestamp()
8090 scsi_cmd->opcode = MAINTENANCE_IN; in scsi_report_timestamp()
8091 scsi_cmd->service_action = REPORT_TIMESTAMP | pdf; in scsi_report_timestamp()
8092 scsi_ulto4b(alloc_len, scsi_cmd->length); in scsi_report_timestamp()
8113 scsi_cmd = (struct scsi_target_group *)&csio->cdb_io.cdb_bytes; in scsi_set_target_group()
8115 scsi_cmd->opcode = MAINTENANCE_OUT; in scsi_set_target_group()
8116 scsi_cmd->service_action = SET_TARGET_PORT_GROUPS; in scsi_set_target_group()
8117 scsi_ulto4b(alloc_len, scsi_cmd->length); in scsi_set_target_group()
8152 scsi_cmd = (struct scsi_timestamp *)&csio->cdb_io.cdb_bytes; in scsi_set_timestamp()
8154 scsi_cmd->opcode = MAINTENANCE_OUT; in scsi_set_timestamp()
8155 scsi_cmd->service_action = SET_TIMESTAMP; in scsi_set_timestamp()
8156 scsi_ulto4b(alloc_len, scsi_cmd->length); in scsi_set_timestamp()
8184 scsi_cmd = (struct scsi_sync_cache *)&csio->cdb_io.cdb_bytes; in scsi_synchronize_cache()
8186 scsi_cmd->opcode = SYNCHRONIZE_CACHE; in scsi_synchronize_cache()
8187 scsi_ulto4b(begin_lba, scsi_cmd->begin_lba); in scsi_synchronize_cache()
8188 scsi_ulto2b(lb_count, scsi_cmd->lb_count); in scsi_synchronize_cache()
8219 scsi_cmd = (struct scsi_rw_6 *)&csio->cdb_io.cdb_bytes; in scsi_read_write()
8220 scsi_cmd->opcode = read ? READ_6 : WRITE_6; in scsi_read_write()
8221 scsi_ulto3b(lba, scsi_cmd->addr); in scsi_read_write()
8222 scsi_cmd->length = block_count & 0xff; in scsi_read_write()
8223 scsi_cmd->control = 0; in scsi_read_write()
8226 CAM_DEBUG(csio->ccb_h.path, CAM_DEBUG_SUBTRACE, in scsi_read_write()
8227 ("6byte: %x%x%x:%d:%d\n", scsi_cmd->addr[0], in scsi_read_write()
8228 scsi_cmd->addr[1], scsi_cmd->addr[2], in scsi_read_write()
8229 scsi_cmd->length, dxfer_len)); in scsi_read_write()
8238 scsi_cmd = (struct scsi_rw_10 *)&csio->cdb_io.cdb_bytes; in scsi_read_write()
8239 scsi_cmd->opcode = read ? READ_10 : WRITE_10; in scsi_read_write()
8240 scsi_cmd->byte2 = byte2; in scsi_read_write()
8241 scsi_ulto4b(lba, scsi_cmd->addr); in scsi_read_write()
8242 scsi_cmd->reserved = 0; in scsi_read_write()
8243 scsi_ulto2b(block_count, scsi_cmd->length); in scsi_read_write()
8244 scsi_cmd->control = 0; in scsi_read_write()
8247 CAM_DEBUG(csio->ccb_h.path, CAM_DEBUG_SUBTRACE, in scsi_read_write()
8248 ("10byte: %x%x%x%x:%x%x: %d\n", scsi_cmd->addr[0], in scsi_read_write()
8249 scsi_cmd->addr[1], scsi_cmd->addr[2], in scsi_read_write()
8250 scsi_cmd->addr[3], scsi_cmd->length[0], in scsi_read_write()
8251 scsi_cmd->length[1], dxfer_len)); in scsi_read_write()
8261 scsi_cmd = (struct scsi_rw_12 *)&csio->cdb_io.cdb_bytes; in scsi_read_write()
8262 scsi_cmd->opcode = read ? READ_12 : WRITE_12; in scsi_read_write()
8263 scsi_cmd->byte2 = byte2; in scsi_read_write()
8264 scsi_ulto4b(lba, scsi_cmd->addr); in scsi_read_write()
8265 scsi_cmd->reserved = 0; in scsi_read_write()
8266 scsi_ulto4b(block_count, scsi_cmd->length); in scsi_read_write()
8267 scsi_cmd->control = 0; in scsi_read_write()
8270 CAM_DEBUG(csio->ccb_h.path, CAM_DEBUG_SUBTRACE, in scsi_read_write()
8271 ("12byte: %x%x%x%x:%x%x%x%x: %d\n", scsi_cmd->addr[0], in scsi_read_write()
8272 scsi_cmd->addr[1], scsi_cmd->addr[2], in scsi_read_write()
8273 scsi_cmd->addr[3], scsi_cmd->length[0], in scsi_read_write()
8274 scsi_cmd->length[1], scsi_cmd->length[2], in scsi_read_write()
8275 scsi_cmd->length[3], dxfer_len)); in scsi_read_write()
8283 scsi_cmd = (struct scsi_rw_16 *)&csio->cdb_io.cdb_bytes; in scsi_read_write()
8284 scsi_cmd->opcode = read ? READ_16 : WRITE_16; in scsi_read_write()
8285 scsi_cmd->byte2 = byte2; in scsi_read_write()
8286 scsi_u64to8b(lba, scsi_cmd->addr); in scsi_read_write()
8287 scsi_cmd->reserved = 0; in scsi_read_write()
8288 scsi_ulto4b(block_count, scsi_cmd->length); in scsi_read_write()
8289 scsi_cmd->control = 0; in scsi_read_write()
8322 scsi_cmd = (struct scsi_write_same_10 *)&csio->cdb_io.cdb_bytes; in scsi_write_same()
8323 scsi_cmd->opcode = WRITE_SAME_10; in scsi_write_same()
8324 scsi_cmd->byte2 = byte2; in scsi_write_same()
8325 scsi_ulto4b(lba, scsi_cmd->addr); in scsi_write_same()
8326 scsi_cmd->group = 0; in scsi_write_same()
8327 scsi_ulto2b(block_count, scsi_cmd->length); in scsi_write_same()
8328 scsi_cmd->control = 0; in scsi_write_same()
8331 CAM_DEBUG(csio->ccb_h.path, CAM_DEBUG_SUBTRACE, in scsi_write_same()
8332 ("10byte: %x%x%x%x:%x%x: %d\n", scsi_cmd->addr[0], in scsi_write_same()
8333 scsi_cmd->addr[1], scsi_cmd->addr[2], in scsi_write_same()
8334 scsi_cmd->addr[3], scsi_cmd->length[0], in scsi_write_same()
8335 scsi_cmd->length[1], dxfer_len)); in scsi_write_same()
8343 scsi_cmd = (struct scsi_write_same_16 *)&csio->cdb_io.cdb_bytes; in scsi_write_same()
8344 scsi_cmd->opcode = WRITE_SAME_16; in scsi_write_same()
8345 scsi_cmd->byte2 = byte2; in scsi_write_same()
8346 scsi_u64to8b(lba, scsi_cmd->addr); in scsi_write_same()
8347 scsi_ulto4b(block_count, scsi_cmd->length); in scsi_write_same()
8348 scsi_cmd->group = 0; in scsi_write_same()
8349 scsi_cmd->control = 0; in scsi_write_same()
8352 CAM_DEBUG(csio->ccb_h.path, CAM_DEBUG_SUBTRACE, in scsi_write_same()
8354 scsi_cmd->addr[0], scsi_cmd->addr[1], in scsi_write_same()
8355 scsi_cmd->addr[2], scsi_cmd->addr[3], in scsi_write_same()
8356 scsi_cmd->addr[4], scsi_cmd->addr[5], in scsi_write_same()
8357 scsi_cmd->addr[6], scsi_cmd->addr[7], in scsi_write_same()
8358 scsi_cmd->length[0], scsi_cmd->length[1], in scsi_write_same()
8359 scsi_cmd->length[2], scsi_cmd->length[3], in scsi_write_same()
8566 * If we have parameters that require a 48-bit ATA command, we have to in scsi_ata_pass()
8567 * use the 16 byte ATA PASS-THROUGH command at least. in scsi_ata_pass()
8582 * 32-byte version of the ATA PASS-THROUGH command. in scsi_ata_pass()
8590 if ((cmd_size > sizeof(csio->cdb_io.cdb_bytes)) in scsi_ata_pass()
8599 * in one place or another. We prefer the built-in array, but used in scsi_ata_pass()
8602 if (cmd_size <= sizeof(csio->cdb_io.cdb_bytes)) in scsi_ata_pass()
8603 cdb_ptr = csio->cdb_io.cdb_bytes; in scsi_ata_pass()
8616 cdb->opcode = ATA_PASS_12; in scsi_ata_pass()
8617 cdb->protocol = protocol; in scsi_ata_pass()
8618 cdb->flags = ata_flags; in scsi_ata_pass()
8619 cdb->features = features; in scsi_ata_pass()
8620 cdb->sector_count = sector_count; in scsi_ata_pass()
8621 cdb->lba_low = lba & 0xff; in scsi_ata_pass()
8622 cdb->lba_mid = (lba >> 8) & 0xff; in scsi_ata_pass()
8623 cdb->lba_high = (lba >> 16) & 0xff; in scsi_ata_pass()
8624 cdb->device = ((lba >> 24) & 0xf) | ATA_DEV_LBA; in scsi_ata_pass()
8625 cdb->command = command; in scsi_ata_pass()
8626 cdb->control = control; in scsi_ata_pass()
8634 cdb->opcode = ATA_PASS_16; in scsi_ata_pass()
8635 cdb->protocol = protocol; in scsi_ata_pass()
8636 cdb->flags = ata_flags; in scsi_ata_pass()
8637 cdb->features = features & 0xff; in scsi_ata_pass()
8638 cdb->sector_count = sector_count & 0xff; in scsi_ata_pass()
8639 cdb->lba_low = lba & 0xff; in scsi_ata_pass()
8640 cdb->lba_mid = (lba >> 8) & 0xff; in scsi_ata_pass()
8641 cdb->lba_high = (lba >> 16) & 0xff; in scsi_ata_pass()
8643 * If AP_EXTEND is set, we're sending a 48-bit command. in scsi_ata_pass()
8644 * Otherwise it's a 28-bit command. in scsi_ata_pass()
8647 cdb->lba_low_ext = (lba >> 24) & 0xff; in scsi_ata_pass()
8648 cdb->lba_mid_ext = (lba >> 32) & 0xff; in scsi_ata_pass()
8649 cdb->lba_high_ext = (lba >> 40) & 0xff; in scsi_ata_pass()
8650 cdb->features_ext = (features >> 8) & 0xff; in scsi_ata_pass()
8651 cdb->sector_count_ext = (sector_count >> 8) & 0xff; in scsi_ata_pass()
8652 cdb->device = device | ATA_DEV_LBA; in scsi_ata_pass()
8654 cdb->lba_low_ext = (lba >> 24) & 0xf; in scsi_ata_pass()
8655 cdb->device = ((lba >> 24) & 0xf) | ATA_DEV_LBA; in scsi_ata_pass()
8657 cdb->command = command; in scsi_ata_pass()
8658 cdb->control = control; in scsi_ata_pass()
8666 cdb->opcode = VARIABLE_LEN_CDB; in scsi_ata_pass()
8667 cdb->control = control; in scsi_ata_pass()
8668 cdb->length = sizeof(*cdb) - __offsetof(struct ata_pass_32, in scsi_ata_pass()
8670 scsi_ulto2b(ATA_PASS_32_SA, cdb->service_action); in scsi_ata_pass()
8671 cdb->protocol = protocol; in scsi_ata_pass()
8672 cdb->flags = ata_flags; in scsi_ata_pass()
8676 cdb->device = ((lba >> 24) & 0xf) | ATA_DEV_LBA; in scsi_ata_pass()
8680 cdb->device = device | ATA_DEV_LBA; in scsi_ata_pass()
8683 bcopy(&tmp_lba[2], cdb->lba, sizeof(cdb->lba)); in scsi_ata_pass()
8684 scsi_ulto2b(features, cdb->features); in scsi_ata_pass()
8685 scsi_ulto2b(sector_count, cdb->count); in scsi_ata_pass()
8686 cdb->command = command; in scsi_ata_pass()
8687 cdb->icc = icc; in scsi_ata_pass()
8688 scsi_ulto4b(auxiliary, cdb->auxiliary); in scsi_ata_pass()
8716 ata_cmd = (struct ata_pass_16 *)&csio->cdb_io.cdb_bytes; in scsi_ata_pass_16()
8717 ata_cmd->opcode = ATA_PASS_16; in scsi_ata_pass_16()
8718 ata_cmd->protocol = protocol; in scsi_ata_pass_16()
8719 ata_cmd->flags = ata_flags; in scsi_ata_pass_16()
8720 ata_cmd->features_ext = features >> 8; in scsi_ata_pass_16()
8721 ata_cmd->features = features; in scsi_ata_pass_16()
8722 ata_cmd->sector_count_ext = sector_count >> 8; in scsi_ata_pass_16()
8723 ata_cmd->sector_count = sector_count; in scsi_ata_pass_16()
8724 ata_cmd->lba_low = lba; in scsi_ata_pass_16()
8725 ata_cmd->lba_mid = lba >> 8; in scsi_ata_pass_16()
8726 ata_cmd->lba_high = lba >> 16; in scsi_ata_pass_16()
8727 ata_cmd->device = ATA_DEV_LBA; in scsi_ata_pass_16()
8729 ata_cmd->lba_low_ext = lba >> 24; in scsi_ata_pass_16()
8730 ata_cmd->lba_mid_ext = lba >> 32; in scsi_ata_pass_16()
8731 ata_cmd->lba_high_ext = lba >> 40; in scsi_ata_pass_16()
8733 ata_cmd->device |= (lba >> 24) & 0x0f; in scsi_ata_pass_16()
8734 ata_cmd->command = command; in scsi_ata_pass_16()
8735 ata_cmd->control = control; in scsi_ata_pass_16()
8758 scsi_cmd = (struct scsi_unmap *)&csio->cdb_io.cdb_bytes; in scsi_unmap()
8759 scsi_cmd->opcode = UNMAP; in scsi_unmap()
8760 scsi_cmd->byte2 = byte2; in scsi_unmap()
8761 scsi_ulto4b(0, scsi_cmd->reserved); in scsi_unmap()
8762 scsi_cmd->group = 0; in scsi_unmap()
8763 scsi_ulto2b(dxfer_len, scsi_cmd->length); in scsi_unmap()
8764 scsi_cmd->control = 0; in scsi_unmap()
8787 scsi_cmd = (struct scsi_receive_diag *)&csio->cdb_io.cdb_bytes; in scsi_receive_diagnostic_results()
8789 scsi_cmd->opcode = RECEIVE_DIAGNOSTIC; in scsi_receive_diagnostic_results()
8791 scsi_cmd->byte2 |= SRD_PCV; in scsi_receive_diagnostic_results()
8792 scsi_cmd->page_code = page_code; in scsi_receive_diagnostic_results()
8794 scsi_ulto2b(allocation_length, scsi_cmd->length); in scsi_receive_diagnostic_results()
8818 scsi_cmd = (struct scsi_send_diag *)&csio->cdb_io.cdb_bytes; in scsi_send_diagnostic()
8820 scsi_cmd->opcode = SEND_DIAGNOSTIC; in scsi_send_diagnostic()
8823 * The default self-test mode control and specific test in scsi_send_diagnostic()
8829 scsi_cmd->byte2 = ((self_test_code << SSD_SELF_TEST_CODE_SHIFT) in scsi_send_diagnostic()
8835 scsi_ulto2b(param_list_length, scsi_cmd->length); in scsi_send_diagnostic()
8859 scsi_cmd = (struct scsi_get_physical_element_status *)&csio->cdb_io.cdb_bytes; in scsi_get_physical_element_status()
8861 scsi_cmd->opcode = SERVICE_ACTION_IN; in scsi_get_physical_element_status()
8862 scsi_cmd->service_action = GET_PHYSICAL_ELEMENT_STATUS; in scsi_get_physical_element_status()
8863 scsi_ulto4b(starting_element, scsi_cmd->starting_element); in scsi_get_physical_element_status()
8864 scsi_ulto4b(allocation_length, scsi_cmd->allocation_length); in scsi_get_physical_element_status()
8887 scsi_cmd = (struct scsi_remove_element_and_truncate *)&csio->cdb_io.cdb_bytes; in scsi_remove_element_and_truncate()
8889 scsi_cmd->opcode = SERVICE_ACTION_IN; in scsi_remove_element_and_truncate()
8890 scsi_cmd->service_action = REMOVE_ELEMENT_AND_TRUNCATE; in scsi_remove_element_and_truncate()
8891 scsi_u64to8b(requested_capacity, scsi_cmd->requested_capacity); in scsi_remove_element_and_truncate()
8892 scsi_ulto4b(element_id, scsi_cmd->element_identifier); in scsi_remove_element_and_truncate()
8914 scsi_cmd = (struct scsi_service_action_in *)&csio->cdb_io.cdb_bytes; in scsi_restore_elements_and_rebuild()
8916 scsi_cmd->opcode = SERVICE_ACTION_IN; in scsi_restore_elements_and_rebuild()
8917 scsi_cmd->service_action = RESTORE_ELEMENTS_AND_REBUILD; in scsi_restore_elements_and_rebuild()
8941 scsi_cmd = (struct scsi_read_buffer *)&csio->cdb_io.cdb_bytes; in scsi_read_buffer()
8943 scsi_cmd->opcode = READ_BUFFER; in scsi_read_buffer()
8944 scsi_cmd->byte2 = mode; in scsi_read_buffer()
8945 scsi_cmd->buffer_id = buffer_id; in scsi_read_buffer()
8946 scsi_ulto3b(offset, scsi_cmd->offset); in scsi_read_buffer()
8947 scsi_ulto3b(allocation_length, scsi_cmd->length); in scsi_read_buffer()
8971 scsi_cmd = (struct scsi_write_buffer *)&csio->cdb_io.cdb_bytes; in scsi_write_buffer()
8973 scsi_cmd->opcode = WRITE_BUFFER; in scsi_write_buffer()
8974 scsi_cmd->byte2 = mode; in scsi_write_buffer()
8975 scsi_cmd->buffer_id = buffer_id; in scsi_write_buffer()
8976 scsi_ulto3b(offset, scsi_cmd->offset); in scsi_write_buffer()
8977 scsi_ulto3b(param_list_length, scsi_cmd->length); in scsi_write_buffer()
9000 scsi_cmd = (struct scsi_start_stop_unit *)&csio->cdb_io.cdb_bytes; in scsi_start_stop()
9002 scsi_cmd->opcode = START_STOP_UNIT; in scsi_start_stop()
9004 scsi_cmd->how |= SSS_START; in scsi_start_stop()
9009 scsi_cmd->how |= SSS_LOEJ; in scsi_start_stop()
9011 scsi_cmd->byte2 |= SSS_IMMED; in scsi_start_stop()
9036 scsi_cmd = (struct scsi_read_attribute *)&csio->cdb_io.cdb_bytes; in scsi_read_attribute()
9039 scsi_cmd->opcode = READ_ATTRIBUTE; in scsi_read_attribute()
9040 scsi_cmd->service_action = service_action; in scsi_read_attribute()
9041 scsi_ulto2b(element, scsi_cmd->element); in scsi_read_attribute()
9042 scsi_cmd->elem_type = elem_type; in scsi_read_attribute()
9043 scsi_cmd->logical_volume = logical_volume; in scsi_read_attribute()
9044 scsi_cmd->partition = partition; in scsi_read_attribute()
9045 scsi_ulto2b(first_attribute, scsi_cmd->first_attribute); in scsi_read_attribute()
9046 scsi_ulto4b(length, scsi_cmd->length); in scsi_read_attribute()
9048 scsi_cmd->cache |= SRA_CACHE; in scsi_read_attribute()
9071 scsi_cmd = (struct scsi_write_attribute *)&csio->cdb_io.cdb_bytes; in scsi_write_attribute()
9074 scsi_cmd->opcode = WRITE_ATTRIBUTE; in scsi_write_attribute()
9076 scsi_cmd->byte2 = SWA_WTC; in scsi_write_attribute()
9077 scsi_ulto3b(element, scsi_cmd->element); in scsi_write_attribute()
9078 scsi_cmd->logical_volume = logical_volume; in scsi_write_attribute()
9079 scsi_cmd->partition = partition; in scsi_write_attribute()
9080 scsi_ulto4b(length, scsi_cmd->length); in scsi_write_attribute()
9103 scsi_cmd = (struct scsi_per_res_in *)&csio->cdb_io.cdb_bytes; in scsi_persistent_reserve_in()
9106 scsi_cmd->opcode = PERSISTENT_RES_IN; in scsi_persistent_reserve_in()
9107 scsi_cmd->action = service_action; in scsi_persistent_reserve_in()
9108 scsi_ulto2b(dxfer_len, scsi_cmd->length); in scsi_persistent_reserve_in()
9131 scsi_cmd = (struct scsi_per_res_out *)&csio->cdb_io.cdb_bytes; in scsi_persistent_reserve_out()
9134 scsi_cmd->opcode = PERSISTENT_RES_OUT; in scsi_persistent_reserve_out()
9135 scsi_cmd->action = service_action; in scsi_persistent_reserve_out()
9136 scsi_cmd->scope_type = scope | res_type; in scsi_persistent_reserve_out()
9137 scsi_ulto4b(dxfer_len, scsi_cmd->length); in scsi_persistent_reserve_out()
9161 scsi_cmd = (struct scsi_security_protocol_in *)&csio->cdb_io.cdb_bytes; in scsi_security_protocol_in()
9164 scsi_cmd->opcode = SECURITY_PROTOCOL_IN; in scsi_security_protocol_in()
9166 scsi_cmd->security_protocol = security_protocol; in scsi_security_protocol_in()
9168 scsi_cmd->security_protocol_specific); in scsi_security_protocol_in()
9169 scsi_cmd->byte4 = byte4; in scsi_security_protocol_in()
9170 scsi_ulto4b(dxfer_len, scsi_cmd->length); in scsi_security_protocol_in()
9194 scsi_cmd = (struct scsi_security_protocol_out *)&csio->cdb_io.cdb_bytes; in scsi_security_protocol_out()
9197 scsi_cmd->opcode = SECURITY_PROTOCOL_OUT; in scsi_security_protocol_out()
9199 scsi_cmd->security_protocol = security_protocol; in scsi_security_protocol_out()
9201 scsi_cmd->security_protocol_specific); in scsi_security_protocol_out()
9202 scsi_cmd->byte4 = byte4; in scsi_security_protocol_out()
9203 scsi_ulto4b(dxfer_len, scsi_cmd->length); in scsi_security_protocol_out()
9227 &csio->cdb_io.cdb_bytes; in scsi_report_supported_opcodes()
9230 scsi_cmd->opcode = MAINTENANCE_IN; in scsi_report_supported_opcodes()
9231 scsi_cmd->service_action = REPORT_SUPPORTED_OPERATION_CODES; in scsi_report_supported_opcodes()
9232 scsi_cmd->options = options; in scsi_report_supported_opcodes()
9233 scsi_cmd->requested_opcode = req_opcode; in scsi_report_supported_opcodes()
9234 scsi_ulto2b(req_service_action, scsi_cmd->requested_service_action); in scsi_report_supported_opcodes()
9235 scsi_ulto4b(dxfer_len, scsi_cmd->length); in scsi_report_supported_opcodes()
9262 if (((SID_TYPE(inq) == entry->type) in scsi_inquiry_match()
9263 || (entry->type == T_ANY)) in scsi_inquiry_match()
9264 && (SID_IS_REMOVABLE(inq) ? entry->media_type & SIP_MEDIA_REMOVABLE in scsi_inquiry_match()
9265 : entry->media_type & SIP_MEDIA_FIXED) in scsi_inquiry_match()
9266 && (cam_strmatch(inq->vendor, entry->vendor, sizeof(inq->vendor)) == 0) in scsi_inquiry_match()
9267 && (cam_strmatch(inq->product, entry->product, in scsi_inquiry_match()
9268 sizeof(inq->product)) == 0) in scsi_inquiry_match()
9269 && (cam_strmatch(inq->revision, entry->revision, in scsi_inquiry_match()
9270 sizeof(inq->revision)) == 0)) { in scsi_inquiry_match()
9273 return (-1); in scsi_inquiry_match()
9289 if (((SID_TYPE(inq) == entry->type) in scsi_static_inquiry_match()
9290 || (entry->type == T_ANY)) in scsi_static_inquiry_match()
9291 && (SID_IS_REMOVABLE(inq) ? entry->media_type & SIP_MEDIA_REMOVABLE in scsi_static_inquiry_match()
9292 : entry->media_type & SIP_MEDIA_FIXED) in scsi_static_inquiry_match()
9293 && (cam_strmatch(inq->vendor, entry->vendor, sizeof(inq->vendor)) == 0) in scsi_static_inquiry_match()
9294 && (cam_strmatch(inq->product, entry->product, in scsi_static_inquiry_match()
9295 sizeof(inq->product)) == 0) in scsi_static_inquiry_match()
9296 && (cam_strmatch(inq->revision, entry->revision, in scsi_static_inquiry_match()
9297 sizeof(inq->revision)) == 0)) { in scsi_static_inquiry_match()
9300 return (-1); in scsi_static_inquiry_match()
9311 * \return 0 on a match, -1 otherwise.
9336 (lhs_end - __offsetof(struct scsi_vpd_id_descriptor, identifier)); in scsi_devid_match()
9338 (rhs_end - __offsetof(struct scsi_vpd_id_descriptor, identifier)); in scsi_devid_match()
9342 && (lhs_id->identifier + lhs_id->length) <= lhs_end) { in scsi_devid_match()
9347 && (rhs_id->identifier + rhs_id->length) <= rhs_end) { in scsi_devid_match()
9348 if ((rhs_id->id_type & in scsi_devid_match()
9350 (lhs_id->id_type & in scsi_devid_match()
9352 && rhs_id->length == lhs_id->length in scsi_devid_match()
9353 && memcmp(rhs_id->identifier, lhs_id->identifier, in scsi_devid_match()
9354 rhs_id->length) == 0) in scsi_devid_match()
9358 (rhs_id->identifier + rhs_id->length); in scsi_devid_match()
9361 (lhs_id->identifier + lhs_id->length); in scsi_devid_match()
9363 return (-1); in scsi_devid_match()
9374 device = periph->path->device; in scsi_vpd_supported_page()
9375 vpds = (struct scsi_vpd_supported_pages *)device->supported_vpds; in scsi_vpd_supported_page()
9378 num_pages = device->supported_vpds_len - in scsi_vpd_supported_page()
9381 if (vpds->page_list[i] == page_id) in scsi_vpd_supported_page()
9411 if (error != 0 || req->newptr == NULL) in sysctl_scsi_delay()