drivers/scsi/qla2xxx/qla_fw.h
Source file repositories/reference/linux-study-clean/drivers/scsi/qla2xxx/qla_fw.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/scsi/qla2xxx/qla_fw.h- Extension
.h- Size
- 57490 bytes
- Lines
- 2288
- 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
linux/nvme.hlinux/nvme-fc.hqla_dsd.h
Detected Declarations
struct buffer_credit_24xxstruct port_database_24xxstruct get_name_list_extendedstruct get_name_liststruct vp_database_24xxstruct nvram_24xxstruct init_cb_24xxstruct cmd_bidirstruct cmd_type_6struct cmd_type_7struct cmd_type_crc_2struct sts_entry_24xxstruct mrk_entry_24xxstruct ct_entry_24xxstruct purex_entry_24xxstruct els_entry_24xxstruct els_sts_entry_24xxstruct mbx_entry_24xxstruct logio_entry_24xxstruct tsk_mgmt_entrystruct abort_entry_24xxstruct abts_entry_24xxstruct device_reg_24xxstruct mid_conf_entry_24xxstruct mid_init_cb_24xxstruct mid_db_entry_24xxstruct vp_ctrl_entry_24xxstruct vp_config_entry_24xxstruct vp_rpt_id_entry_24xxstruct _f0struct _f1struct _f2struct vf_evfp_entry_24xxstruct qla_fdt_layoutstruct qla_flt_locationstruct qla_flt_regionstruct qla_flt_headerstruct qla_npiv_headerstruct qla_npiv_entrystruct verify_chip_entry_84xxstruct verify_chip_rsp_84xxstruct access_chip_84xxstruct access_chip_rsp_84xxstruct nvram_81xxstruct init_cb_81xxstruct mid_init_cb_81xxstruct ex_init_cb_81xxstruct qla_fcp_prio_entry
Annotated Snippet
struct buffer_credit_24xx {
u32 parameter[28];
};
#define PORT_DATABASE_24XX_SIZE 64
struct port_database_24xx {
uint16_t flags;
#define PDF_TASK_RETRY_ID BIT_14
#define PDF_FC_TAPE BIT_7
#define PDF_ACK0_CAPABLE BIT_6
#define PDF_FCP2_CONF BIT_5
#define PDF_CLASS_2 BIT_4
#define PDF_HARD_ADDR BIT_1
/*
* for NVMe, the login_state field has been
* split into nibbles.
* The lower nibble is for FCP.
* The upper nibble is for NVMe.
*/
uint8_t current_login_state;
uint8_t last_login_state;
#define PDS_PLOGI_PENDING 0x03
#define PDS_PLOGI_COMPLETE 0x04
#define PDS_PRLI_PENDING 0x05
#define PDS_PRLI_COMPLETE 0x06
#define PDS_PORT_UNAVAILABLE 0x07
#define PDS_PRLO_PENDING 0x09
#define PDS_LOGO_PENDING 0x11
#define PDS_PRLI2_PENDING 0x12
uint8_t hard_address[3];
uint8_t reserved_1;
uint8_t port_id[3];
uint8_t sequence_id;
uint16_t port_timer;
uint16_t nport_handle; /* N_PORT handle. */
uint16_t receive_data_size;
uint16_t reserved_2;
uint8_t prli_svc_param_word_0[2]; /* Big endian */
/* Bits 15-0 of word 0 */
uint8_t prli_svc_param_word_3[2]; /* Big endian */
/* Bits 15-0 of word 3 */
uint8_t port_name[WWN_SIZE];
uint8_t node_name[WWN_SIZE];
uint8_t reserved_3[2];
uint16_t nvme_first_burst_size;
uint16_t prli_nvme_svc_param_word_0; /* Bits 15-0 of word 0 */
uint16_t prli_nvme_svc_param_word_3; /* Bits 15-0 of word 3 */
uint8_t secure_login;
uint8_t reserved_4[14];
};
/*
* MB 75h returns a list of DB entries similar to port_database_24xx(64B).
* However, in this case it returns 1st 40 bytes.
*/
struct get_name_list_extended {
__le16 flags;
u8 current_login_state;
u8 last_login_state;
u8 hard_address[3];
u8 reserved_1;
u8 port_id[3];
u8 sequence_id;
__le16 port_timer;
__le16 nport_handle; /* N_PORT handle. */
__le16 receive_data_size;
__le16 reserved_2;
/* PRLI SVC Param are Big endian */
u8 prli_svc_param_word_0[2]; /* Bits 15-0 of word 0 */
u8 prli_svc_param_word_3[2]; /* Bits 15-0 of word 3 */
u8 port_name[WWN_SIZE];
u8 node_name[WWN_SIZE];
};
/* MB 75h: This is the short version of the database */
struct get_name_list {
u8 port_node_name[WWN_SIZE]; /* B7 most sig, B0 least sig */
__le16 nport_handle;
u8 reserved;
};
Annotation
- Immediate include surface: `linux/nvme.h`, `linux/nvme-fc.h`, `qla_dsd.h`.
- Detected declarations: `struct buffer_credit_24xx`, `struct port_database_24xx`, `struct get_name_list_extended`, `struct get_name_list`, `struct vp_database_24xx`, `struct nvram_24xx`, `struct init_cb_24xx`, `struct cmd_bidir`, `struct cmd_type_6`, `struct cmd_type_7`.
- 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.