This looks a little busted:
> struct mlx4_ib_create_qp {
> __u64 buf_addr;
> __u64 db_addr;
> + __u64 rq_size;
> + __u64 sq_size;
> + __u8 rcv_wqe_shift;
> + __u8 log_wqe_bb;
> };
the structure ends up not aligned to a multiple of 8 bytes, so it ends
up having a size of 36 bytes on 32-bit setups and 40 bytes on 64-bit
setups, which might mess up 32-bit userspace on 64-bit kernels.
Also I don't understand why you made rq_size and sq_size 64 bits
anyway? It seems they could never be more than 16 bits, although to
be safe perhaps 32 bits is best. So I'll fix this up to look like
this (with names that seem more self-documenting to me):
struct mlx4_ib_create_qp {
__u64 buf_addr;
__u64 db_addr;
__u32 rq_wqe_count;
__u32 rq_wqe_shift;
__u32 sq_wqebb_count;
__u32 sq_wqebb_shift;
};
am I missing some hidden reason to make those fields 64 bits?
_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general
To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general