aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/irdma/utils.c
diff options
context:
space:
mode:
authorShiraz Saleem <shiraz.saleem@intel.com>2022-04-25 13:17:02 -0500
committerJason Gunthorpe <jgg@nvidia.com>2022-05-02 11:10:33 -0300
commit2df6d895907b2f5dfbc558cbff7801bba82cb3cc (patch)
tree85c7791af81a3ef750e882b65558a40dd008f3aa /drivers/infiniband/hw/irdma/utils.c
parentRDMA/irdma: Flush iWARP QP if modified to ERR from RTR state (diff)
downloadlinux-dev-2df6d895907b2f5dfbc558cbff7801bba82cb3cc.tar.xz
linux-dev-2df6d895907b2f5dfbc558cbff7801bba82cb3cc.zip
RDMA/irdma: Reduce iWARP QP destroy time
QP destroy is synchronous and waits for its refcnt to be decremented in irdma_cm_node_free_cb (for iWARP) which fires after the RCU grace period elapses. Applications running a large number of connections are exposed to high wait times on destroy QP for events like SIGABORT. The long pole for this wait time is the firing of the call_rcu callback during a CM node destroy which can be slow. It holds the QP reference count and blocks the destroy QP from completing. call_rcu only needs to make sure that list walkers have a reference to the cm_node object before freeing it and thus need to wait for grace period elapse. The rest of the connection teardown in irdma_cm_node_free_cb is moved out of the grace period wait in irdma_destroy_connection. Also, replace call_rcu with a simple kfree_rcu as it just needs to do a kfree on the cm_node Fixes: 146b9756f14c ("RDMA/irdma: Add connection manager") Link: https://lore.kernel.org/r/20220425181703.1634-3-shiraz.saleem@intel.com Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Diffstat (limited to '')
0 files changed, 0 insertions, 0 deletions