drivers/scsi/lpfc/lpfc_disc.h

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

File Facts

System
Linux kernel
Corpus path
drivers/scsi/lpfc/lpfc_disc.h
Extension
.h
Size
14101 bytes
Lines
309
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_work_evt {
	struct list_head      evt_listp;
	void                 *evt_arg1;
	void                 *evt_arg2;
	enum lpfc_work_type   evt;
};

struct lpfc_scsi_check_condition_event;
struct lpfc_scsi_varqueuedepth_event;
struct lpfc_scsi_event_header;
struct lpfc_fabric_event_header;
struct lpfc_fcprdchkerr_event;

/* structure used for sending events from fast path */
struct lpfc_fast_path_event {
	struct lpfc_work_evt work_evt;
	struct lpfc_vport     *vport;
	union {
		struct lpfc_scsi_check_condition_event check_cond_evt;
		struct lpfc_scsi_varqueuedepth_event queue_depth_evt;
		struct lpfc_scsi_event_header scsi_evt;
		struct lpfc_fabric_event_header fabric_evt;
		struct lpfc_fcprdchkerr_event read_check_error;
	} un;
};

#define LPFC_SLI4_MAX_XRI	1024	/* Used to make the ndlp's xri_bitmap */
#define XRI_BITMAP_ULONGS (LPFC_SLI4_MAX_XRI / BITS_PER_LONG)
struct lpfc_node_rrqs {
	unsigned long xri_bitmap[XRI_BITMAP_ULONGS];
};

struct lpfc_enc_info {
	u8 status; /* encryption status for session */
	u8 level; /* CNSA encryption level */
};

enum lpfc_fc4_xpt_flags {
	NLP_XPT_REGD		= 0x1,
	SCSI_XPT_REGD		= 0x2,
	NVME_XPT_REGD		= 0x4,
	NVME_XPT_UNREG_WAIT	= 0x8,
	NLP_XPT_HAS_HH		= 0x10
};

enum lpfc_nlp_save_flags { /* mask bits */
	/* devloss occurred during recovery */
	NLP_IN_RECOV_POST_DEV_LOSS,
	/* wait for outstanding LOGO to cmpl */
	NLP_WAIT_FOR_LOGO,
	/* wait for outstanding DA_ID to finish */
	NLP_WAIT_FOR_DA_ID
};

struct lpfc_nodelist {
	struct list_head nlp_listp;
	struct serv_parm fc_sparam;		/* buffer for service params */
	struct lpfc_name nlp_portname;
	struct lpfc_name nlp_nodename;

	spinlock_t	lock;			/* Node management lock */

	unsigned long    nlp_flag;		/* entry flags */
	uint32_t         nlp_DID;		/* FC D_ID of entry */
	uint32_t         nlp_last_elscmd;	/* Last ELS cmd sent */
	uint16_t         nlp_type;
#define NLP_FC_NODE        0x1			/* entry is an FC node */
#define NLP_FABRIC         0x4			/* entry rep a Fabric entity */
#define NLP_FCP_TARGET     0x8			/* entry is an FCP target */
#define NLP_FCP_INITIATOR  0x10			/* entry is an FCP Initiator */
#define NLP_NVME_TARGET    0x20			/* entry is a NVME Target */
#define NLP_NVME_INITIATOR 0x40			/* entry is a NVME Initiator */
#define NLP_NVME_DISCOVERY 0x80                 /* entry has NVME disc srvc */

	uint16_t	nlp_fc4_type;		/* FC types node supports. */
						/* Assigned from GID_FF, only
						 * FCP (0x8) and NVME (0x28)
						 * supported.
						 */
#define NLP_FC4_NONE	0x0
#define NLP_FC4_FCP	0x1			/* FC4 Type FCP (value x8)) */
#define NLP_FC4_NVME	0x2			/* FC4 TYPE NVME (value x28) */

	uint16_t        nlp_rpi;
	uint16_t        nlp_state;		/* state transition indicator */
	uint16_t        nlp_prev_state;		/* state transition indicator */
	uint16_t        nlp_xri;		/* output exchange id for RPI */
	uint16_t        nlp_sid;		/* scsi id */
#define NLP_NO_SID		0xffff
	uint16_t	nlp_maxframe;		/* Max RCV frame size */

Annotation

Implementation Notes