On Fri, Oct 25, 2019 at 12:11:16PM +0000, Bernard Metzler wrote: > -----"Jason Gunthorpe" <jgg@xxxxxxxx> wrote: ----- > > >To: "Bernard Metzler" <BMT@xxxxxxxxxxxxxx> > >From: "Jason Gunthorpe" <jgg@xxxxxxxx> > >Date: 10/04/2019 07:48PM > >Cc: "Leon Romanovsky" <leon@xxxxxxxxxx>, linux-rdma@xxxxxxxxxxxxxxx, > >bharat@xxxxxxxxxxx, nirranjan@xxxxxxxxxxx, krishna2@xxxxxxxxxxx, > >bvanassche@xxxxxxx > >Subject: [EXTERNAL] Re: Re: [[PATCH v2 for-next]] RDMA/siw: Fix SQ/RQ > >drain logic > > > >On Fri, Oct 04, 2019 at 02:09:57PM +0000, Bernard Metzler wrote: > >> <...> > >> > >> >> * > >> >> @@ -705,6 +746,12 @@ int siw_post_send(struct ib_qp *base_qp, > >const > >> >struct ib_send_wr *wr, > >> >> unsigned long flags; > >> >> int rv = 0; > >> >> > >> >> + if (wr && !qp->kernel_verbs) { > >> > > >> >It is not related to this specific patch, but all siw > >"kernel_verbs" > >> >should go, we have standard way to distinguish between kernel and > >> >user > >> >verbs. > >> > > >> >Thanks > >> > > >> Understood. I think we touched on that already. > >> rdma core objects have a uobject pointer which > >> is valid only if it belongs to a user land > >> application. We might better use that. > > > >No, the uobject pointer is not to be touched by drivers > > > Now what would be the appropriate way of remembering/ > detecting user level nature of endpoint resources? > I see drivers _are_ doing 'if (!ibqp->uobject)' ... IMHO, you should rely in "udata" to distinguish user/kernel objects. > > Other drivers keep it with the private state, like iw40, > but I learned we shall get rid of it. > > We may export an inline query from RDMA core, or simply > #define is_usermode(ib_obj *) (ib_obj->uobject != NULL) > ? > > Thanks and best regards, > Bernard >