Sowmini.Varadhan at Sun.COM wrote:
>   http://opensolaris.org/os/project/brussels/files/brussels.pdf

Excellent document.  My comments are based on version 0.2.


General:

* It would be good to note in the document title that this is a design 
document.


Section 2.1:

* The description of "Well-known" property is very confusing to me.  How 
can such properties (you list link speed and auto-neg as examples) be 
expected to occur in every driver if the properties are only inherent to 
specific media types?  Also, how can they be expected to occur in every 
driver if the callbacks described in section 3.1 are optional (see my 
comments regarding section 3.1)?  Maybe the word "expected" threw me off, 
as I interpret that as meaning that any driver that doesn't implement 
public properties is not behaving as "expected", which is clearly not true.


Section 3:

* Some details are needed regarding when it is valid to set a property's 
value.  We've had discussions before about potential problem with 
modifying some properties after a driver has attached.  Have these issues 
been worked out?  If so, is there nothing to note regarding that in the 
design document?

* I don't see any interface documented here providing support for kernel 
components to get or set link properties.  Is one being provided?  I hint 
at the need for one in my comments on section A.1.2.


Section 3.1:

* Although it's implied by the existence of the MC_SETPROP and MC_GETPROP 
flags, it would be good to explicitly point out that these two callbacks 
are optional.  I'm guessing that this was the intent anyway.


* I don't see any details here regarding how the framework discovers the 
list of supported properties or how the driver supplies its initial 
values for properties during attach.  Maybe none is needed?

Section 3.2:

* In the first PP, the phrase, "the {set, reset, show}-linkprop commands 
will be extended as described [8] for devices." is ambiguous in my mind. 
  What is a "device"?  Do you mean "physical device"?  Does this mean 
that one can't use this framework for aggregation MACs, or VLANs, or IP 
tunnel interfaces (as will be introduced by Clearview)?  Please clarify 
in the document.

* The strange difference in naming convention between the GET/SET ioctls 
isn't explained.


Section 3.2.1:

* The set of property attributes listed (1-5) here seem like they're 
somewhat in a vacuum.  Where do these attributes live?  Are these things 
that each driver tells the framework about using some other mac module 
function?  Some clarification is needed.

* Is the dld_ioc_prop_val_t used for both the GET and the SET ioctls?

* I'm confused by the description of DLD_PROP_PRIVATE here.  You say that 
dladm passes down that value for "dld_pr_num", but so far, there's no 
description of how "dld_pr_num" belongs to any data structure that gets 
passed around between user and kernel space.  Do you mean "pr_num"? 
What's the relationship between "dld_pr_num" and "pr_num"?


Section 3.2.3:

* I think this sub-section needs to be expanded a bit.  Are all public 
properties listed in "show-linkprop" output for every class of link? 
Are some of these properties' values printed in the "show-link" output as 
well?  What should dladm "show-linkprop" and "show-link" output look like 
for links that don't support all or some public properties?


Section 3.2.4:

* Nit: s/colescing/coalescing/


Section A.1:

* All of these (except for MTU) are very Ethernet specific.  How can the 
MAC-type plugin architecture be leveraged to provide a separate set of 
"public" properties for different link types?


Section A.1.2:

* A lot more detail is needed for the MTU property.  What happens when 
this property is modified on the fly?  A DL_NOTE_SDU_SIZE needs to make 
its way up to interested DLPI consumers, and that's not detailed here.

Also, the max and min sdu are currently immutable values in mac_info_t. 
If MTU is now a variable thing, then max sdu (and maybe also min sdu for 
consistency) needs to be yanked out of mac_info_t.  Other layers 
interested in obtaining the max and min sdu would now need to stop 
peeking at the mac_info_t, and instead use some kernel API in mac or dls. 
  I don't see such an interface proposed in this doc.

Another issue is; if all of these properties are optional from the 
driver's point of view, how is an administrator going to react to a link 
which does not appear to have an "mtu" property in its show-linkprop 
output (for example)?  Clearly, every link has an MTU regardless of which 
properties the driver wishes to implement, if any.

The concept of MTU (or max SDU) exists in the GLDv3 framework regardless 
of whether the driver supports having its "default" MTU modified.  Going 
a step further, it might be possible to lower the MTU of a given link 
within the framework without involvement of the driver.  In any case, 
even if modification of MTU isn't implemented, it doesn't seem to me that 
reporting the MTU of a link should depend on an underlying driver's 
capability to implement the get/setprop callbacks.  It's possible that 
there are other properties like that which are inherent to datalink 
interfaces and not to any particular driver.


Section A.2:

* Project scoping nit: It might be worth noting here that these 
properties will be implemented by the Clearview IP tunneling device 
driver, which is still under development, and that they're not part of 
the Brussels project.


Section A.3:

* Same here with reference to the Crossbow project.


-Seb

Reply via email to