drivers/scsi/qedi/qedi.h

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

File Facts

System
Linux kernel
Corpus path
drivers/scsi/qedi/qedi.h
Extension
.h
Size
9417 bytes
Lines
394
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 qedi_nvm_iscsi_image {
	struct nvm_iscsi_cfg iscsi_cfg;
	u32 crc;
};

struct qedi_uio_ctrl {
	/* meta data */
	u32 uio_hsi_version;

	/* user writes */
	u32 host_tx_prod;
	u32 host_rx_cons;
	u32 host_rx_bd_cons;
	u32 host_tx_pkt_len;
	u32 host_rx_cons_cnt;

	/* driver writes */
	u32 hw_tx_cons;
	u32 hw_rx_prod;
	u32 hw_rx_bd_prod;
	u32 hw_rx_prod_cnt;

	/* other */
	u8 mac_addr[6];
	u8 reserve[2];
};

struct qedi_rx_bd {
	u32 rx_pkt_index;
	u32 rx_pkt_len;
	u16 vlan_id;
};

#define QEDI_RX_DESC_CNT	(QEDI_PAGE_SIZE / sizeof(struct qedi_rx_bd))
#define QEDI_MAX_RX_DESC_CNT	(QEDI_RX_DESC_CNT - 1)
#define QEDI_NUM_RX_BD		(QEDI_RX_DESC_CNT * 1)
#define QEDI_MAX_RX_BD		(QEDI_NUM_RX_BD - 1)

#define QEDI_NEXT_RX_IDX(x)	((((x) & (QEDI_MAX_RX_DESC_CNT)) ==	\
				  (QEDI_MAX_RX_DESC_CNT - 1)) ?		\
				 (x) + 2 : (x) + 1)

struct qedi_uio_dev {
	struct uio_info		qedi_uinfo;
	u32			uio_dev;
	struct list_head	list;

	u32			ll2_ring_size;
	void			*ll2_ring;

	u32			ll2_buf_size;
	void			*ll2_buf;

	void			*rx_pkt;
	void			*tx_pkt;

	struct qedi_ctx		*qedi;
	struct pci_dev		*pdev;
	void			*uctrl;
};

/* List to maintain the skb pointers */
struct skb_work_list {
	struct list_head list;
	struct sk_buff *skb;
	u16 vlan_id;
};

/* Queue sizes in number of elements */
#define QEDI_SQ_SIZE		MAX_OUTSTANDING_TASKS_PER_CON
#define QEDI_CQ_SIZE		2048
#define QEDI_CMDQ_SIZE		QEDI_MAX_ISCSI_TASK
#define QEDI_PROTO_CQ_PROD_IDX	0

struct qedi_glbl_q_params {
	u64 hw_p_cq;	/* Completion queue PBL */
	u64 hw_p_rq;	/* Request queue PBL */
	u64 hw_p_cmdq;	/* Command queue PBL */
};

struct global_queue {
	union iscsi_cqe *cq;
	dma_addr_t cq_dma;
	u32 cq_mem_size;
	u32 cq_cons_idx; /* Completion queue consumer index */

	void *cq_pbl;
	dma_addr_t cq_pbl_dma;
	u32 cq_pbl_size;

Annotation

Implementation Notes