On Fri, Oct 04, 2019 at 02:09:57PM +0000, Bernard Metzler wrote: > -----"Leon Romanovsky" <leon@xxxxxxxxxx> 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. Let me > see if I can compact QP objects to contain the > ib_qp. I'd like to avoid following pointers > potentially causing cache misses on the > fast path. This is why I still have that > little boolean within the siw private > structure. You have this variable in CQ and SRQ too. I have serious doubts that this value gives any performance advantages. In both flows, you will need to fetch ib_qp pointer, so you don't save here anything by looking on kernel_verbs value. Thanks > > Thanks and best regards, > Bernard. >