linux/include/scsi/scsi_proto.h

/* SPDX-License-Identifier: GPL-2.0 */
/*
 * This header file contains public constants and structures used by
 * both the SCSI initiator and the SCSI target code.
 *
 * For documentation on the OPCODES, MESSAGES, and SENSE values,
 * please consult the SCSI standard.
 */

#ifndef _SCSI_PROTO_H_
#define _SCSI_PROTO_H_

#include <linux/build_bug.h>
#include <linux/types.h>

/*
 *      SCSI opcodes
 */

#define TEST_UNIT_READY
#define REZERO_UNIT
#define REQUEST_SENSE
#define FORMAT_UNIT
#define READ_BLOCK_LIMITS
#define REASSIGN_BLOCKS
#define INITIALIZE_ELEMENT_STATUS
#define READ_6
#define WRITE_6
#define SEEK_6
#define READ_REVERSE
#define WRITE_FILEMARKS
#define SPACE
#define INQUIRY
#define RECOVER_BUFFERED_DATA
#define MODE_SELECT
#define RESERVE
#define RELEASE
#define COPY
#define ERASE
#define MODE_SENSE
#define START_STOP
#define RECEIVE_DIAGNOSTIC
#define SEND_DIAGNOSTIC
#define ALLOW_MEDIUM_REMOVAL

#define READ_FORMAT_CAPACITIES
#define SET_WINDOW
#define READ_CAPACITY
#define READ_10
#define WRITE_10
#define SEEK_10
#define POSITION_TO_ELEMENT
#define WRITE_VERIFY
#define VERIFY
#define SEARCH_HIGH
#define SEARCH_EQUAL
#define SEARCH_LOW
#define SET_LIMITS
#define PRE_FETCH
#define READ_POSITION
#define SYNCHRONIZE_CACHE
#define LOCK_UNLOCK_CACHE
#define READ_DEFECT_DATA
#define MEDIUM_SCAN
#define COMPARE
#define COPY_VERIFY
#define WRITE_BUFFER
#define READ_BUFFER
#define UPDATE_BLOCK
#define READ_LONG
#define WRITE_LONG
#define CHANGE_DEFINITION
#define WRITE_SAME
#define UNMAP
#define READ_TOC
#define READ_HEADER
#define GET_EVENT_STATUS_NOTIFICATION
#define LOG_SELECT
#define LOG_SENSE
#define XDWRITEREAD_10
#define MODE_SELECT_10
#define RESERVE_10
#define RELEASE_10
#define MODE_SENSE_10
#define PERSISTENT_RESERVE_IN
#define PERSISTENT_RESERVE_OUT
#define VARIABLE_LENGTH_CMD
#define REPORT_LUNS
#define SECURITY_PROTOCOL_IN
#define MAINTENANCE_IN
#define MAINTENANCE_OUT
#define MOVE_MEDIUM
#define EXCHANGE_MEDIUM
#define READ_12
#define SERVICE_ACTION_OUT_12
#define WRITE_12
#define READ_MEDIA_SERIAL_NUMBER
#define SERVICE_ACTION_IN_12
#define WRITE_VERIFY_12
#define VERIFY_12
#define SEARCH_HIGH_12
#define SEARCH_EQUAL_12
#define SEARCH_LOW_12
#define SECURITY_PROTOCOL_OUT
#define READ_ELEMENT_STATUS
#define SEND_VOLUME_TAG
#define WRITE_LONG_2
#define EXTENDED_COPY
#define RECEIVE_COPY_RESULTS
#define ACCESS_CONTROL_IN
#define ACCESS_CONTROL_OUT
#define READ_16
#define COMPARE_AND_WRITE
#define WRITE_16
#define READ_ATTRIBUTE
#define WRITE_ATTRIBUTE
#define WRITE_VERIFY_16
#define VERIFY_16
#define SYNCHRONIZE_CACHE_16
#define WRITE_SAME_16
#define ZBC_OUT
#define ZBC_IN
#define WRITE_ATOMIC_16
#define SERVICE_ACTION_BIDIRECTIONAL
#define SERVICE_ACTION_IN_16
#define SERVICE_ACTION_OUT_16
/* values for service action in */
#define SAI_READ_CAPACITY_16
#define SAI_GET_LBA_STATUS
#define SAI_REPORT_REFERRALS
#define SAI_GET_STREAM_STATUS
/* values for maintenance in */
#define MI_REPORT_IDENTIFYING_INFORMATION
#define MI_REPORT_TARGET_PGS
#define MI_REPORT_ALIASES
#define MI_REPORT_SUPPORTED_OPERATION_CODES
#define MI_REPORT_SUPPORTED_TASK_MANAGEMENT_FUNCTIONS
#define MI_REPORT_PRIORITY
#define MI_REPORT_TIMESTAMP
#define MI_MANAGEMENT_PROTOCOL_IN
/* value for MI_REPORT_TARGET_PGS ext header */
#define MI_EXT_HDR_PARAM_FMT
/* values for maintenance out */
#define MO_SET_IDENTIFYING_INFORMATION
#define MO_SET_TARGET_PGS
#define MO_CHANGE_ALIASES
#define MO_SET_PRIORITY
#define MO_SET_TIMESTAMP
#define MO_MANAGEMENT_PROTOCOL_OUT
/* values for ZBC_IN */
#define ZI_REPORT_ZONES
/* values for ZBC_OUT */
#define ZO_CLOSE_ZONE
#define ZO_FINISH_ZONE
#define ZO_OPEN_ZONE
#define ZO_RESET_WRITE_POINTER
/* values for PR in service action */
#define READ_KEYS
#define READ_RESERVATION
#define REPORT_CAPABILITES
#define READ_FULL_STATUS
/* values for variable length command */
#define XDREAD_32
#define XDWRITE_32
#define XPWRITE_32
#define XDWRITEREAD_32
#define READ_32
#define VERIFY_32
#define WRITE_32
#define WRITE_VERIFY_32
#define WRITE_SAME_32
#define ATA_32

/* Values for T10/04-262r7 */
#define ATA_16
#define ATA_12

/* Vendor specific CDBs start here */
#define VENDOR_SPECIFIC_CDB

/*
 *	SCSI command lengths
 */

#define SCSI_MAX_VARLEN_CDB_SIZE

/* defined in T10 SCSI Primary Commands-2 (SPC2) */
struct scsi_varlen_cdb_hdr {};

/*
 *  SCSI Architecture Model (SAM) Status codes. Taken from SAM-3 draft
 *  T10/1561-D Revision 4 Draft dated 7th November 2002.
 */
enum sam_status {};

#define STATUS_MASK

/*
 *  SENSE KEYS
 */
#define NO_SENSE
#define RECOVERED_ERROR
#define NOT_READY
#define MEDIUM_ERROR
#define HARDWARE_ERROR
#define ILLEGAL_REQUEST
#define UNIT_ATTENTION
#define DATA_PROTECT
#define BLANK_CHECK
#define VENDOR_SPECIFIC
#define COPY_ABORTED
#define ABORTED_COMMAND
#define VOLUME_OVERFLOW
#define MISCOMPARE
#define COMPLETED

/*
 *  DEVICE TYPES
 *  Please keep them in 0x%02x format for $MODALIAS to work
 */

#define TYPE_DISK
#define TYPE_TAPE
#define TYPE_PRINTER
#define TYPE_PROCESSOR
#define TYPE_WORM
#define TYPE_ROM
#define TYPE_SCANNER
#define TYPE_MOD
#define TYPE_MEDIUM_CHANGER
#define TYPE_COMM
#define TYPE_RAID
#define TYPE_ENCLOSURE
#define TYPE_RBC
#define TYPE_OSD
#define TYPE_ZBC
#define TYPE_WLUN
#define TYPE_NO_LUN

/* SCSI protocols; these are taken from SPC-3 section 7.5 */
enum scsi_protocol {};

/*
 * ScsiLun: 8 byte LUN.
 */
struct scsi_lun {};

/* SBC-5 IO advice hints group descriptor */
struct scsi_io_group_descriptor {};

static_assert();

/* SCSI stream status descriptor */
struct scsi_stream_status {};

static_assert();

/* GET STREAM STATUS parameter data */
struct scsi_stream_status_header {};

static_assert();

/* SPC asymmetric access states */
#define SCSI_ACCESS_STATE_OPTIMAL
#define SCSI_ACCESS_STATE_ACTIVE
#define SCSI_ACCESS_STATE_STANDBY
#define SCSI_ACCESS_STATE_UNAVAILABLE
#define SCSI_ACCESS_STATE_LBA
#define SCSI_ACCESS_STATE_OFFLINE
#define SCSI_ACCESS_STATE_TRANSITIONING

/* Values for REPORT TARGET GROUP STATES */
#define SCSI_ACCESS_STATE_MASK
#define SCSI_ACCESS_STATE_PREFERRED

/* Reporting options for REPORT ZONES */
enum zbc_zone_reporting_options {};

#define ZBC_REPORT_ZONE_PARTIAL

/* Zone types of REPORT ZONES zone descriptors */
enum zbc_zone_type {};

/* Zone conditions of REPORT ZONES zone descriptors */
enum zbc_zone_cond {};

enum zbc_zone_alignment_method {};

/* Version descriptor values for INQUIRY */
enum scsi_version_descriptor {};

enum scsi_support_opcode {};

#define SCSI_CONTROL_MASK
#define SCSI_GROUP_NUMBER_MASK

#endif /* _SCSI_PROTO_H_ */