drivers/infiniband/hw/irdma/virtchnl.h

Source file repositories/reference/linux-study-clean/drivers/infiniband/hw/irdma/virtchnl.h

File Facts

System
Linux kernel
Corpus path
drivers/infiniband/hw/irdma/virtchnl.h
Extension
.h
Size
4723 bytes
Lines
177
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.

Dependency Surface

Detected Declarations

Annotated Snippet

struct irdma_vchnl_req_hmc_info {
	u8 protocol_used;
	u8 disable_qos;
} __packed;

struct irdma_vchnl_resp_hmc_info {
	u16 hmc_func;
	u16 qs_handle[IRDMA_MAX_USER_PRIORITY];
} __packed;

struct irdma_vchnl_qv_info {
	u32 v_idx;
	u16 ceq_idx;
	u16 aeq_idx;
	u8 itr_idx;
};

struct irdma_vchnl_qvlist_info {
	u32 num_vectors;
	struct irdma_vchnl_qv_info qv_info[];
};

struct irdma_vchnl_req_vport_info {
	u16 vport_id;
	u32 qp1_id;
};

struct irdma_vchnl_resp_vport_info {
	u16 qs_handle[IRDMA_MAX_USER_PRIORITY];
};

struct irdma_vchnl_op_buf {
	u16 op_code;
	u16 op_ver;
	u16 buf_len;
	u16 rsvd;
	u64 op_ctx;
	u8 buf[];
} __packed;

struct irdma_vchnl_resp_buf {
	u64 op_ctx;
	u16 buf_len;
	s16 op_ret;
	u16 rsvd[2];
	u8 buf[];
} __packed;

struct irdma_vchnl_rdma_caps {
	u8 hw_rev;
	u16 cqp_timeout_s;
	u16 cqp_def_timeout_s;
	u16 max_hw_push_len;
} __packed;

struct irdma_vchnl_init_info {
	struct workqueue_struct *vchnl_wq;
	enum irdma_vers hw_rev;
	bool privileged;
	bool is_pf;
};

struct irdma_vchnl_reg_info {
	u32 reg_offset;
	u16 field_cnt;
	u16 reg_id; /* High bit of reg_id: bar or page relative */
};

struct irdma_vchnl_reg_field_info {
	u8 fld_shift;
	u8 fld_bits;
	u16 fld_id;
};

struct irdma_vchnl_req {
	struct irdma_vchnl_op_buf *vchnl_msg;
	void *parm;
	u32 vf_id;
	u16 parm_len;
	u16 resp_len;
};

struct irdma_vchnl_req_init_info {
	void *req_parm;
	void *resp_parm;
	u16 req_parm_len;
	u16 resp_parm_len;
	u16 op_code;
	u16 op_ver;
} __packed;

Annotation

Implementation Notes