Message ID | 20190215171107.6464-18-shiraz.saleem@intel.com (mailing list archive) |
---|---|
State | RFC |
Headers | show |
Series | Add unified Intel Ethernet RDMA driver (irdma) | expand |
On Fri, Feb 15, 2019 at 11:11:04AM -0600, Shiraz Saleem wrote: > From: Mustafa Ismail <mustafa.ismail@intel.com> > > Add ABI definitions for irdma. > > Signed-off-by: Mustafa Ismail <mustafa.ismail@intel.com> > Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com> > include/uapi/rdma/irdma-abi.h | 140 ++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 140 insertions(+) > create mode 100644 include/uapi/rdma/irdma-abi.h > > diff --git a/include/uapi/rdma/irdma-abi.h b/include/uapi/rdma/irdma-abi.h > new file mode 100644 > index 0000000..5b0e2d5 > +++ b/include/uapi/rdma/irdma-abi.h > @@ -0,0 +1,140 @@ > +/* > + * Copyright (c) 2006 - 2019 Intel Corporation. All rights reserved. > + * Copyright (c) 2005 Topspin Communications. All rights reserved. > + * Copyright (c) 2005 Cisco Systems. All rights reserved. > + * Copyright (c) 2005 Open Grid Computing, Inc. All rights reserved. > + * > + * This software is available to you under a choice of one of two > + * licenses. You may choose to be licensed under the terms of the GNU > + * General Public License (GPL) Version 2, available from the file > + * COPYING in the main directory of this source tree, or the > + * OpenIB.org BSD license below: > + * > + * Redistribution and use in source and binary forms, with or > + * without modification, are permitted provided that the following > + * conditions are met: > + * > + * - Redistributions of source code must retain the above > + * copyright notice, this list of conditions and the following > + * disclaimer. > + * > + * - Redistributions in binary form must reproduce the above > + * copyright notice, this list of conditions and the following > + * disclaimer in the documentation and/or other materials > + * provided with the distribution. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, > + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND > + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS > + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN > + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN > + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE > + * SOFTWARE. > + * > + */ > + > +#ifndef IRDMA_ABI_H > +#define IRDMA_ABI_H > + > +#include <linux/types.h> > + > +#define IRDMA_ABI_VER 6 Starting with high numbers? > +enum irdma_memreg_type { > + IW_MEMREG_TYPE_MEM = 0, > + IW_MEMREG_TYPE_QP = 1, > + IW_MEMREG_TYPE_CQ = 2, > + IW_MEMREG_TYPE_RSVD = 3, > + IW_MEMREG_TYPE_MW = 4, > +}; > + > +struct irdma_alloc_ucontext_req { > + __u32 rsvd32; > + __u8 userspace_ver; > + __u8 rsvd8[3]; > +}; > + > +struct irdma_alloc_ucontext_resp { > + __u8 kernel_ver; > + __u8 rsvd[7]; > + struct irdma_hw_attrs hw_attrs; This won't even compile like this - don't forget you have to send the rdma-core PR along with the kernel patches. You should already be running the travis checks yourself. rdma-core should detect malformed user space headers.. > +struct irdma_mem_reg_req { > + __u16 reg_type; /* Memory, QP or CQ */ > + __u16 cq_pages; > + __u16 rq_pages; > + __u16 sq_pages; > +}; New structs should be aligned to 8 bytes. > +struct i40iw_create_qp_resp { > + __u32 qp_id; > + __u32 actual_sq_size; > + __u32 actual_rq_size; > + __u32 i40iw_drv_opt; > + __u16 push_idx; > + __u8 lsmm; > + __u8 rsvd2; > +}; ditto > +struct irdma_create_ah_resp { > + __u32 ah_id; > + __u32 rsvd[4]; typo? __u8? Jason
>Subject: Re: [RFC v1 17/19] RDMA/irdma: Add ABI definitions > >On Fri, Feb 15, 2019 at 11:11:04AM -0600, Shiraz Saleem wrote: >> From: Mustafa Ismail <mustafa.ismail@intel.com> >> >> Add ABI definitions for irdma. [....] >> >> + >> +#include <linux/types.h> >> + >> +#define IRDMA_ABI_VER 6 > >Starting with high numbers? It's a bump on the current i40iw ABI ver. of 5 since we want to be compatible and support current rdma-core's libi40iw for Gen1 (X722) device. > >> +enum irdma_memreg_type { >> + IW_MEMREG_TYPE_MEM = 0, >> + IW_MEMREG_TYPE_QP = 1, >> + IW_MEMREG_TYPE_CQ = 2, >> + IW_MEMREG_TYPE_RSVD = 3, >> + IW_MEMREG_TYPE_MW = 4, >> +}; >> + >> +struct irdma_alloc_ucontext_req { >> + __u32 rsvd32; >> + __u8 userspace_ver; >> + __u8 rsvd8[3]; >> +}; >> + >> +struct irdma_alloc_ucontext_resp { >> + __u8 kernel_ver; >> + __u8 rsvd[7]; >> + struct irdma_hw_attrs hw_attrs; > >This won't even compile like this - don't forget you have to send the rdma-core >PR along with the kernel patches. You should already be running the travis >checks yourself. rdma-core should detect malformed user space headers.. Yes. We will be sending the rdma-core patches soon. Maybe we are missing something here, but this did compile with libirdma in rdma-core-v22, but we havent run travis checks yet. > >> +struct irdma_mem_reg_req { >> + __u16 reg_type; /* Memory, QP or CQ */ >> + __u16 cq_pages; >> + __u16 rq_pages; >> + __u16 sq_pages; >> +}; > >New structs should be aligned to 8 bytes. > >> +struct i40iw_create_qp_resp { >> + __u32 qp_id; >> + __u32 actual_sq_size; >> + __u32 actual_rq_size; >> + __u32 i40iw_drv_opt; >> + __u16 push_idx; >> + __u8 lsmm; >> + __u8 rsvd2; >> +}; > >ditto This is not aligned to 8 bytes. But the previous one is ok right? > >> +struct irdma_create_ah_resp { >> + __u32 ah_id; >> + __u32 rsvd[4]; > >typo? __u8? > Yes. Thanks!
On Wed, Feb 20, 2019 at 02:52:03PM +0000, Saleem, Shiraz wrote: > >Subject: Re: [RFC v1 17/19] RDMA/irdma: Add ABI definitions > > > >On Fri, Feb 15, 2019 at 11:11:04AM -0600, Shiraz Saleem wrote: > >> From: Mustafa Ismail <mustafa.ismail@intel.com> > >> > >> Add ABI definitions for irdma. > > [....] > >> > >> + > >> +#include <linux/types.h> > >> + > >> +#define IRDMA_ABI_VER 6 > > > >Starting with high numbers? > > It's a bump on the current i40iw ABI ver. of 5 since we > want to be compatible and support current rdma-core's libi40iw > for Gen1 (X722) device. i40iw is one of the drivers that doesn't do ABI versions right, so this is all meaningless. You should probably fix it: static const struct verbs_device_ops i40iw_udev_ops = { .name = "i40iw", .match_min_abi_version = 0, .match_max_abi_version = INT_MAX, 0 and INT_MAX need to be something sensible. > >This won't even compile like this - don't forget you have to send the rdma-core > >PR along with the kernel patches. You should already be running the travis > >checks yourself. rdma-core should detect malformed user space headers.. > > Yes. We will be sending the rdma-core patches soon. > Maybe we are missing something here, but this did compile with libirdma > in rdma-core-v22, but we havent run travis checks yet. travis does the tests. Jason
diff --git a/include/uapi/rdma/irdma-abi.h b/include/uapi/rdma/irdma-abi.h new file mode 100644 index 0000000..5b0e2d5 --- /dev/null +++ b/include/uapi/rdma/irdma-abi.h @@ -0,0 +1,140 @@ +/* + * Copyright (c) 2006 - 2019 Intel Corporation. All rights reserved. + * Copyright (c) 2005 Topspin Communications. All rights reserved. + * Copyright (c) 2005 Cisco Systems. All rights reserved. + * Copyright (c) 2005 Open Grid Computing, Inc. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +#ifndef IRDMA_ABI_H +#define IRDMA_ABI_H + +#include <linux/types.h> + +#define IRDMA_ABI_VER 6 + +enum irdma_memreg_type { + IW_MEMREG_TYPE_MEM = 0, + IW_MEMREG_TYPE_QP = 1, + IW_MEMREG_TYPE_CQ = 2, + IW_MEMREG_TYPE_RSVD = 3, + IW_MEMREG_TYPE_MW = 4, +}; + +struct irdma_alloc_ucontext_req { + __u32 rsvd32; + __u8 userspace_ver; + __u8 rsvd8[3]; +}; + +struct irdma_alloc_ucontext_resp { + __u8 kernel_ver; + __u8 rsvd[7]; + struct irdma_hw_attrs hw_attrs; +}; + +struct i40iw_alloc_ucontext_resp { + __u32 max_pds; /* maximum pds allowed for this user process */ + __u32 max_qps; /* maximum qps allowed for this user process */ + __u32 wq_size; /* size of the WQs (sq+rq) allocated to the mmaped area */ + __u8 kernel_ver; + __u8 reserved[3]; +}; + +struct irdma_alloc_pd_resp { + __u32 pd_id; + __u8 rsvd[4]; +}; + +struct irdma_create_cq_req { + __aligned_u64 user_cq_buf; + __aligned_u64 user_shadow_area; +}; + +struct irdma_create_qp_req { + __aligned_u64 user_wqe_bufs; + __aligned_u64 user_compl_ctx; +}; + +struct i40iw_create_qp_req { + __aligned_u64 user_wqe_buffers; + __aligned_u64 user_compl_ctx; + + /* UDA QP PHB */ + __aligned_u64 user_sq_phb; /* place for VA of the sq phb buff */ + __aligned_u64 user_rq_phb; /* place for VA of the rq phb buff */ +}; + +struct irdma_mem_reg_req { + __u16 reg_type; /* Memory, QP or CQ */ + __u16 cq_pages; + __u16 rq_pages; + __u16 sq_pages; +}; + +struct irdma_create_cq_resp { + __u32 cq_id; + __u32 cq_size; +}; + +struct i40iw_create_cq_resp { + __u32 cq_id; + __u32 cq_size; + __u32 mmap_db_index; + __u32 reserved; +}; + +struct irdma_create_qp_resp { + __u32 qp_id; + __u32 actual_sq_size; + __u32 actual_rq_size; + __u32 irdma_drv_opt; + __u16 push_idx; + __u8 lsmm; + __u8 rsvd; + __u32 qp_caps; +}; + +struct i40iw_create_qp_resp { + __u32 qp_id; + __u32 actual_sq_size; + __u32 actual_rq_size; + __u32 i40iw_drv_opt; + __u16 push_idx; + __u8 lsmm; + __u8 rsvd2; +}; + +struct irdma_create_ah_resp { + __u32 ah_id; + __u32 rsvd[4]; +}; +#endif /* IRDMA_ABI_H */