Sebastien Roy wrote:
> I'm in the process of writing the PSARC fast-track which will update UV
> given the fast-path and code-review developments, and there is one thing
> sticks out at me while writing it. I think it would be addressed with a
> very minor update to the code (which I could do within minutes if need be.)
>
> The issue is that we have a new m_dev field in mac_register_t which only
> the sofmac module can fill in. This is awkward to me since we now have a
> project-private field in a (to-be) public structure. We also have a
> project-private MAC_CAPAB_LEGACY MAC capability which was designed to
> return information specific to softmac. It would seem entirely
> appropriate to me to return this dev_t as part of the capability data for
> this capability.
>
> Thoughts?
This is what I have so far. Have I missed anything? Note that I
included my suggestion above in section 2.2, but let me know if there are
objections to this.
An additional question from me is, does the removal of the fast-path also
necessitate the removal of MAC_CAPAB_MDT? I was under the impression
that we could still make use of MAC_CAPAB_MDT without a fast-path, yet it
was ripped out of clearview-uv along with the fast-path.
Also, we obviously won't be filing anything until we have satisfactory
performance results from both the non-fast-path and new-fast-path code.
1. Summary
This case comprises pre-integration updates to Clearview Nemo
Unification and Vanity Naming, currently described in the following
PSARC cases:
2006/499 Clearview Nemo unification and vanity naming
2007/527 Addendum for Clearview Vanity Naming and Nemo Unification
2. Details
2.1 Removal of Data Fast-Path for Softmac
In the design described in 2006/499, the softmac kernel module is
responsible for representing "legacy" DLPI devices to the Nemo
framework, and ensuring that data packets flow properly between DLPI
streams above Nemo and the "legacy" drivers underneath. This called
for a fast-path between upper DLPI streams and lower "legacy" drivers,
implemented by having the softmac module open a stream to the
underlying driver for each upper stream above Nemo, and linking these
streams to bypass Nemo entirely. The fast-path is referred to as the
"perstream" past-path in the design document.
This fast-path has been removed in the final phases of development.
For the initial UV putback, data packets will flow through the Nemo
framework as with any other Nemo driver.
The result is that the following interfaces will _not_ be delivered by
the UV putback as initially specified by the stated PSARC cases:
* MAC_CAPAB_TX_LOOPBACK (2006/499, Project Private)
* MAC_CAPAB_PUTNEXT_TX (2006/499, Project Private)
* MAC_CAPAB_MDT (2006/499, Project Private) XXX
* MAC_CAPAB_PERSTREAM (2006/499, Project Private)
* mac_perstream_open() and mac_perstream_close() (2006/499, Project
Private)
* MAC_CAPAB_NO_NATIVEVLAN (2007/527, Consolidation Private)
2.2 MAC_CAPAB_LEGACY MAC Capability (Project Private)
This capability replaces MAC_CAPAB_NOLINK_UPDATE defined in 2006/499,
and provides additional information. The data for this capability is
a pointer to the following structure:
typedef struct mac_capab_legacy_s {
dev_t mcl_dev;
uint32_t mcl_unsup_note;
} mac_capab_legacy_t;
The ml_dev field is set to the dev_t of the underlying "legacy"
device. This is used by the mac module to force the underlying device
to attach when a MAC client calls mac_open().
The ml_unsup_notif field is a bitfield of MAC capabilities. Certain
"legacy" devices under softmac may not support the DLPI notifications
needed for softmac to provide all MAC notifications to the Nemo
framework. The softmac module fills in this field with the set of MAC
notifications that are not supported by the given softmac instance.
-Seb