<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2654.45">
<TITLE>create several RC QPs with the same init attributes structure causes the init attribute structure to be changed</TITLE>
</HEAD>
<BODY>

<P><FONT SIZE=2>I work with gen2 with svn rev 2946 on Mellanox HCA 23108.</FONT>
</P>

<P><FONT SIZE=2>When i try to create several RC QPs with the same init attributes structure, </FONT>
<BR><FONT SIZE=2>i can see that this structure is being changed by the verb.</FONT>
</P>

<P><FONT SIZE=2>here is the test code:</FONT>
</P>
<BR>

<P><FONT SIZE=2>        {</FONT>
<BR><FONT SIZE=2>                struct ibv_qp_init_attr attr = {</FONT>
<BR><FONT SIZE=2>                        .send_cq = cq,</FONT>
<BR><FONT SIZE=2>                        .recv_cq = cq,</FONT>
<BR><FONT SIZE=2>                        .cap     = {</FONT>
<BR><FONT SIZE=2>                                .max_send_wr  = 1,</FONT>
<BR><FONT SIZE=2>                                .max_recv_wr  = 1,</FONT>
<BR><FONT SIZE=2>                                .max_send_sge = 1,</FONT>
<BR><FONT SIZE=2>                                .max_recv_sge = 1,</FONT>
<BR><FONT SIZE=2>                                .max_inline_data = 0,</FONT>
<BR><FONT SIZE=2>                        },</FONT>
<BR><FONT SIZE=2>                        .qp_type = 2,</FONT>
<BR><FONT SIZE=2>                };</FONT>
</P>

<P><FONT SIZE=2>                for (i = 0; i < num_qp; ++i) {</FONT>
<BR><FONT SIZE=2>                        printf("s_wr %u, r_wr %u, s_sge %u, r_sge %u, max_inline %u\n",</FONT>
<BR><FONT SIZE=2>                               attr.cap.max_send_wr, attr.cap.max_recv_wr, attr.cap.max_send_sge, attr.cap.max_recv_sge, attr.cap.max_inline_data);</FONT></P>

<P><FONT SIZE=2>                        qp[i] = ibv_create_qp(pd, &attr);</FONT>
<BR><FONT SIZE=2>                        CHECK_STRUCT("ibv_create_qp", qp[i], printf("%d \n",i); getchar(); return -1);</FONT>
<BR><FONT SIZE=2>                }</FONT>
<BR><FONT SIZE=2>        }</FONT>
</P>

<P><FONT SIZE=2>here is the test output:</FONT>
</P>

<P><FONT SIZE=2>s_wr 1, r_wr 1, s_sge 1, r_sge 1, max_inline 0</FONT>
<BR><FONT SIZE=2>s_wr 1, r_wr 1, s_sge 1, r_sge 1, max_inline 28</FONT>
<BR><FONT SIZE=2>s_wr 1, r_wr 1, s_sge 2, r_sge 1, max_inline 92</FONT>
<BR><FONT SIZE=2>s_wr 1, r_wr 1, s_sge 6, r_sge 1, max_inline 220</FONT>
<BR><FONT SIZE=2>s_wr 1, r_wr 1, s_sge 14, r_sge 1, max_inline 476</FONT>
<BR><FONT SIZE=2>line 91, Error in ibv_create_qp, NULL pointer returned</FONT>
<BR><FONT SIZE=2>4</FONT>
</P>
<BR>
<BR>

<P><FONT SIZE=2>When i try execute the same code with UD/UC QPs everything is just fine and the init attributes structure is not being changed by the verb.</FONT></P>
<BR>

<P><FONT SIZE=2>Dotan Barak</FONT>
<BR><FONT SIZE=2>Software Verification Engineer</FONT>
<BR><FONT SIZE=2>Mellanox Technologies LTD</FONT>
<BR><FONT SIZE=2><A HREF="mailto:dotanb@mellanox.co.il">mailto:dotanb@mellanox.co.il</A></FONT>
<BR><FONT SIZE=2>Tel: +972-4-9097200 Ext: 231 Fax: +972-4-9593245</FONT>
<BR><FONT SIZE=2>P.O. Box 86 Yokneam 20692 ISRAEL.</FONT>
<BR><FONT SIZE=2>Home: +972-4-8289408  Cell: 052-4222383</FONT>
</P>

<P><FONT SIZE=2>[ May the fork be with you ]</FONT>
</P>

</BODY>
</HTML>