OpenSolaris

Printable Version Enter a New Search
Bug ID 6723890
Synopsis ndd interface donesn't report properties' read/write capacities correctly after CR 6667363
State 10-Fix Delivered (Fix available in build)
Category:Subcategory kernel:tcp-ip
Keywords
Responsible Engineer Vasumathi Sundaram
Reported Against
Duplicate Of
Introduced In solaris_nevada
Commit to Fix snv_104
Fixed In snv_104
Release Fixed solaris_nevada(snv_104)
Related Bugs 6667363 , 6743378 , 6767376 , 6768975
Submit Date 9-July-2008
Last Update Date 4-December-2008
Description
After the putback of CR 6667363 ndd ioctl logic can be handled in the GLDv3 layers in onnv build 90, nge ndd doesn't report adv_1000hdx_cap read/write capacity correctly.

bash-3.2# ndd -get /dev/nge1 ?
WARNING: The ndd commands for datalink administration are obsolete and may be removed in a future release of Solaris. Use dladm(1M) to manage datalink tunables.
?                             (read only)
adv_autoneg_cap               (read and write)
adv_1000fdx_cap               (read and write)
adv_1000hdx_cap               (read and write)
adv_100fdx_cap                (read and write)
adv_100hdx_cap                (read and write)
adv_10fdx_cap                 (read and write)
adv_10hdx_cap                 (read and write)
adv_100T4_cap                 (read only)
link_status                   (read only)
link_speed                    (read only)
link_duplex                   (read only)
autoneg_cap                   (read only)
pause_cap                     (read only)
asym_pause_cap                (read only)
1000fdx_cap                   (read only)
1000hdx_cap                   (read only)
100T4_cap                     (read only)
100fdx_cap                    (read only)
100hdx_cap                    (read only)
10fdx_cap                     (read only)
10hdx_cap                     (read only)
lp_autoneg_cap                (read only)
lp_pause_cap                  (read only)
lp_asym_pause_cap             (read only)
lp_1000hdx_cap                (read only)
lp_1000fdx_cap                (read only)
lp_100T4_cap                  (read only)
lp_100fdx_cap                 (read only)
lp_100hdx_cap                 (read only)
lp_10fdx_cap                  (read only)
lp_10hdx_cap                  (read only)
link_autoneg                  (read only)
tx_bcopy_threshold            (read and write)
rx_bcopy_threshold            (read and write)
recv_max_packet               (read and write)
poll_quiet_time               (read and write)
poll_busy_time                (read and write)
rx_intr_hwater                (read and write)
rx_intr_lwater                (read and write)
adv_pause_cap                 (read and write)
adv_asym_pause_cap            (read and write)
tx_n_intr                     (read and write)

nge_m_setprop() in nge_main.c and nge_m_getprop()
show that it's a read-only property
1581                 case MAC_PROP_ADV_1000FDX_CAP:
1582                 case MAC_PROP_ADV_1000HDX_CAP:
1583                 case MAC_PROP_ADV_100FDX_CAP:
1584                 case MAC_PROP_ADV_100HDX_CAP:
1585                 case MAC_PROP_ADV_10FDX_CAP:
1586                 case MAC_PROP_ADV_10HDX_CAP:
1587                 case MAC_PROP_STATUS:
1588                 case MAC_PROP_SPEED:
1589                 case MAC_PROP_DUPLEX:
1590                 case MAC_PROP_EN_1000HDX_CAP:
1591                         err = ENOTSUP; /* read-only prop. Can't set this */
1592                         break;

1818                 case MAC_PROP_ADV_1000HDX_CAP:
1819                         if (is_default) {
1820                                 *(uint8_t *)pr_val = 0;
1821                         } else {
1822                                 *(uint8_t *)pr_val = ngep->param_adv_1000hdx;
1823                         }
1824                         break;
1825                 case MAC_PROP_EN_1000HDX_CAP:
1826                         if (is_default) {
1827                                 *(uint8_t *)pr_val = 0;
1828                         } else {
1829                                 *(uint8_t *)pr_val = ngep->param_en_1000hdx;
1830                         }
1831                         break;

The issue is that Brussels interface should extract these information from drivers to ndd. Further concern is that if a Fast Ethernet driver migrates to Brussels, showing their 1000fdx/hdx write capacities is explicit not proper.
Work Around
N/A
Comments
N/A