On Tue, Apr 30, 2013 at 12:04:25PM +0300, Shlomo Pongratz wrote: > >And.. 'tss_qpn_mask_sz' seems unnecessarily limiting, using > > WC.srcQPN + ipoib_header.tss_qpn_offset == real QPN > > (ie use a signed offset, not a mask) > >Seems much better than > > Wc.srcQPN & ~((1<<(ipoib_header.tss_qpn_mask_sz >> 12))-1) == real QPN > > (Did I even get that right?)
> Your suggestion could have been valid if the the IPoIB header was larger. > Please note that the a QPN occupies 3 octets and thus its value lies > in the range of [0..0xFFFFFF]. I am aware of this, and it isn't really a problem, adaptors that allocate randomly across the entire QPN space would not be compatible with this approach, but most adaptors allocate QPNs quasi-contiguously. Basically, at startup, IPoIB would allocate a TX QP, then allocate TSS QPs, and throw away any that can't fit in the encoding, until it reaches the target number or tries too long. No need for a special API to the driver. Jason -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html