projects
/
platform
/
kernel
/
linux-rpi.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
34b8ba1
)
IB/cm: Cancel mad on the DREQ event when the state is MRA_REP_RCVD
author
Mark Zhang
<markzhang@nvidia.com>
Mon, 4 Apr 2022 08:58:05 +0000
(11:58 +0300)
committer
Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
Wed, 13 Apr 2022 18:59:17 +0000
(20:59 +0200)
[ Upstream commit
107dd7beba403a363adfeb3ffe3734fe38a05cce
]
On the passive side when the disconnectReq event comes, if the current
state is MRA_REP_RCVD, it needs to cancel the MAD before entering the
DREQ_RCVD and TIMEWAIT states, otherwise the destroy_id may block until
this mad will reach timeout.
Fixes:
a977049dacde
("[PATCH] IB: Add the kernel CM implementation")
Link:
https://lore.kernel.org/r/75261c00c1d82128b1d981af9ff46e994186e621.1649062436.git.leonro@nvidia.com
Signed-off-by: Mark Zhang <markzhang@nvidia.com>
Reviewed-by: Maor Gottlieb <maorg@nvidia.com>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/core/cm.c
patch
|
blob
|
history
diff --git
a/drivers/infiniband/core/cm.c
b/drivers/infiniband/core/cm.c
index
35f0d5e
..
1c107d6
100644
(file)
--- a/
drivers/infiniband/core/cm.c
+++ b/
drivers/infiniband/core/cm.c
@@
-2824,6
+2824,7
@@
static int cm_dreq_handler(struct cm_work *work)
switch (cm_id_priv->id.state) {
case IB_CM_REP_SENT:
case IB_CM_DREQ_SENT:
+ case IB_CM_MRA_REP_RCVD:
ib_cancel_mad(cm_id_priv->msg);
break;
case IB_CM_ESTABLISHED:
@@
-2831,8
+2832,6
@@
static int cm_dreq_handler(struct cm_work *work)
cm_id_priv->id.lap_state == IB_CM_MRA_LAP_RCVD)
ib_cancel_mad(cm_id_priv->msg);
break;
- case IB_CM_MRA_REP_RCVD:
- break;
case IB_CM_TIMEWAIT:
atomic_long_inc(&work->port->counters[CM_RECV_DUPLICATES]
[CM_DREQ_COUNTER]);