drivers/scsi/lpfc/lpfc_hw.h

Source file repositories/reference/linux-study-clean/drivers/scsi/lpfc/lpfc_hw.h

File Facts

System
Linux kernel
Corpus path
drivers/scsi/lpfc/lpfc_hw.h
Extension
.h
Size
134422 bytes
Lines
4488
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 lpfc_sli_ct_request {
	/* Structure is in Big Endian format */
	union CtRevisionId RevisionId;
	uint8_t FsType;
	uint8_t FsSubType;
	uint8_t Options;
	uint8_t Rsrvd1;
	union CtCommandResponse CommandResponse;
	uint8_t Rsrvd2;
	uint8_t ReasonCode;
	uint8_t Explanation;
	uint8_t VendorUnique;
#define LPFC_CT_PREAMBLE	20	/* Size of CTReq + 4 up to here */

	union {
		__be32 PortID;
		struct gid {
			uint8_t PortType;	/* for GID_PT requests */
#define GID_PT_N_PORT	1
			uint8_t DomainScope;
			uint8_t AreaScope;
			uint8_t Fc4Type;	/* for GID_FT requests */
		} gid;
		struct gid_ff {
			uint8_t Flags;
			uint8_t DomainScope;
			uint8_t AreaScope;
			uint8_t rsvd1;
			uint8_t rsvd2;
			uint8_t rsvd3;
			uint8_t Fc4FBits;
			uint8_t Fc4Type;
		} gid_ff;
		struct rft {
			__be32 port_id; /* For RFT_ID requests */

			__be32 fcp_reg;	/* rsvd 31:9, fcp_reg 8, rsvd 7:0 */
			__be32 nvme_reg; /* rsvd 31:9, nvme_reg 8, rsvd 7:0 */
			__be32 word2;
			__be32 app_serv_reg; /* rsvd 31:1, app_serv_reg 0 */
			__be32 word[4];
		} rft;
		struct rnn {
			uint32_t PortId;	/* For RNN_ID requests */
			uint8_t wwnn[8];
		} rnn;
		struct rsnn {	/* For RSNN_ID requests */
			uint8_t wwnn[8];
			uint8_t len;
			uint8_t symbname[255];
		} rsnn;
		struct da_id { /* For DA_ID requests */
			uint32_t port_id;
		} da_id;
		struct rspn {	/* For RSPN_ID requests */
			uint32_t PortId;
			uint8_t len;
			uint8_t symbname[255];
		} rspn;
		struct rspni {	/* For RSPNI_PNI requests */
			__be64 pni;
			u8 len;
			u8 symbname[255];
		} rspni;
		struct gff {
			uint32_t PortId;
		} gff;
		struct gff_acc {
			uint8_t fbits[128];
		} gff_acc;
		struct gft {
			uint32_t PortId;
		} gft;
		struct gft_acc {
			uint32_t fc4_types[8];
		} gft_acc;
#define FCP_TYPE_FEATURE_OFFSET 7
		struct rff {
			uint32_t PortId;
			uint8_t reserved[2];
			uint8_t fbits;
			uint8_t type_code;     /* type=8 for FCP */
		} rff;
	} un;
};

#define LPFC_MAX_CT_SIZE	(60 * 4096)

#define  SLI_CT_REVISION        1
#define  GID_REQUEST_SZ   (offsetof(struct lpfc_sli_ct_request, un) + \

Annotation

Implementation Notes