drivers/scsi/qla2xxx/qla_edif_bsg.h

Source file repositories/reference/linux-study-clean/drivers/scsi/qla2xxx/qla_edif_bsg.h

File Facts

System
Linux kernel
Corpus path
drivers/scsi/qla2xxx/qla_edif_bsg.h
Extension
.h
Size
6411 bytes
Lines
272
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 extra_auth_els {
	enum auth_els_sub_cmd sub_cmd;
	uint32_t        extra_rx_xchg_address;
	uint8_t         extra_control_flags;
#define BSG_CTL_FLAG_INIT       0
#define BSG_CTL_FLAG_LS_ACC     1
#define BSG_CTL_FLAG_LS_RJT     2
#define BSG_CTL_FLAG_TRM        3
	uint8_t		version;
	uint8_t		pad[2];
	uint8_t		reserved[VND_CMD_APP_RESERVED_SIZE];
} __packed;

struct qla_bsg_auth_els_request {
	struct fc_bsg_request r;
	struct extra_auth_els e;
};

struct qla_bsg_auth_els_reply {
	struct fc_bsg_reply r;
	uint32_t rx_xchg_address;
	uint8_t version;
	uint8_t pad[VND_CMD_PAD_SIZE];
	uint8_t reserved[VND_CMD_APP_RESERVED_SIZE];
};

struct app_id {
	int		app_vid;
	uint8_t		version;
	uint8_t		pad[VND_CMD_PAD_SIZE];
	uint8_t		reserved[VND_CMD_APP_RESERVED_SIZE];
} __packed;

struct app_start_reply {
	uint32_t	host_support_edif;
	uint32_t	edif_enode_active;
	uint32_t	edif_edb_active;
	uint8_t		version;
	uint8_t		pad[VND_CMD_PAD_SIZE];
	uint8_t		reserved[VND_CMD_APP_RESERVED_SIZE];
} __packed;

struct app_start {
	struct app_id	app_info;
	uint8_t         app_start_flags;
	uint8_t		version;
	uint8_t		pad[2];
	uint8_t		reserved[VND_CMD_APP_RESERVED_SIZE];
} __packed;

struct app_stop {
	struct app_id	app_info;
	uint8_t		version;
	uint8_t		pad[VND_CMD_PAD_SIZE];
	uint8_t		reserved[VND_CMD_APP_RESERVED_SIZE];
} __packed;

struct app_plogi_reply {
	uint32_t	prli_status;
	uint8_t		version;
	uint8_t		pad[VND_CMD_PAD_SIZE];
	uint8_t		reserved[VND_CMD_APP_RESERVED_SIZE];
} __packed;

struct app_pinfo_req {
	struct app_id app_info;
	uint8_t	 num_ports;
	struct {
#ifdef __BIG_ENDIAN
		uint8_t domain;
		uint8_t area;
		uint8_t al_pa;
#elif defined(__LITTLE_ENDIAN)
		uint8_t al_pa;
		uint8_t area;
		uint8_t domain;
#else
#error "__BIG_ENDIAN or __LITTLE_ENDIAN must be defined!"
#endif
		uint8_t rsvd_1;
	} remote_pid;
	uint8_t		version;
	uint8_t		pad[VND_CMD_PAD_SIZE];
	uint8_t		reserved[VND_CMD_APP_RESERVED_SIZE];
} __packed;

struct app_pinfo {
	port_id_t remote_pid;
	uint8_t	remote_wwpn[WWN_SIZE];
	uint8_t	remote_type;

Annotation

Implementation Notes