drivers/scsi/bfa/bfa.h

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

File Facts

System
Linux kernel
Corpus path
drivers/scsi/bfa/bfa.h
Extension
.h
Size
15709 bytes
Lines
457
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 bfa_iocfc_regs_s {
	void __iomem	*intr_status;
	void __iomem	*intr_mask;
	void __iomem	*cpe_q_pi[BFI_IOC_MAX_CQS];
	void __iomem	*cpe_q_ci[BFI_IOC_MAX_CQS];
	void __iomem	*cpe_q_ctrl[BFI_IOC_MAX_CQS];
	void __iomem	*rme_q_ci[BFI_IOC_MAX_CQS];
	void __iomem	*rme_q_pi[BFI_IOC_MAX_CQS];
	void __iomem	*rme_q_ctrl[BFI_IOC_MAX_CQS];
};

/*
 * MSIX vector handlers
 */
#define BFA_MSIX_MAX_VECTORS	22
typedef void (*bfa_msix_handler_t)(struct bfa_s *bfa, int vec);
struct bfa_msix_s {
	int	nvecs;
	bfa_msix_handler_t handler[BFA_MSIX_MAX_VECTORS];
};

/*
 * Chip specific interfaces
 */
struct bfa_hwif_s {
	void (*hw_reginit)(struct bfa_s *bfa);
	void (*hw_reqq_ack)(struct bfa_s *bfa, int reqq);
	void (*hw_rspq_ack)(struct bfa_s *bfa, int rspq, u32 ci);
	void (*hw_msix_init)(struct bfa_s *bfa, int nvecs);
	void (*hw_msix_ctrl_install)(struct bfa_s *bfa);
	void (*hw_msix_queue_install)(struct bfa_s *bfa);
	void (*hw_msix_uninstall)(struct bfa_s *bfa);
	void (*hw_isr_mode_set)(struct bfa_s *bfa, bfa_boolean_t msix);
	void (*hw_msix_getvecs)(struct bfa_s *bfa, u32 *vecmap,
				u32 *nvecs, u32 *maxvec);
	void (*hw_msix_get_rme_range) (struct bfa_s *bfa, u32 *start,
				       u32 *end);
	int	cpe_vec_q0;
	int	rme_vec_q0;
};
typedef void (*bfa_cb_iocfc_t) (void *cbarg, enum bfa_status status);

struct bfa_faa_cbfn_s {
	bfa_cb_iocfc_t	faa_cbfn;
	void		*faa_cbarg;
};

#define BFA_FAA_ENABLED		1
#define BFA_FAA_DISABLED	2

/*
 *	FAA attributes
 */
struct bfa_faa_attr_s {
	wwn_t	faa;
	u8	faa_state;
	u8	pwwn_source;
	u8	rsvd[6];
};

struct bfa_faa_args_s {
	struct bfa_faa_attr_s	*faa_attr;
	struct bfa_faa_cbfn_s	faa_cb;
	u8			faa_state;
	bfa_boolean_t		busy;
};

/*
 * IOCFC state machine definitions/declarations
 */
enum iocfc_event {
	IOCFC_E_INIT		= 1,	/* IOCFC init request		*/
	IOCFC_E_START		= 2,	/* IOCFC mod start request	*/
	IOCFC_E_STOP		= 3,	/* IOCFC stop request		*/
	IOCFC_E_ENABLE		= 4,	/* IOCFC enable request		*/
	IOCFC_E_DISABLE		= 5,	/* IOCFC disable request	*/
	IOCFC_E_IOC_ENABLED	= 6,	/* IOC enabled message		*/
	IOCFC_E_IOC_DISABLED	= 7,	/* IOC disabled message		*/
	IOCFC_E_IOC_FAILED	= 8,	/* failure notice by IOC sm	*/
	IOCFC_E_DCONF_DONE	= 9,	/* dconf read/write done	*/
	IOCFC_E_CFG_DONE	= 10,	/* IOCFC config complete	*/
};

struct bfa_iocfc_s;
typedef void (*bfa_iocfs_fsm_t)(struct bfa_iocfc_s *, enum iocfc_event);

struct bfa_iocfc_s {
	bfa_iocfs_fsm_t		fsm;
	struct bfa_s		*bfa;
	struct bfa_iocfc_cfg_s	cfg;

Annotation

Implementation Notes