include/scsi/viosrp.h

Source file repositories/reference/linux-study-clean/include/scsi/viosrp.h

File Facts

System
Linux kernel
Corpus path
include/scsi/viosrp.h
Extension
.h
Size
5616 bytes
Lines
218
Domain
Repository Root And Misc
Bucket
include
Inferred role
Repository Root And Misc: implementation source
Status
source implementation candidate

Why This File Exists

Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.

Dependency Surface

Detected Declarations

Annotated Snippet

struct viosrp_crq {
	union {
		__be64 high;			/* High 64 bits */
		struct {
			u8 valid;		/* used by RPA */
			u8 format;		/* SCSI vs out-of-band */
			u8 reserved;
			u8 status;		/* non-scsi failure? (e.g. DMA failure) */
			__be16 timeout;		/* in seconds */
			__be16 IU_length;	/* in bytes */
		};
	};
	__be64 IU_data_ptr;	/* the TCE for transferring data */
};

/* MADs are Management requests above and beyond the IUs defined in the SRP
 * standard.
 */
enum viosrp_mad_types {
	VIOSRP_EMPTY_IU_TYPE = 0x01,
	VIOSRP_ERROR_LOG_TYPE = 0x02,
	VIOSRP_ADAPTER_INFO_TYPE = 0x03,
	VIOSRP_CAPABILITIES_TYPE = 0x05,
	VIOSRP_ENABLE_FAST_FAIL = 0x08,
};

enum viosrp_mad_status {
	VIOSRP_MAD_SUCCESS = 0x00,
	VIOSRP_MAD_NOT_SUPPORTED = 0xF1,
	VIOSRP_MAD_FAILED = 0xF7,
};

enum viosrp_capability_type {
	MIGRATION_CAPABILITIES = 0x01,
	RESERVATION_CAPABILITIES = 0x02,
};

enum viosrp_capability_support {
	SERVER_DOES_NOT_SUPPORTS_CAP = 0x0,
	SERVER_SUPPORTS_CAP = 0x01,
	SERVER_CAP_DATA = 0x02,
};

enum viosrp_reserve_type {
	CLIENT_RESERVE_SCSI_2 = 0x01,
};

enum viosrp_capability_flag {
	CLIENT_MIGRATED = 0x01,
	CLIENT_RECONNECT = 0x02,
	CAP_LIST_SUPPORTED = 0x04,
	CAP_LIST_DATA = 0x08,
};

/*
 * Common MAD header
 */
struct mad_common {
	__be32 type;
	__be16 status;
	__be16 length;
	__be64 tag;
};

/*
 * All SRP (and MAD) requests normally flow from the
 * client to the server.  There is no way for the server to send
 * an asynchronous message back to the client.  The Empty IU is used
 * to hang out a meaningless request to the server so that it can respond
 * asynchrouously with something like a SCSI AER
 */
struct viosrp_empty_iu {
	struct mad_common common;
	__be64 buffer;
	__be32 port;
};

struct viosrp_error_log {
	struct mad_common common;
	__be64 buffer;
};

struct viosrp_adapter_info {
	struct mad_common common;
	__be64 buffer;
};

struct viosrp_fast_fail {
	struct mad_common common;
};

Annotation

Implementation Notes