<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=US-ASCII">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2654.45">
<TITLE>UD AV in UL return the wrong </TITLE>
</HEAD>
<BODY>

<P><FONT SIZE=2>Fab</FONT>
</P>

<P><FONT SIZE=2>We tried to run simple UL test over UD QP .</FONT>
<BR><FONT SIZE=2>It looks like the av handle use the wrong value ( we got completion with error (local operational error)</FONT>
</P>

<P><FONT SIZE=2>I investigate it little bit and that what I manage to discover:</FONT>
</P>

<P><FONT SIZE=2>in thhul_qpm.c WQE_build_send_req3() you use h_av->h_av as pointer to the av:</FONT>
<BR><FONT SIZE=2>"...</FONT>
<BR><FONT SIZE=2> if(MOSAL_EXPECT_FALSE(qp->ts_type == VAPI_TS_UD))</FONT>
<BR><FONT SIZE=2>  {</FONT>
<BR><FONT SIZE=2>        /* Check if UD (UD datagram segment) */</FONT>
<BR><FONT SIZE=2>        cur_loc_p+= WQE_pack_ud_be((u_int32_t*)cur_loc_p,</FONT>
<BR><FONT SIZE=2>                qp->ud_av_memkey,</FONT>
<BR>                        <FONT SIZE=2>translate_av(qp, (u_int64_t)p_wr->dgrm.ud.h_av->h_av),</FONT>
<BR><FONT SIZE=2>                p_wr->dgrm.ud.remote_qp, p_wr->dgrm.ud.remote_qkey);</FONT>
<BR><FONT SIZE=2>  }</FONT>
<BR><FONT SIZE=2>"</FONT>
</P>

<P><FONT SIZE=2>But in create AV you return structure of mlnx_ual_av_info_t to the h_av (in that structure the av pointer is on the 4th word and not on the first).</FONT></P>

<P><FONT SIZE=2>In mlnx_ual_av.c mlnx_post_create_av()</FONT>
<BR><FONT SIZE=2>"....</FONT>
<BR>        <FONT SIZE=2>p_new_av->p_i_av_attr = p_av_attr;</FONT>
<BR>        <FONT SIZE=2>p_new_av->h_uvp_pd = h_uvp_pd;</FONT>
<BR>        <FONT SIZE=2>*ph_uvp_av = (uvp_av_handle_t) p_new_av;</FONT>
<BR>        <FONT SIZE=2>p_umv_buf->p_inout_buf = NULL;</FONT>
<BR><FONT SIZE=2>..."</FONT>
</P>
<BR>

<P><FONT SIZE=2>Either mlnx_post_create_av return the wrong structure to ib_creat_av or the ib_post_send use </FONT>
<BR><FONT SIZE=2>the wrong h_av structure.</FONT>
</P>

<P><FONT SIZE=2>If I understand it correctly mlnx_post_create_av should return the pointer to the av (h_av) and not pointer to mlnx_ual_av_info_t ( I check and no one use this structure except map_itom_... functions that never called)</FONT></P>

<P><FONT SIZE=2>Can you pls check this ?</FONT>
</P>

<P><FONT SIZE=2>Thanks</FONT>
<BR><FONT SIZE=2>Yossi </FONT>
<BR><FONT SIZE=2> </FONT>
</P>

</BODY>
</HTML>