diff options
author | Dotan Barak <dotanb@mellanox.co.il> | 2006-02-23 20:41:50 +0000 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2006-11-09 11:35:59 -0800 |
commit | d002539b56a342d119d866eab9abc774372296ed (patch) | |
tree | 0a0891285d4b681e6fb346cdfc100933f33802ab | |
parent | fe9340c0b49fa5b16d14d6474f09df9f5e8d8c6e (diff) | |
download | libibverbs-d002539b56a342d119d866eab9abc774372296ed.tar.gz |
Add support for kernel ABI version 6
Add support for kernel ABI 6: take SRQ capacity from kernel response
to create SRQ.
Signed-off-by: Dotan Barak <dotanb@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | include/infiniband/kern-abi.h | 9 | ||||
-rw-r--r-- | src/cmd.c | 12 |
3 files changed, 25 insertions, 1 deletions
@@ -1,3 +1,8 @@ +2006-02-23 Dotan Barak <dotanb@mellanox.co.il> + + * src/cmd.c (ibv_cmd_create_srq): Add support for kernel ABI + version 6 (take SRQ capacity from kernel response to create SRQ). + 2006-02-16 Roland Dreier <rdreier@cisco.com> * Release version 1.0-rc7. diff --git a/include/infiniband/kern-abi.h b/include/infiniband/kern-abi.h index 900cfbe..85389f4 100644 --- a/include/infiniband/kern-abi.h +++ b/include/infiniband/kern-abi.h @@ -48,7 +48,7 @@ * The minimum and maximum kernel ABI that we can handle. */ #define IB_USER_VERBS_MIN_ABI_VERSION 1 -#define IB_USER_VERBS_MAX_ABI_VERSION 5 +#define IB_USER_VERBS_MAX_ABI_VERSION 6 enum { IB_USER_VERBS_CMD_GET_CONTEXT, @@ -708,6 +708,9 @@ struct ibv_create_srq { struct ibv_create_srq_resp { __u32 srq_handle; + __u32 max_wr; + __u32 max_sge; + __u32 reserved; }; struct ibv_modify_srq { @@ -871,4 +874,8 @@ struct ibv_create_qp_resp_v4 { __u32 max_inline_data; }; +struct ibv_create_srq_resp_v5 { + __u32 srq_handle; +}; + #endif /* KERN_ABI_H */ @@ -435,6 +435,18 @@ int ibv_cmd_create_srq(struct ibv_pd *pd, srq->handle = resp->srq_handle; + if (abi_ver > 5) { + attr->attr.max_wr = resp->max_wr; + attr->attr.max_sge = resp->max_sge; + } else { + struct ibv_create_srq_resp_v5 *resp_v5 = + (struct ibv_create_srq_resp_v5 *) resp; + + memmove((void *) resp + sizeof *resp, + (void *) resp_v5 + sizeof *resp_v5, + resp_size - sizeof *resp); + } + return 0; } |