drivers/infiniband/hw/bng_re/bng_roce_hsi.h
Source file repositories/reference/linux-study-clean/drivers/infiniband/hw/bng_re/bng_roce_hsi.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/infiniband/hw/bng_re/bng_roce_hsi.h- Extension
.h- Size
- 288138 bytes
- Lines
- 6451
- 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/bnge/hsi.h
Detected Declarations
struct tx_doorbellstruct rx_doorbellstruct cmpl_doorbellstruct status_doorbellstruct cmdq_initstruct cmdq_basestruct creq_basestruct roce_stats_ext_ctxstruct cmdq_query_versionstruct creq_query_version_respstruct cmdq_initialize_fwstruct creq_initialize_fw_respstruct cmdq_deinitialize_fwstruct creq_deinitialize_fw_respstruct cmdq_create_qpstruct creq_create_qp_respstruct cmdq_destroy_qpstruct creq_destroy_qp_respstruct cmdq_modify_qpstruct creq_modify_qp_respstruct cmdq_query_qpstruct creq_query_qp_respstruct creq_query_qp_resp_sbstruct cmdq_query_qp_extendstruct creq_query_qp_extend_respstruct creq_query_qp_extend_resp_sbstruct creq_query_qp_extend_resp_sb_tlvstruct cmdq_create_srqstruct creq_create_srq_respstruct cmdq_destroy_srqstruct creq_destroy_srq_respstruct cmdq_query_srqstruct creq_query_srq_respstruct creq_query_srq_resp_sbstruct cmdq_create_cqstruct creq_create_cq_respstruct cmdq_destroy_cqstruct creq_destroy_cq_respstruct cmdq_resize_cqstruct creq_resize_cq_respstruct cmdq_allocate_mrwstruct creq_allocate_mrw_respstruct cmdq_deallocate_keystruct creq_deallocate_key_respstruct cmdq_register_mrstruct creq_register_mr_respstruct cmdq_deregister_mrstruct creq_deregister_mr_resp
Annotated Snippet
struct tx_doorbell {
__le32 key_idx;
#define TX_DOORBELL_IDX_MASK 0xffffffUL
#define TX_DOORBELL_IDX_SFT 0
#define TX_DOORBELL_KEY_MASK 0xf0000000UL
#define TX_DOORBELL_KEY_SFT 28
#define TX_DOORBELL_KEY_TX (0x0UL << 28)
#define TX_DOORBELL_KEY_LAST TX_DOORBELL_KEY_TX
};
/* rx_doorbell (size:32b/4B) */
struct rx_doorbell {
__le32 key_idx;
#define RX_DOORBELL_IDX_MASK 0xffffffUL
#define RX_DOORBELL_IDX_SFT 0
#define RX_DOORBELL_KEY_MASK 0xf0000000UL
#define RX_DOORBELL_KEY_SFT 28
#define RX_DOORBELL_KEY_RX (0x1UL << 28)
#define RX_DOORBELL_KEY_LAST RX_DOORBELL_KEY_RX
};
/* cmpl_doorbell (size:32b/4B) */
struct cmpl_doorbell {
__le32 key_mask_valid_idx;
#define CMPL_DOORBELL_IDX_MASK 0xffffffUL
#define CMPL_DOORBELL_IDX_SFT 0
#define CMPL_DOORBELL_IDX_VALID 0x4000000UL
#define CMPL_DOORBELL_MASK 0x8000000UL
#define CMPL_DOORBELL_KEY_MASK 0xf0000000UL
#define CMPL_DOORBELL_KEY_SFT 28
#define CMPL_DOORBELL_KEY_CMPL (0x2UL << 28)
#define CMPL_DOORBELL_KEY_LAST CMPL_DOORBELL_KEY_CMPL
};
/* status_doorbell (size:32b/4B) */
struct status_doorbell {
__le32 key_idx;
#define STATUS_DOORBELL_IDX_MASK 0xffffffUL
#define STATUS_DOORBELL_IDX_SFT 0
#define STATUS_DOORBELL_KEY_MASK 0xf0000000UL
#define STATUS_DOORBELL_KEY_SFT 28
#define STATUS_DOORBELL_KEY_STAT (0x3UL << 28)
#define STATUS_DOORBELL_KEY_LAST STATUS_DOORBELL_KEY_STAT
};
/* cmdq_init (size:128b/16B) */
struct cmdq_init {
__le64 cmdq_pbl;
__le16 cmdq_size_cmdq_lvl;
#define CMDQ_INIT_CMDQ_LVL_MASK 0x3UL
#define CMDQ_INIT_CMDQ_LVL_SFT 0
#define CMDQ_INIT_CMDQ_SIZE_MASK 0xfffcUL
#define CMDQ_INIT_CMDQ_SIZE_SFT 2
__le16 creq_ring_id;
__le32 prod_idx;
};
/* cmdq_base (size:128b/16B) */
struct cmdq_base {
u8 opcode;
#define CMDQ_BASE_OPCODE_CREATE_QP 0x1UL
#define CMDQ_BASE_OPCODE_DESTROY_QP 0x2UL
#define CMDQ_BASE_OPCODE_MODIFY_QP 0x3UL
#define CMDQ_BASE_OPCODE_QUERY_QP 0x4UL
#define CMDQ_BASE_OPCODE_CREATE_SRQ 0x5UL
#define CMDQ_BASE_OPCODE_DESTROY_SRQ 0x6UL
#define CMDQ_BASE_OPCODE_QUERY_SRQ 0x8UL
#define CMDQ_BASE_OPCODE_CREATE_CQ 0x9UL
#define CMDQ_BASE_OPCODE_DESTROY_CQ 0xaUL
#define CMDQ_BASE_OPCODE_RESIZE_CQ 0xcUL
#define CMDQ_BASE_OPCODE_ALLOCATE_MRW 0xdUL
#define CMDQ_BASE_OPCODE_DEALLOCATE_KEY 0xeUL
#define CMDQ_BASE_OPCODE_REGISTER_MR 0xfUL
#define CMDQ_BASE_OPCODE_DEREGISTER_MR 0x10UL
#define CMDQ_BASE_OPCODE_ADD_GID 0x11UL
#define CMDQ_BASE_OPCODE_DELETE_GID 0x12UL
#define CMDQ_BASE_OPCODE_MODIFY_GID 0x17UL
#define CMDQ_BASE_OPCODE_QUERY_GID 0x18UL
#define CMDQ_BASE_OPCODE_CREATE_QP1 0x13UL
#define CMDQ_BASE_OPCODE_DESTROY_QP1 0x14UL
#define CMDQ_BASE_OPCODE_CREATE_AH 0x15UL
#define CMDQ_BASE_OPCODE_DESTROY_AH 0x16UL
#define CMDQ_BASE_OPCODE_INITIALIZE_FW 0x80UL
#define CMDQ_BASE_OPCODE_DEINITIALIZE_FW 0x81UL
#define CMDQ_BASE_OPCODE_STOP_FUNC 0x82UL
#define CMDQ_BASE_OPCODE_QUERY_FUNC 0x83UL
#define CMDQ_BASE_OPCODE_SET_FUNC_RESOURCES 0x84UL
#define CMDQ_BASE_OPCODE_READ_CONTEXT 0x85UL
#define CMDQ_BASE_OPCODE_VF_BACKCHANNEL_REQUEST 0x86UL
#define CMDQ_BASE_OPCODE_READ_VF_MEMORY 0x87UL
Annotation
- Immediate include surface: `linux/bnge/hsi.h`.
- Detected declarations: `struct tx_doorbell`, `struct rx_doorbell`, `struct cmpl_doorbell`, `struct status_doorbell`, `struct cmdq_init`, `struct cmdq_base`, `struct creq_base`, `struct roce_stats_ext_ctx`, `struct cmdq_query_version`, `struct creq_query_version_resp`.
- 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.