drivers/infiniband/hw/qedr/qedr.h
Source file repositories/reference/linux-study-clean/drivers/infiniband/hw/qedr/qedr.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/infiniband/hw/qedr/qedr.h- Extension
.h- Size
- 13582 bytes
- Lines
- 623
- 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
linux/pci.hlinux/xarray.hrdma/ib_addr.hlinux/qed/qed_if.hlinux/qed/qed_chain.hlinux/qed/qed_rdma_if.hlinux/qed/qede_rdma.hlinux/qed/roce_common.hlinux/completion.hqedr_hsi_rdma.h
Detected Declarations
struct qedr_devstruct qedr_cnqstruct qedr_device_attrstruct qedr_devstruct qedr_pblstruct qedr_ucontextstruct qedr_pbl_infostruct qedr_userqstruct qedr_cqstruct qedr_pdstruct qedr_xrcdstruct qedr_qp_hwq_infostruct qedr_srq_hwq_infostruct qedr_srqstruct qedr_qpstruct qedr_ahstruct mr_infostruct qedr_mrstruct qedr_user_mmap_entrystruct qedr_iw_listenerstruct qedr_iw_epenum qedr_cq_typeenum qedr_qp_err_bitmapenum qedr_qp_create_typeenum qedr_iwarp_cm_flagsenum qedr_mr_typefunction qedr_inc_sw_consfunction qedr_inc_sw_prodfunction qedr_get_dmacfunction qedr_qp_has_srqfunction qedr_qp_has_sqfunction qedr_qp_has_rqfunction get_qedr_mmap_entry
Annotated Snippet
struct qedr_cnq {
struct qedr_dev *dev;
struct qed_chain pbl;
struct qed_sb_info *sb;
char name[32];
u64 n_comp;
__le16 *hw_cons_ptr;
u8 index;
};
#define QEDR_MAX_SGID 128
struct qedr_device_attr {
u32 vendor_id;
u32 vendor_part_id;
u32 hw_ver;
u64 fw_ver;
u64 node_guid;
u64 sys_image_guid;
u8 max_cnq;
u8 max_sge;
u16 max_inline;
u32 max_sqe;
u32 max_rqe;
u8 max_qp_resp_rd_atomic_resc;
u8 max_qp_req_rd_atomic_resc;
u64 max_dev_resp_rd_atomic_resc;
u32 max_cq;
u32 max_qp;
u32 max_mr;
u64 max_mr_size;
u32 max_cqe;
u32 max_mw;
u32 max_mr_mw_fmr_pbl;
u64 max_mr_mw_fmr_size;
u32 max_pd;
u32 max_ah;
u8 max_pkey;
u32 max_srq;
u32 max_srq_wr;
u8 max_srq_sge;
u8 max_stats_queues;
u32 dev_caps;
u64 page_size_caps;
u8 dev_ack_delay;
u32 reserved_lkey;
u32 bad_pkey_counter;
struct qed_rdma_events events;
};
#define QEDR_ENET_STATE_BIT (0)
struct qedr_dev {
struct ib_device ibdev;
struct qed_dev *cdev;
struct pci_dev *pdev;
struct net_device *ndev;
enum ib_atomic_cap atomic_cap;
void *rdma_ctx;
struct qedr_device_attr attr;
const struct qed_rdma_ops *ops;
struct qed_int_info int_info;
struct qed_sb_info *sb_array;
struct qedr_cnq *cnq_array;
int num_cnq;
int sb_start;
void __iomem *db_addr;
u64 db_phys_addr;
u32 db_size;
u16 dpi;
union ib_gid *sgid_tbl;
/* Lock for sgid table */
spinlock_t sgid_lock;
u64 guid;
u32 dp_module;
u8 dp_level;
u8 num_hwfns;
#define QEDR_IS_CMT(dev) ((dev)->num_hwfns > 1)
u8 affin_hwfn_idx;
u8 gsi_ll2_handle;
Annotation
- Immediate include surface: `linux/pci.h`, `linux/xarray.h`, `rdma/ib_addr.h`, `linux/qed/qed_if.h`, `linux/qed/qed_chain.h`, `linux/qed/qed_rdma_if.h`, `linux/qed/qede_rdma.h`, `linux/qed/roce_common.h`.
- Detected declarations: `struct qedr_dev`, `struct qedr_cnq`, `struct qedr_device_attr`, `struct qedr_dev`, `struct qedr_pbl`, `struct qedr_ucontext`, `struct qedr_pbl_info`, `struct qedr_userq`, `struct qedr_cq`, `struct qedr_pd`.
- 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.