|
@@ -184,8 +184,12 @@ static void ud_loopback(struct rvt_qp *sqp, struct rvt_swqe *swqe)
|
|
|
}
|
|
|
|
|
|
if (ah_attr->ah_flags & IB_AH_GRH) {
|
|
|
- hfi1_copy_sge(&qp->r_sge, &ah_attr->grh,
|
|
|
- sizeof(struct ib_grh), 1, 0);
|
|
|
+ struct ib_grh grh;
|
|
|
+ struct ib_global_route grd = ah_attr->grh;
|
|
|
+
|
|
|
+ hfi1_make_grh(ibp, &grh, &grd, 0, 0);
|
|
|
+ hfi1_copy_sge(&qp->r_sge, &grh,
|
|
|
+ sizeof(grh), 1, 0);
|
|
|
wc.wc_flags |= IB_WC_GRH;
|
|
|
} else {
|
|
|
hfi1_skip_sge(&qp->r_sge, sizeof(struct ib_grh), 1);
|