david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[hermon] Fix received packet length

Debugged-by: Wissam Shoukair <wissams@mellanox.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2016-03-22 16:09:18 +00:00
parent 59bae324c0
commit 3ad028cf1c
1 changed files with 3 additions and 2 deletions

View File

@ -1769,8 +1769,6 @@ static int hermon_complete ( struct ib_device *ibdev,
} else {
/* Set received length */
len = MLX_GET ( &cqe->normal, byte_cnt );
assert ( len <= iob_tailroom ( iobuf ) );
iob_put ( iobuf, len );
memset ( &recv_dest, 0, sizeof ( recv_dest ) );
recv_dest.qpn = qpn;
memset ( &recv_source, 0, sizeof ( recv_source ) );
@ -1781,6 +1779,7 @@ static int hermon_complete ( struct ib_device *ibdev,
/* Locate corresponding GRH */
assert ( hermon_qp->recv.grh != NULL );
grh = &hermon_qp->recv.grh[ wqe_idx & wqe_idx_mask ];
len -= sizeof ( *grh );
/* Construct address vector */
source = &recv_source;
source->qpn = MLX_GET ( &cqe->normal, srq_rqpn );
@ -1806,6 +1805,8 @@ static int hermon_complete ( struct ib_device *ibdev,
assert ( 0 );
return -EINVAL;
}
assert ( len <= iob_tailroom ( iobuf ) );
iob_put ( iobuf, len );
/* Hand off to completion handler */
ib_complete_recv ( ibdev, qp, &recv_dest, source, iobuf, rc );
}