Peter Memishian Wrote:
This was no accident; the goal was to allow interposing with zero overhead
in the common case where the promiscuous behavior was not needed.
> The mac_txloop function needs the caller's dls_impl_t* ; the driver's
> impl does not.
The fact that mac_txloop() needs that is in itself an architectural issue
with the proposed solution. DLS is just one consumer of the mac;
hardcoding the mac layer to be aware of it is not appropriate.
As I understand Dong-Hai's solution (which hopefully he will discuss
shortly), the DLS layer has its own loopback layer, in addition to the
loopback done at the mac layer. With the DLS loopback layer, it is
straightforward to filter out the sender-side duplicates.
The work I was doing on DLPI loopback is, as Meem said, doing
multi-layer loopbacks, I don't think I have to get into much details
here, cause Mike Ditto told me that he had discussed this issue with
Mark, and Mike's proposal on opensolaris.org has already stated the
design very well.
Simply speaking, yes, with a DLS loopback layer, it's trivial to find
the sender and avoid the unnecessary loopbacks.
Currently we only do this check at DLS layer, in the future (maybe), we
can add code to do it at MAC layer too, of course MAC layer shouldn't
know anything about the internals of DLS, like dls_impl_t. We can
resolve this by, for example, using opaque handles, etc.
Best,
Donghai.
_______________________________________________
networking-discuss mailing list
[email protected]