av = ah->av;
}
-
+
ah->key = pd->ntmr.ibmr.lkey;
RtlZeroMemory(av, MTHCA_AV_SIZE);
HCA_PRINT(TRACE_LEVEL_VERBOSE,HCA_DBG_LOW,("Created UDAV at %p/%08lx:\n",
av, (unsigned long) ah->avdma));
for (j = 0; j < 8; ++j)
- HCA_PRINT(TRACE_LEVEL_VERBOSE ,HCA_DBG_LOW ,(" [%2x] %08x\n",
+ HCA_PRINT(TRACE_LEVEL_VERBOSE ,HCA_DBG_AV ,(" [%2x] %08x\n",
j * 4, cl_ntoh32(((__be32 *) av)[j])));
}
if (ah->type == MTHCA_AH_ON_HCA) {
memcpy_toio((u8*)dev->av_table.av_map + index * MTHCA_AV_SIZE,
av, MTHCA_AV_SIZE);
+ ah->av = (struct mthca_av *)( (u8*)( dev->av_table.av_map) + index *MTHCA_AV_SIZE );
kfree(av);
}
-
return 0;
}
int mthca_destroy_ah(struct mthca_dev *dev, struct mthca_ah *ah)
{
+ HCA_ENTER(HCA_DBG_AV);
+
switch (ah->type) {
case MTHCA_AH_ON_HCA:
mthca_free(&dev->av_table.alloc,
break;
}
+ HCA_EXIT(HCA_DBG_AV);
return 0;
}
&sqp->ud_header);
err = mthca_read_ah(dev, to_mah((struct ib_ah *)wr->dgrm.ud.h_av), &sqp->ud_header);
- if (err)
+ if (err){
+ HCA_PRINT(TRACE_LEVEL_ERROR , HCA_DBG_AV, ("read av error%p\n",
+ to_mah((struct ib_ah *)wr->dgrm.ud.h_av)->av));
return err;
+ }
mlx->flags &= ~cl_hton32(MTHCA_NEXT_SOLICIT | 1);
mlx->flags |= cl_hton32((!sqp->qp.ibqp.qp_num ? MTHCA_MLX_VL15 : 0) |
(sqp->ud_header.lrh.destination_lid ==