RDMA/bnxt_re: Fix the handling of control path response data
authorSelvin Xavier <selvin.xavier@broadcom.com>
Wed, 20 Sep 2023 08:41:19 +0000 (01:41 -0700)
committerLeon Romanovsky <leon@kernel.org>
Thu, 21 Sep 2023 08:56:23 +0000 (11:56 +0300)
commit9fc5f9a92fe6897dbed7b9295b234cb7e3cc9d11
tree3ad77e323c714575aebef67bb0f6d608530108b9
parent18126c767658ae8a831257c6cb7776c5ba5e7249
RDMA/bnxt_re: Fix the handling of control path response data

Flag that indicate control path command completion should be cleared
only after copying the command response data. As soon as the is_in_used
flag is clear, the waiting thread can proceed with wrong response
data.  This wrong data is causing multiple issues like wrong lkey
used in data traffic and wrong AH Id etc.

Use a memory barrier to ensure that the response data
is copied and visible to the process waiting on a different
cpu core before clearing the is_in_used flag.

Clear the is_in_used after copying the command response.

Fixes: bcfee4ce3e01 ("RDMA/bnxt_re: remove redundant cmdq_bitmap")
Signed-off-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com>
Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
Link: https://lore.kernel.org/r/1695199280-13520-2-git-send-email-selvin.xavier@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/bnxt_re/qplib_rcfw.c