> +struct ocrdma_alloc_ucontext_resp { > + u32 dev_id; > + u32 wqe_size; > + u32 max_inline_data; > + u32 dpp_wqe_size; > + u64 ah_tbl_page; > + u32 ah_tbl_len; > + u32 rsvd; > + u8 fw_ver[32]; > + u32 rqe_size; > + u64 rsvd1; > +} __packed;
Is there some reason to pack the structures in this file, rather than just defining things to align on a 64-bit boundary? The structure above actually ends up sized to a 4-byte boundary, rather than 8-byte, with rsvd1 field misaligned. > +/* user kernel communication data structures. */ > +struct ocrdma_alloc_pd_ureq { > + u64 rsvd1; > +} __packed; > + > +struct ocrdma_alloc_pd_uresp { > + u32 id; > + u32 dpp_enabled; > + u32 dpp_page_addr_hi; > + u32 dpp_page_addr_lo; > + u64 rsvd1; > +} __packed; > + > +struct ocrdma_create_cq_ureq { > + u32 dpp_cq; > + u32 rsvd; > +} __packed; > + > +#define MAX_CQ_PAGES 8 > +struct ocrdma_create_cq_uresp { > + u32 cq_id; > + u32 page_size; > + u32 num_pages; > + u32 max_hw_cqe; > + u64 page_addr[MAX_CQ_PAGES]; > + u64 db_page_addr; > + u32 db_page_size; > + u32 phase_change; > + u64 rsvd1; > + u64 rsvd2; > +} __packed; Why the extra reserved space? > + > +#define MAX_QP_PAGES 8 > +#define MAX_UD_AV_PAGES 8 > + > +struct ocrdma_create_qp_ureq { > + u8 enable_dpp_cq; > + u8 rsvd; > + u16 dpp_cq_id; > + u32 rsvd1; > +}; > + > +struct ocrdma_create_qp_uresp { > + u16 qp_id; > + u16 sq_dbid; > + u16 rq_dbid; > + u16 resv0; > + u32 sq_page_size; > + u32 rq_page_size; > + u32 num_sq_pages; > + u32 num_rq_pages; > + u64 sq_page_addr[MAX_QP_PAGES]; > + u64 rq_page_addr[MAX_QP_PAGES]; > + u64 db_page_addr; > + u32 db_page_size; > + u32 dpp_credit; > + u32 dpp_offset; > + u32 rsvd1; > + u32 num_wqe_allocated; > + u32 num_rqe_allocated; > + u32 free_wqe_delta; > + u32 free_rqe_delta; > + u32 db_sq_offset; > + u32 db_rq_offset; > + u32 db_shift; > + u64 rsvd2; > + u64 rsvd3; > +} __packed; Why the extra reserved space? rsvd2 & 3 are also misaligned. > + > +struct ocrdma_create_srq_uresp { > + u16 rq_dbid; > + u16 resv0; > + u32 resv1; > + > + u32 rq_page_size; > + u32 num_rq_pages; > + > + u64 rq_page_addr[MAX_QP_PAGES]; > + u64 db_page_addr; > + > + u32 db_page_size; > + u32 num_rqe_allocated; > + u32 db_rq_offset; > + u32 db_shift; > + > + u32 free_rqe_delta; > + u32 rsvd2; > + u64 rsvd3; > +} __packed; Why the extra reserved space? -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html