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.
- 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.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
uapi/scsi/fc/fc_els.h
Detected Declarations
struct lpfc_sli_ct_requeststruct gidstruct gid_ffstruct rftstruct rnnstruct rsnnstruct da_idstruct rspnstruct rspnistruct gffstruct gff_accstruct gftstruct gft_accstruct rffstruct lpfc_namestruct cspstruct class_parmsstruct aux_parmstruct serv_parmstruct fc_vft_headerstruct fc_app_headerstruct ls_rjtstruct RLSstruct RLS_RSPstruct RRQstruct RTV_RSPstruct fc_lcb_request_framestruct fc_lcb_res_framestruct fc_rdp_port_name_infostruct fc_link_statusstruct fc_rdp_port_name_descstruct fc_rdp_fec_infostruct fc_fec_rdp_descstruct fc_rdp_link_error_status_payload_infostruct fc_rdp_link_error_status_descstruct fc_rdp_port_speedstruct fc_rdp_port_speed_infostruct fc_rdp_port_speed_descstruct fc_rdp_nport_descstruct fc_rdp_link_service_infostruct fc_rdp_link_service_descstruct fc_rdp_sfp_infostruct fc_rdp_sfp_descstruct fc_rdp_bbc_infostruct fc_rdp_bbc_descstruct fc_rdp_oed_infostruct fc_rdp_oed_sfp_descstruct fc_rdp_opd_sfp_info
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
- Immediate include surface: `uapi/scsi/fc/fc_els.h`.
- Detected declarations: `struct lpfc_sli_ct_request`, `struct gid`, `struct gid_ff`, `struct rft`, `struct rnn`, `struct rsnn`, `struct da_id`, `struct rspn`, `struct rspni`, `struct gff`.
- Atlas domain: Driver Families / drivers/scsi.
- Implementation status: source implementation candidate.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.