OpenSolaris

Printable Version Enter a New Search
Bug ID 6565373
Synopsis driver ndd parameter behavior does not match the ieee802.3(5) man page.
State 10-Fix Delivered (Fix available in build)
Category:Subcategory kernel:tcp-ip
Keywords brussels
Responsible Engineer Sowmini Varadhan
Reported Against
Duplicate Of
Introduced In
Commit to Fix snv_83
Fixed In snv_83
Release Fixed solaris_nevada(snv_83)
Related Bugs 6355253 , 6472255 , 6655896 , 6674402 , 6688688 , 6718068 , 6727965 , 6740062 , 5013979
Submit Date 4-June-2007
Last Update Date 13-February-2008
Description
The ieee802.3(5) man page (see "man ieee802.3") documents various statistics and
configuration parameters that may be used ot monitor and configure the Ethernet
physical layer.

Unfortunately these parameters are not uniformly implemented across drivers
causing a lot of confusion to customers. 

For example, some drivers use "link_mode" while others use "link_duplex". 
Some nics use link_mode 0=hdx 1=fdx, others use link_duplex 1=hdx 2=fdx.

Most drivers implement the ndd parameter "adv_autoneg_cap" even though the 
ieee802.3 man page documents this as adv_cap_autoneg.

Since ndd syntax is Unstable by definition, we should get the code to conform 
to the man page in the Nevada release.
The situation with flow control also exemplifies the mess that exists in the
ieee802.3(5) man page:

Drivers implements flowcontrol differently, mostly in below categories:
1. Using a "flowcontrl" in driver.conf, like bnx, e1000g, and some outside
    drivers
    Typically, like this:
    FlowControl=3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3;
         # 0:  Flow control is completely disabled
         # 1:  Rx flow control is enabled (we can receive pause frames
         #     but not send pause frames).
         # 2:  Tx flow control is enabled (we can send pause frames
         #     but we do not receiving pause frames).
         # 3:  Both Rx and TX flow control (symmetric) is enabled.
         # 4:  No software override.  The flow control configuration
         #     in the EEPROM is used.

2. Using ndd to tune adv_cap_asmpause and adv_cap_pause,
    like bge/nge/rge etc.  For example,
    ndd -set /dev/bge0 adv_cap_asmpause 1

Why it mess:
Different driver's using different ways, sometimes driver.conf
and sometimes ndd. Even using ndd, the same parameters are possibly
different, some uses adv_cap_asmpause and some adv_cap_asym_pause.
User are completely confused by this and make pause setting tricky.

here's what is available on a few commonly encountered drivers:

 ieee802.3(5)            bge               e1000g               nge

pause_cap           pause_cap          pause_cap           pause_cap
adv_asmpause_cap    adv_asym_pause_cap adv_asym_pause_cap  adv_asym_pause_cap
asmpause_cap        asym_pause_cap     asym_pause_cap      asym_pause_cap
adv_pause_cap       adv_pause_cap      adv_pause_cap       adv_pause_cap
lp_pause_cap        lp_pause_cap       lp_pause_cap        lp_pause_cap
lp_asmpause_cap     lp_asym_pause_cap  lp_asym_pause_cap   lp_asym_pause_cap
link_rx_pause       link_rx_pause      --                  link_rx_pause
link_tx_pause       link_tx_pause      --                  link_tx_pause
link_pause          --                 --                   --
link_asmpause       --                 --                   --
Work Around
N/A
Comments
N/A