mirror of https://gitee.com/openkylin/linux.git
i40iw: Do not allow posting WR after QP is flushed
A Work Request (WR) posted after QP is flushed will not
get a flush completion.
Correct this problem by not allowing posting of WRs
after a QP is flushed.
Fixes: d374984179
("i40iw: add files for iwarp interface")
Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
abae49e433
commit
40837273d0
|
@ -2202,6 +2202,12 @@ static int i40iw_post_send(struct ib_qp *ibqp,
|
|||
ukqp = &iwqp->sc_qp.qp_uk;
|
||||
|
||||
spin_lock_irqsave(&iwqp->lock, flags);
|
||||
|
||||
if (iwqp->flush_issued) {
|
||||
err = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
while (ib_wr) {
|
||||
inv_stag = false;
|
||||
memset(&info, 0, sizeof(info));
|
||||
|
@ -2344,6 +2350,7 @@ static int i40iw_post_send(struct ib_qp *ibqp,
|
|||
ib_wr = ib_wr->next;
|
||||
}
|
||||
|
||||
out:
|
||||
if (err)
|
||||
*bad_wr = ib_wr;
|
||||
else
|
||||
|
@ -2376,6 +2383,12 @@ static int i40iw_post_recv(struct ib_qp *ibqp,
|
|||
|
||||
memset(&post_recv, 0, sizeof(post_recv));
|
||||
spin_lock_irqsave(&iwqp->lock, flags);
|
||||
|
||||
if (iwqp->flush_issued) {
|
||||
err = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
while (ib_wr) {
|
||||
post_recv.num_sges = ib_wr->num_sge;
|
||||
post_recv.wr_id = ib_wr->wr_id;
|
||||
|
|
Loading…
Reference in New Issue