drivers/scsi/elx/libefc/efclib.h

Source file repositories/reference/linux-study-clean/drivers/scsi/elx/libefc/efclib.h

File Facts

System
Linux kernel
Corpus path
drivers/scsi/elx/libefc/efclib.h
Extension
.h
Size
16892 bytes
Lines
624
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 efc_sm_ctx {
	void (*current_state)(struct efc_sm_ctx *ctx,
			      enum efc_sm_event evt, void *arg);

	const char	*description;
	void		*app;
};

/* Description of discovered Fabric Domain */
struct efc_domain_record {
	u32		index;
	u32		priority;
	u8		address[6];
	u8		wwn[8];
	union {
		u8	vlan[512];
		u8	loop[128];
	} map;
	u32		speed;
	u32		fc_id;
	bool		is_loop;
	bool		is_nport;
};

/* Domain events */
enum efc_hw_domain_event {
	EFC_HW_DOMAIN_ALLOC_OK,
	EFC_HW_DOMAIN_ALLOC_FAIL,
	EFC_HW_DOMAIN_ATTACH_OK,
	EFC_HW_DOMAIN_ATTACH_FAIL,
	EFC_HW_DOMAIN_FREE_OK,
	EFC_HW_DOMAIN_FREE_FAIL,
	EFC_HW_DOMAIN_LOST,
	EFC_HW_DOMAIN_FOUND,
	EFC_HW_DOMAIN_CHANGED,
};

/**
 * Fibre Channel port object
 *
 * @list_entry:		nport list entry
 * @ref:		reference count, each node takes a reference
 * @release:		function to free nport object
 * @efc:		pointer back to efc
 * @instance_index:	unique instance index value
 * @display_name:	port display name
 * @is_vport:		Is NPIV port
 * @free_req_pending:	pending request to free resources
 * @attached:		mark attached if reg VPI succeeds
 * @p2p_winner:		TRUE if we're the point-to-point winner
 * @domain:		pointer back to domain
 * @wwpn:		port wwpn
 * @wwnn:		port wwnn
 * @tgt_data:		target backend private port data
 * @ini_data:		initiator backend private port data
 * @indicator:		VPI
 * @fc_id:		port FC address
 * @dma:		memory for Service Parameters
 * @wwnn_str:		wwpn string
 * @sli_wwpn:		SLI provided wwpn
 * @sli_wwnn:		SLI provided wwnn
 * @sm:			nport state machine context
 * @lookup:		fc_id to node lookup object
 * @enable_ini:		SCSI initiator enabled for this port
 * @enable_tgt:		SCSI target enabled for this port
 * @enable_rscn:	port will be expecting RSCN
 * @shutting_down:	nport in process of shutting down
 * @p2p_port_id:	our port id for point-to-point
 * @topology:		topology: fabric/p2p/unknown
 * @service_params:	login parameters
 * @p2p_remote_port_id:	remote node's port id for point-to-point
 */

struct efc_nport {
	struct list_head	list_entry;
	struct kref		ref;
	void			(*release)(struct kref *arg);
	struct efc		*efc;
	u32			instance_index;
	char			display_name[EFC_NAME_LENGTH];
	bool			is_vport;
	bool			free_req_pending;
	bool			attached;
	bool			attaching;
	bool			p2p_winner;
	struct efc_domain	*domain;
	u64			wwpn;
	u64			wwnn;
	void			*tgt_data;
	void			*ini_data;

Annotation

Implementation Notes