Hi Jason and Doug, This patchset adds a new 'flags' field to create/destroy address handle flow and a flag that marks whether the callback is executed in a sleepable context in order to allow drivers to wait for device completion instead of busy polling when possible. Patches #1, #2 add the flag to create/destroy AH callbacks and change all the drivers, patches #3, #4 change bnxt_re driver to make use of the flag and not poll for firmware completion. Note that I left the bool function parameter in the bnxt_re internal qplib calls because that's consistent with all other functions, changed it anywhere else. Changelog: v1->v2: * Rebased on top of rdmavt callbacks fixes by Kamal and adjust the callbacks accordingly * Use flags and an enum instead of bool flag * Make bnxt_re_create_shadow_qp_ah call create AH as sleepable (changed from non-sleepable) * Make bnxt_re_destroy_qp call destroy AH as sleepable (changed from non-sleepable) Thanks, Gal Gal Pressman (4): RDMA: Mark if create address handle is in a sleepable context RDMA: Mark if destroy address handle is in a sleepable context RDMA/bnxt_re: Make use of create AH sleepable flag RDMA/bnxt_re: Make use of destroy AH sleepable flag drivers/infiniband/core/agent.c | 4 ++-- drivers/infiniband/core/cm.c | 6 +++--- drivers/infiniband/core/mad_rmpp.c | 10 ++++----- drivers/infiniband/core/sa_query.c | 5 +++-- drivers/infiniband/core/user_mad.c | 4 ++-- drivers/infiniband/core/uverbs_cmd.c | 2 +- drivers/infiniband/core/uverbs_std_types.c | 3 ++- drivers/infiniband/core/verbs.c | 21 ++++++++++++------- drivers/infiniband/hw/bnxt_re/ib_verbs.c | 13 +++++++----- drivers/infiniband/hw/bnxt_re/ib_verbs.h | 3 ++- drivers/infiniband/hw/bnxt_re/qplib_sp.c | 10 +++++---- drivers/infiniband/hw/bnxt_re/qplib_sp.h | 6 ++++-- drivers/infiniband/hw/hfi1/mad.c | 2 +- drivers/infiniband/hw/hns/hns_roce_ah.c | 3 ++- drivers/infiniband/hw/hns/hns_roce_device.h | 3 ++- drivers/infiniband/hw/mlx4/ah.c | 6 +++--- drivers/infiniband/hw/mlx4/mad.c | 28 ++++++++++++------------- drivers/infiniband/hw/mlx4/mlx4_ib.h | 4 ++-- drivers/infiniband/hw/mlx5/ah.c | 4 ++-- drivers/infiniband/hw/mlx5/mlx5_ib.h | 4 ++-- drivers/infiniband/hw/mthca/mthca_mad.c | 7 ++++--- drivers/infiniband/hw/mthca/mthca_provider.c | 3 ++- drivers/infiniband/hw/ocrdma/ocrdma_ah.c | 4 ++-- drivers/infiniband/hw/ocrdma/ocrdma_ah.h | 4 ++-- drivers/infiniband/hw/qedr/verbs.c | 4 ++-- drivers/infiniband/hw/qedr/verbs.h | 4 ++-- drivers/infiniband/hw/qib/qib_mad.c | 3 ++- drivers/infiniband/hw/qib/qib_verbs.c | 2 +- drivers/infiniband/hw/usnic/usnic_ib_verbs.c | 3 ++- drivers/infiniband/hw/usnic/usnic_ib_verbs.h | 3 ++- drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.c | 6 ++++-- drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h | 4 ++-- drivers/infiniband/sw/rdmavt/ah.c | 5 ++++- drivers/infiniband/sw/rdmavt/ah.h | 3 ++- drivers/infiniband/sw/rdmavt/mad.c | 3 ++- drivers/infiniband/sw/rxe/rxe_verbs.c | 3 ++- drivers/infiniband/ulp/ipoib/ipoib_ib.c | 4 ++-- drivers/infiniband/ulp/opa_vnic/opa_vnic_vema.c | 8 +++---- drivers/infiniband/ulp/srpt/ib_srpt.c | 4 ++-- include/rdma/ib_verbs.h | 20 +++++++++++++++--- 40 files changed, 142 insertions(+), 96 deletions(-) -- 2.7.4