[openib-general] [PATCH] Start moving to a native IPoIB driver

Hal Rosenstock
Mon Oct 25 19:06:46 PDT 2004


On Mon, 2004-10-25 at 16:09, Roland Dreier wrote:
>     Hal> In terms of the change to net/ip.h in
>     Hal> linux-2.6.9-ipoib-multicast.diff, I'm curious as to why the
>     Hal> mapping doesn't match the MGID layout (and where that
>     Hal> conversion is done). Also, why is there a placeholder for the
>     Hal> multicast QPN here ? The endian also looks a little odd to me
>     Hal> as well.
> 
> ip_ib_mc_map() is mapping an IPv4 multicast address to an IPoIB
> hardware address.  So we have to create the full 20-byte address (as
> used by ARP etc), which means the first 4 bytes are reserved+QPN.

OK; I thought the mapping was just to MGID but it is hardware address
(QPN + MGID) even though multicast doesn't use ARP (but the QPN for the
MGID is needed to multicast).

> I just looked over what I wrote again and it seems to be correct,
> including endianness: we put ff 12 40 1b as the top 4 bytes of the
> GID, and then the low 28 bits of the IPv4 address as the last 4 bytes
> of the GID.

That sounds right.

> (Endianness is a little tricky because I used the same idiom as the
> rest of net/ip.h, where we do addr = ntohl(addr) and then fill in the
> group ID in reverse order).

That's what made it seem odd to me. Should've looked harder. Thanks.

-- Hal



More information about the openib-general mailing list