[openib-general] [RFC] [PATCH 2/7] ib_multicast 2.6.20: add ib_multicast module to track join requests from the same port
Eitan Zahavi
eitan at mellanox.co.il
Thu Oct 12 00:03:32 PDT 2006
Sean Hefty wrote:
> Eitan Zahavi wrote:
>
>> So if it is then there is no problem sniffing it and refcounting.
>>
>
> The MADs cannot simply be sniffed and counted. MADs which affect the same
> multicast group should not always be sent. Join operations must be serialized
> against leave operations, especially when the join/leave parameters differ.
>
But you did all that extra work in ib_multicast. You just need to attach
it to EVERY SubnAdmin Set or Delete of MCMemberRecord.
So the argument it is complicated does not mean you need to make it with
a hole in it. The hold being the fact anybody can bypass it and the
ref-counting will be broken. What is the point in providing the client
the illusion of safety if eventually it does not work?
> A join operation to an existing group may not result in a MAD being sent, so no
> response from the SA is available. The act of joining or leaving a multicast
> group is distinct from sending a MAD. The appearance of a MAD on the wire is
> not always necessary.
>
> Consider that pushing this functionality down into the MAD layer also results in
> pushing the related ib_sa functionality into the ib_mad module as well.
>
I disagree. If you sniff at the MAD level you can simply react to the
lower level messages.
>
>> And there are other kernel level ULPs that use that IB_SA code and
>> bypass ib_multicast
>>
>
> There are no in tree users, which is my primary concern at the moment. The
> ib_sa API still exists for out of tree users, but they will as broken as they
> are today.
>
Consider gcc was asking to support only the code that is in some
distribution. You build a broken architecture (one that fails to provide
the functionality under all conditions) and hide behind not knowing the
code that will break it.
>
>> Changing top API for ULPs and Clients is simpler to implement but
>> provide wrong tradeoff for functionality that can be implemented under
>> the hood - not burdening the rest of the world with a constant flux of
>> API changes.
>>
>
> I'm more concerned about getting the right API than trying to fit something into
> an existing API just because its there. My proposal is to have the following
> layers:
>
> ib_mad - sends and receives MADs on QP0/1
> ib_sa - sends and receives MADs to the SA
> ib_multicast - manages multicast joins
>
> The alternative proposal I keep hearing is to combine these 3 layers under the
> existing ib_mad API. However, the behavior of that API will change.
>
My proposal is of building a pluggable module that is below the ib_mad
that tracks SubnAdmin.Set/Delete.MCMemberRecord and reacts accordingly:
ib_mad <-> ib_multicast
ib_sa
> - Sean
>
> _______________________________________________
> openib-general mailing list
> openib-general at openib.org
> http://openib.org/mailman/listinfo/openib-general
>
> To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
>
More information about the general
mailing list