|
@@ -1769,8 +1769,6 @@ static int hermon_complete ( struct ib_device *ibdev,
|
1769
|
1769
|
} else {
|
1770
|
1770
|
/* Set received length */
|
1771
|
1771
|
len = MLX_GET ( &cqe->normal, byte_cnt );
|
1772
|
|
- assert ( len <= iob_tailroom ( iobuf ) );
|
1773
|
|
- iob_put ( iobuf, len );
|
1774
|
1772
|
memset ( &recv_dest, 0, sizeof ( recv_dest ) );
|
1775
|
1773
|
recv_dest.qpn = qpn;
|
1776
|
1774
|
memset ( &recv_source, 0, sizeof ( recv_source ) );
|
|
@@ -1781,6 +1779,7 @@ static int hermon_complete ( struct ib_device *ibdev,
|
1781
|
1779
|
/* Locate corresponding GRH */
|
1782
|
1780
|
assert ( hermon_qp->recv.grh != NULL );
|
1783
|
1781
|
grh = &hermon_qp->recv.grh[ wqe_idx & wqe_idx_mask ];
|
|
1782
|
+ len -= sizeof ( *grh );
|
1784
|
1783
|
/* Construct address vector */
|
1785
|
1784
|
source = &recv_source;
|
1786
|
1785
|
source->qpn = MLX_GET ( &cqe->normal, srq_rqpn );
|
|
@@ -1806,6 +1805,8 @@ static int hermon_complete ( struct ib_device *ibdev,
|
1806
|
1805
|
assert ( 0 );
|
1807
|
1806
|
return -EINVAL;
|
1808
|
1807
|
}
|
|
1808
|
+ assert ( len <= iob_tailroom ( iobuf ) );
|
|
1809
|
+ iob_put ( iobuf, len );
|
1809
|
1810
|
/* Hand off to completion handler */
|
1810
|
1811
|
ib_complete_recv ( ibdev, qp, &recv_dest, source, iobuf, rc );
|
1811
|
1812
|
}
|