drivers/scsi/ibmvscsi/ibmvfc.h

Source file repositories/reference/linux-study-clean/drivers/scsi/ibmvscsi/ibmvfc.h

File Facts

System
Linux kernel
Corpus path
drivers/scsi/ibmvscsi/ibmvfc.h
Extension
.h
Size
23675 bytes
Lines
957
Domain
Driver Families
Bucket
drivers/scsi
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct ibmvfc_mad_common {
	__be32 version;
	__be32 reserved;
	__be32 opcode;
	__be16 status;
	__be16 length;
	__be64 tag;
} __packed __aligned(8);

struct ibmvfc_npiv_login_mad {
	struct ibmvfc_mad_common common;
	struct srp_direct_buf buffer;
} __packed __aligned(8);

struct ibmvfc_npiv_logout_mad {
	struct ibmvfc_mad_common common;
} __packed __aligned(8);

#define IBMVFC_MAX_NAME 256

struct ibmvfc_npiv_login {
	__be32 ostype;
#define IBMVFC_OS_LINUX	0x02
	__be32 pad;
	__be64 max_dma_len;
	__be32 max_payload;
	__be32 max_response;
	__be32 partition_num;
	__be32 vfc_frame_version;
	__be16 fcp_version;
	__be16 flags;
#define IBMVFC_CLIENT_MIGRATED	0x01
#define IBMVFC_FLUSH_ON_HALT		0x02
	__be32 max_cmds;
	__be64 capabilities;
#define IBMVFC_CAN_MIGRATE		0x01
#define IBMVFC_CAN_USE_CHANNELS		0x02
#define IBMVFC_CAN_HANDLE_FPIN		0x04
#define IBMVFC_CAN_USE_MAD_VERSION	0x08
#define IBMVFC_CAN_SEND_VF_WWPN		0x10
	__be64 node_name;
	struct srp_direct_buf async;
	u8 partition_name[IBMVFC_MAX_NAME];
	u8 device_name[IBMVFC_MAX_NAME];
	u8 drc_name[IBMVFC_MAX_NAME];
	__be64 reserved2[2];
} __packed __aligned(8);

struct ibmvfc_common_svc_parms {
	__be16 fcph_version;
	__be16 b2b_credit;
	__be16 features;
	__be16 bb_rcv_sz; /* upper nibble is BB_SC_N */
	__be32 ratov;
	__be32 edtov;
} __packed __aligned(4);

struct ibmvfc_service_parms {
	struct ibmvfc_common_svc_parms common;
	u8 port_name[8];
	u8 node_name[8];
	__be32 class1_parms[4];
	__be32 class2_parms[4];
	__be32 class3_parms[4];
	__be32 obsolete[4];
	__be32 vendor_version[4];
	__be32 services_avail[2];
	__be32 ext_len;
	__be32 reserved[30];
	__be32 clk_sync_qos[2];
	__be32 reserved2;
} __packed __aligned(4);

struct ibmvfc_npiv_login_resp {
	__be32 version;
	__be16 status;
	__be16 error;
	__be32 flags;
#define IBMVFC_NATIVE_FC		0x01
	__be32 reserved;
	__be64 capabilities;
#define IBMVFC_CAN_FLUSH_ON_HALT	0x08
#define IBMVFC_CAN_SUPPRESS_ABTS	0x10
#define IBMVFC_MAD_VERSION_CAP		0x20
#define IBMVFC_HANDLE_VF_WWPN		0x40
#define IBMVFC_CAN_SUPPORT_CHANNELS	0x80
	__be32 max_cmds;
	__be32 scsi_id_sz;
	__be64 max_dma_len;
	__be64 scsi_id;

Annotation

Implementation Notes