<br><font size=2 face="sans-serif">Sean,</font>
<br>
<br><font size=2 face="sans-serif">many thanks for your reply. I currently
have my application up and running using</font>
<br><font size=2 face="sans-serif">a single QP on each of two hosts. What
I want to do now is to establish a second connection</font>
<br><font size=2 face="sans-serif">using a second QP on each host but let
both QPs access the same memory region.</font>
<br>
<br><font size=2 face="sans-serif">The above is just a toy example. In
the end I want to connect my host to a couple of other hosts</font>
<br><font size=2 face="sans-serif">each with its own QP and have them all
access 1 MR on the first host (star-topology).</font>
<br><font size=2 face="sans-serif">For that I need the MR to be accessible
by all the remote QPs and therefore they all</font>
<br><font size=2 face="sans-serif">need to be in the same shared PD on
the first host.</font>
<br>
<br><font size=2 face="sans-serif">I have tried Variant A but when I send
from the MR which was registered by QP1 using QP2,</font>
<br><font size=2 face="sans-serif">I get an async event saying 'Local Work
Queue Error' and the connection gets terminated.</font>
<br><font size=2 face="sans-serif">This is even though, QP1 and QP2 are
in the same PD on the local host. Is there anything else I need to</font>
<br><font size=2 face="sans-serif">share between them or is there a fundamental
misunderstanding on my side?</font>
<br>
<br><font size=2 face="sans-serif">Best regards,</font>
<br><font size=2 face="sans-serif"> Philip</font>
<br>
<br><tt><font size=2>"Sean Hefty" <sean.hefty@intel.com>
wrote on 01/12/2009 06:27:30 PM:<br>
<br>
> [image removed] </font></tt>
<br><tt><font size=2>> <br>
> RE: [ofa-general] Shared Protection Domain for iWARP</font></tt>
<br><tt><font size=2>> <br>
> Sean Hefty </font></tt>
<br><tt><font size=2>> <br>
> to:</font></tt>
<br><tt><font size=2>> <br>
> 'Philip Frey1', general</font></tt>
<br><tt><font size=2>> <br>
> 01/12/2009 06:27 PM</font></tt>
<br><tt><font size=2>> <br>
> >QP1:<br>
> >----<br>
> >1. rdma_create_event_channel()<br>
> >2. rdma_create_id(event_channel, cm_id_1,
...)<br>
> >3. rdma_resolve_addr(cm_id_1, ...)<br>
> >4. rdma_resolve_route(cm_id_1, ...)<br>
> >5. pd_1 = ibv_alloc_pd(cm_id_1->verbs)<br>
> >6. ibv_create_comp_channel(cm_id_1->verbs)<br>
> >7. ibv_create_cq(cm_id_1->verbs,
..., comp_channel, ...)<br>
> >8. rdma_create_qp(cm_id_1, pd_1, init_attrs)<br>
> <br>
> Do you plan on connecting the QPs together? If so, you'll need
rdma_connect()<br>
> here.<br>
> <br>
> >QP2: (Variant A)<br>
> >----<br>
> >2. rdma_create_id(event_channel, cm_id_2,
...)<br>
> >3. rdma_resolve_addr(cm_id_2, ...)<br>
> >4. rdma_resolve_route(cm_id_2, ...)<br>
> ><br>
> >6. ibv_create_comp_channel(cm_id_2->verbs)<br>
> >7. ibv_create_cq(cm_id_2->verbs,
..., comp_channel, ...)<br>
> >8. rdma_create_qp(cm_id_2, pd_1, init_attrs)<br>
> ><br>
> >----<br>
> >QP2: (Variant B)<br>
> >----<br>
> >6. ibv_create_comp_channel(cm_id_1->verbs)<br>
> >7. ibv_create_cq(cm_id_1->verbs,
..., comp_channel, ...)<br>
> >8. rdma_create_qp(cm_id_1, pd_1, init_attrs)<br>
> <br>
> I don't know if iWarp supports peer to peer connections. If
not, then you'll<br>
> need to change one of the sides to act as the passive (server) side
for the<br>
> connection. See the rdma_cm.7 man page for a flow outline.<br>
> <br>
> - Sean<br>
> <br>
</font></tt>