Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e5b251a2 authored by Roland Dreier's avatar Roland Dreier
Browse files

[IB] mthca: Avoid SRQ free WQE list corruption



Fix wqe_to_link() to use a structure field that we know is definitely
always unused for receive work requests, so that it really avoids the
free list corruption bug that the comment claims it does.

Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
parent 7162a3e0
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -75,15 +75,16 @@ static void *get_wqe(struct mthca_srq *srq, int n)

/*
 * Return a pointer to the location within a WQE that we're using as a
 * link when the WQE is in the free list.  We use an offset of 4
 * because in the Tavor case, posting a WQE may overwrite the first
 * four bytes of the previous WQE.  The offset avoids corrupting our
 * free list if the WQE has already completed and been put on the free
 * list when we post the next WQE.
 * link when the WQE is in the free list.  We use the imm field
 * because in the Tavor case, posting a WQE may overwrite the next
 * segment of the previous WQE, but a receive WQE will never touch the
 * imm field.  This avoids corrupting our free list if the previous
 * WQE has already completed and been put on the free list when we
 * post the next WQE.
 */
static inline int *wqe_to_link(void *wqe)
{
	return (int *) (wqe + 4);
	return (int *) (wqe + offsetof(struct mthca_next_seg, imm));
}

static void mthca_tavor_init_srq_context(struct mthca_dev *dev,