drivers/infiniband/hw/bnxt_re/qplib_fp.h
Source file repositories/reference/linux-study-clean/drivers/infiniband/hw/bnxt_re/qplib_fp.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/infiniband/hw/bnxt_re/qplib_fp.h- Extension
.h- Size
- 20012 bytes
- Lines
- 701
- 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.
- 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
rdma/bnxt_re-abi.h
Detected Declarations
struct sq_ud_ext_hdrstruct sq_raw_ext_hdrstruct sq_rdma_ext_hdrstruct sq_atomic_ext_hdrstruct sq_fr_pmr_ext_hdrstruct sq_bind_ext_hdrstruct rq_ext_hdrstruct bnxt_qplib_srqstruct bnxt_qplib_sgestruct bnxt_qplib_swqstruct bnxt_qplib_swqestruct bnxt_qplib_qstruct bnxt_qplib_qpstruct bnxt_qplib_cq_coal_paramstruct bnxt_qplib_cqestruct bnxt_qplib_cqstruct bnxt_qplib_nq_dbstruct bnxt_qplib_nqstruct bnxt_qplib_nq_workfunction __bnxt_qplib_get_availfunction bnxt_qplib_queue_fullfunction bnxt_qplib_swq_mod_startfunction bnxt_qplib_get_stridefunction bnxt_qplib_get_depthfunction bnxt_qplib_set_sq_sizefunction bnxt_qplib_set_sq_max_slotfunction bnxt_qplib_set_rq_max_slotfunction __xlate_qfdfunction bnxt_qplib_calc_ilsizefunction bnxt_re_update_msn_tblfunction __is_var_wqefunction __is_err_cqe_for_var_wqe
Annotated Snippet
struct sq_ud_ext_hdr {
__le32 dst_qp;
__le32 avid;
__le64 rsvd;
};
struct sq_raw_ext_hdr {
__le32 cfa_meta;
__le32 rsvd0;
__le64 rsvd1;
};
struct sq_rdma_ext_hdr {
__le64 remote_va;
__le32 remote_key;
__le32 rsvd;
};
struct sq_atomic_ext_hdr {
__le64 swap_data;
__le64 cmp_data;
};
struct sq_fr_pmr_ext_hdr {
__le64 pblptr;
__le64 va;
};
struct sq_bind_ext_hdr {
__le64 va;
__le32 length_lo;
__le32 length_hi;
};
struct rq_ext_hdr {
__le64 rsvd1;
__le64 rsvd2;
};
/* Helper structures end */
struct bnxt_qplib_srq {
struct bnxt_qplib_pd *pd;
struct bnxt_qplib_dpi *dpi;
struct bnxt_qplib_db_info dbinfo;
u64 srq_handle;
u32 id;
u16 wqe_size;
u32 max_wqe;
u32 max_sge;
u32 threshold;
bool arm_req;
struct bnxt_qplib_cq *cq;
struct bnxt_qplib_hwq hwq;
struct bnxt_qplib_swq *swq;
int start_idx;
int last_idx;
struct bnxt_qplib_sg_info sg_info;
u16 eventq_hw_ring_id;
spinlock_t lock; /* protect SRQE link list */
u8 toggle;
};
struct bnxt_qplib_sge {
u64 addr;
u32 lkey;
u32 size;
};
struct bnxt_qplib_swq {
u64 wr_id;
int next_idx;
u8 type;
u8 flags;
u32 start_psn;
u32 next_psn;
u32 slot_idx;
u8 slots;
struct sq_psn_search *psn_search;
struct sq_psn_search_ext *psn_ext;
};
struct bnxt_qplib_swqe {
/* General */
#define BNXT_QPLIB_FENCE_WRID 0x46454E43 /* "FENC" */
u64 wr_id;
u8 reqs_type;
u8 type;
#define BNXT_QPLIB_SWQE_TYPE_SEND 0
#define BNXT_QPLIB_SWQE_TYPE_SEND_WITH_IMM 1
Annotation
- Immediate include surface: `rdma/bnxt_re-abi.h`.
- Detected declarations: `struct sq_ud_ext_hdr`, `struct sq_raw_ext_hdr`, `struct sq_rdma_ext_hdr`, `struct sq_atomic_ext_hdr`, `struct sq_fr_pmr_ext_hdr`, `struct sq_bind_ext_hdr`, `struct rq_ext_hdr`, `struct bnxt_qplib_srq`, `struct bnxt_qplib_sge`, `struct bnxt_qplib_swq`.
- 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.
- 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.