On Tue, 05 Oct 2004 16:57:58 -0400
Hal Rosenstock <[EMAIL PROTECTED]> wrote:

> > >           mad_send_wr->tid = ((struct ib_mad_hdr*)
> > >-
> > bus_to_virt(cur_send_wr->sg_list->addr))->tid;
> > >+                             bus_to_virt(cur_send_wr->sg_list->addr))-
> > >>tid.id;
> > 
> > A response MAD should have exactly the same TID as what was sent.  Not sure
> > why we aren't matching against the entire TID.
> 
> It's only done for comparison purposes (taking the TID off the wire in
> network endian and converting to CPU endian);

The sender of the request should be able to set the TID to whatever value it wants.  
The responder should just echo that TID.  I don't understand why byte-swapping is 
needed at all on the TID.
 
> > >-          hi_tid = mad->mad_hdr.tid >> 32;
> > >+          hi_tid = be32_to_cpu(mad->mad_hdr.tid.tid_field.hi_tid);
> > 
> > This shouldn't be necessary:
> 
> The comparison failed when the code was without the conversion.

Why did the comparison fail?  Was the client setting the upper 32-bits of the TID 
correctly, or was the client swapping the bits when setting it?
 
_______________________________________________
openib-general mailing list
[EMAIL PROTECTED]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to