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.
- 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.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- 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
scsi/scsi_transport_iscsi.hscsi/libiscsi.hscsi/scsi_host.hlinux/uio_driver.hqedi_hsi.hlinux/qed/qed_if.hqedi_dbg.hlinux/qed/qed_iscsi_if.hlinux/qed/qed_ll2_if.hqedi_version.hqedi_nvm_iscsi_cfg.h
Detected Declarations
struct qedi_endpointstruct qedi_nvm_iscsi_imagestruct qedi_uio_ctrlstruct qedi_rx_bdstruct qedi_uio_devstruct skb_work_liststruct qedi_glbl_q_paramsstruct global_queuestruct qedi_fastpathstruct qedi_io_workstruct iscsi_cid_queuestruct qedi_portid_tblstruct qedi_itt_mapstruct qedi_io_logstruct qedi_bdq_bufstruct qedi_ctxstruct qedi_workstruct qedi_percpu_senum qedi_nvm_tgts
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
- Immediate include surface: `scsi/scsi_transport_iscsi.h`, `scsi/libiscsi.h`, `scsi/scsi_host.h`, `linux/uio_driver.h`, `qedi_hsi.h`, `linux/qed/qed_if.h`, `qedi_dbg.h`, `linux/qed/qed_iscsi_if.h`.
- Detected declarations: `struct qedi_endpoint`, `struct qedi_nvm_iscsi_image`, `struct qedi_uio_ctrl`, `struct qedi_rx_bd`, `struct qedi_uio_dev`, `struct skb_work_list`, `struct qedi_glbl_q_params`, `struct global_queue`, `struct qedi_fastpath`, `struct qedi_io_work`.
- Atlas domain: Driver Families / drivers/scsi.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
- 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.