On Fri, Jan 04, 2019 at 03:37:06PM -0800, Sagi Grimberg wrote: > > > In this case the only reason this ugly hack was put in the driver is > > because the common code would *REFUSE* to register the driver unless > > there is a req_notify_cq implementation (and others) because it is > > declared as a mandatory part of common verbs for decades now. > > > > The IBA has things marked MANDATORY for a reason - IMHO something that > > doesn't implement 'enough' of the mandatory statements no longer > > qualifies to be called verbs. > > Are there any mandatory callbacks that EFA refuses other than this one > (which Gal said that it will support)? All the EOPNOTSUPP ones. It *really* doesn't support kverbs at all. Which is why my first thought was to just not present it via the in-kernel client API at all. Only req_notify really extends into userspace verbs though. +/* In ib callbacks section - Start of stub funcs */ +int efa_post_send(struct ib_qp *ibqp, + const struct ib_send_wr *wr, + const struct ib_send_wr **bad_wr) +{ + pr_warn("Function not supported\n"); + return -EOPNOTSUPP; +} + +int efa_post_recv(struct ib_qp *ibqp, + const struct ib_recv_wr *wr, + const struct ib_recv_wr **bad_wr) +{ + pr_warn("Function not supported\n"); + return -EOPNOTSUPP; +} + +int efa_poll_cq(struct ib_cq *ibcq, int num_entries, + struct ib_wc *wc) +{ + pr_warn("Function not supported\n"); + return -EOPNOTSUPP; +} + +int efa_req_notify_cq(struct ib_cq *ibcq, + enum ib_cq_notify_flags flags) +{ + pr_warn("Function not supported\n"); + return -EOPNOTSUPP; +} + +struct ib_mr *efa_get_dma_mr(struct ib_pd *ibpd, int acc) +{ + pr_warn("Function not supported\n"); + return ERR_PTR(-EOPNOTSUPP); +} + +int efa_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, + int attr_mask, struct ib_udata *udata) +{ + pr_warn("Function not supported\n"); + return -EOPNOTSUPP; +} +