drivers/infiniband/hw/ionic/ionic_ibdev.h
Source file repositories/reference/linux-study-clean/drivers/infiniband/hw/ionic/ionic_ibdev.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/infiniband/hw/ionic/ionic_ibdev.h- Extension
.h- Size
- 12429 bytes
- Lines
- 518
- Domain
- Driver Families
- Bucket
- drivers/infiniband
- 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
rdma/ib_verbs.hrdma/ib_pack.hrdma/iter.hrdma/uverbs_ioctl.hrdma/ionic-abi.hionic_api.hionic_regs.hionic_fw.hionic_queue.hionic_res.hionic_lif_cfg.h
Detected Declarations
struct ionic_aqstruct ionic_cqstruct ionic_eqstruct ionic_vcqstruct ionic_mmap_entrystruct ionic_ibdevstruct ionic_eqstruct ionic_admin_wrstruct ionic_admin_wr_qstruct ionic_aqstruct ionic_ctxstruct ionic_tbl_bufstruct ionic_pdstruct ionic_cqstruct ionic_vcqstruct ionic_sq_metastruct ionic_rq_metastruct ionic_qpstruct ionic_ahstruct ionic_mrstruct ionic_counter_statsstruct ionic_counterenum ionic_admin_stateenum ionic_admin_flagsenum ionic_mmap_flagfunction ionic_ctx_dbidfunction ionic_obj_dbidfunction ionic_ibop_is_localfunction ionic_qp_completefunction ionic_cq_complete
Annotated Snippet
struct ionic_mmap_entry {
struct rdma_user_mmap_entry rdma_entry;
unsigned long size;
unsigned long pfn;
u8 mmap_flags;
};
struct ionic_ibdev {
struct ib_device ibdev;
struct ionic_lif_cfg lif_cfg;
struct xarray qp_tbl;
struct xarray cq_tbl;
struct ionic_resid_bits inuse_dbid;
struct ionic_resid_bits inuse_pdid;
struct ionic_resid_bits inuse_ahid;
struct ionic_resid_bits inuse_mrid;
struct ionic_resid_bits inuse_qpid;
struct ionic_resid_bits inuse_cqid;
u8 half_cqid_udma_shift;
u8 half_qpid_udma_shift;
u8 next_qpid_udma_idx;
u8 next_mrkey;
struct work_struct reset_work;
bool reset_posted;
u32 reset_cnt;
struct delayed_work admin_dwork;
struct ionic_aq **aq_vec;
atomic_t admin_state;
struct ionic_eq **eq_vec;
struct ionic_v1_stat *hw_stats;
void *hw_stats_buf;
struct rdma_stat_desc *hw_stats_hdrs;
struct ionic_counter_stats *counter_stats;
int hw_stats_count;
};
struct ionic_eq {
struct ionic_ibdev *dev;
u32 eqid;
u32 intr;
struct ionic_queue q;
int armed;
bool enable;
struct work_struct work;
int irq;
char name[32];
};
struct ionic_admin_wr {
struct completion work;
struct list_head aq_ent;
struct ionic_v1_admin_wqe wqe;
struct ionic_v1_cqe cqe;
struct ionic_aq *aq;
int status;
};
struct ionic_admin_wr_q {
struct ionic_admin_wr *wr;
int wqe_strides;
};
struct ionic_aq {
struct ionic_ibdev *dev;
struct ionic_vcq *vcq;
struct work_struct work;
atomic_t admin_state;
unsigned long stamp;
bool armed;
u32 aqid;
u32 cqid;
spinlock_t lock; /* for posting */
struct ionic_queue q;
Annotation
- Immediate include surface: `rdma/ib_verbs.h`, `rdma/ib_pack.h`, `rdma/iter.h`, `rdma/uverbs_ioctl.h`, `rdma/ionic-abi.h`, `ionic_api.h`, `ionic_regs.h`, `ionic_fw.h`.
- Detected declarations: `struct ionic_aq`, `struct ionic_cq`, `struct ionic_eq`, `struct ionic_vcq`, `struct ionic_mmap_entry`, `struct ionic_ibdev`, `struct ionic_eq`, `struct ionic_admin_wr`, `struct ionic_admin_wr_q`, `struct ionic_aq`.
- Atlas domain: Driver Families / drivers/infiniband.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
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.