Subject: RE: [PATCH 20/22] RDMA/irdma: Add ABI definitions

From: "Saleem, Shiraz" <[email-masked]>
Date: Sat, 30 Jan 2021 01:18:36 +0000

> Subject: Re: [PATCH 20/22] RDMA/irdma: Add ABI definitions
> 
> On Fri, Jan 22, 2021 at 05:48:25PM -0600, Shiraz Saleem wrote:
> > From: Mustafa Ismail <[email-masked]>
> >
> > Add ABI definitions for irdma.
> >
> > Signed-off-by: Mustafa Ismail <[email-masked]>
> > Signed-off-by: Shiraz Saleem <[email-masked]>
> > 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..d9c8ce1
> > +++ b/include/uapi/rdma/irdma-abi.h
> > @@ -0,0 +1,140 @@
> > +/* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR
> > +Linux-OpenIB) */
> > +/*
> > + * Copyright (c) 2006 - 2021 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.
> > + */
> > +
> > +#ifndef IRDMA_ABI_H
> > +#define IRDMA_ABI_H
> > +
> > +#include <linux/types.h>
> > +
> > +/* irdma must support legacy GEN_1 i40iw kernel
> > + * and user-space whose last ABI ver is 5  */ #define IRDMA_ABI_VER 6
> 
> I don't want to see this value increase, either this is ABI compatible with i40iw or it
> is not and should be a new driver_id.

I am not sure I understand how it's possible without a ver. bump.
We support user-space libirdma with this driver as well as libi40iw. 

libi40iw - legacy support which is ABIv 4 & 5. GEN_1 devices only
libirdma - replaces libi40iw; supports i40iw (GEN1) driver and irdma

> 
> This should have a small diff against include/uapi/rdma/i40iw-abi.h that is
> obviously compatible
> 
> > +struct irdma_create_qp_resp {
> > +	__u32 qp_id;
> > +	__u32 actual_sq_size;
> > +	__u32 actual_rq_size;
> > +	__u32 irdma_drv_opt;
> > +	__u32 qp_caps;
> > +	__u16 rsvd1;
> > +	__u8 lsmm;
> > +	__u8 rsvd2;
> > +};
> 
> > +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 rsvd;
> > +};
> 
> For instance these are almost the same, why put qp_caps in the middle?
> Add it to the end so the whole thing is properly compatible with a single structure.
> 
> Jason