[ofw] RE: [RFC] Remove path query from IPoIB

Fab Tillier ftillier at windows.microsoft.com
Mon Aug 11 10:44:45 PDT 2008


>> * We always send the GRH so that we preferably lookup endpoints
>> * by GID rather than by LID.  This allows certain WHQL tests
>> * such as the 2c_MediaCheck test to succeed since they don't use
>> * IP.  This allows endpoints to be created on the fly for requests
>> * for which there is no match, something that doesn't work when
>> * using LIDs only.
>>
>>  So sending the GRH always is by design.  It lets things work in the
>> absence of ARP requests.
>
> Maybe I don't understand the full context for this part of the diff
> because I'm not reading the entire code.  It looks like this is
> creating the AV that will be used to send data to a remote endpoint.

Yes.

> Even if some lookup is done by GID, why does the AV need the GRH?

An ARP provides the GID, so the GID is the basic addressing token used to lookup endpoints.  The LID in the endpoint is optional, so you can always look up and endpoint by GID, but not always by LID.

Some of the WHQL tests don't use IP and thus don't send ARPs.  So you have a situation where you get a receive packet, but don't have an endpoint for it.  If you want to be able to create the endpoint, you need the GRH to get the source GID.  Thus, IPoIB always sends the GRH with all packets, so that an endpoint can be created from an arbitrary receive (not just an ARP).

> The
> LID portion of the AV must still be there anyway.  Basically, does this
> code result in IPoIB always sending a GRH with unicast traffic, and why
> must it do this?

It has to do this so that it can create an endpoint from an arbitrary receive, so that a subsequent ARP request/reply matches to the same endpoint.

I suppose things could be changed to work with LID-only, but that's a different change.  Perhaps the rewrite to NDIS 6 will take care of this.

-Fab



More information about the ofw mailing list