This case offers a mostly drop-in compatible replacement (and upgrade) for
elxl.  However, there is some impact to driver.conf properties and automatic
media selection, as well as two new driver-specific dladm link properties,
so this case records these changes.  I believe these impacts are unlikely
to negatively affect anyone at all (are folks still using 10BASE2 or
10BASE5?), so I'm filing as self-review.  If anyone wants this to be promoted
to a fast track please let me know.  Only minor binding is being sought at
this time.


Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI
This information is Copyright 2010 Sun Microsystems
1. Introduction
    1.1. Project/Component Working Name:
         Open Source elxl replacement
    1.2. Name of Document Author/Supplier:
         Author:  Garrett D'Amore
    1.3  Date of This Document:
        13 January, 2010
4. Technical Description

Summary
-------

During the review of PSARC 2010/005, which is a withdrawn case that
aimed to EOF the elxl driver, it became apparent that a number of
people are still using these devices, and need a supported driver.

elxl is currently a closed source driver supporting certain legacy ethernet
cards from 3Com.  (The 3c905 line, and a few compatible family members.)
The existing driver is a vanilla GLDv2 driver, and offers none of the
enhancements such as full-MTU VLAN support, suspend/resume, link
notification, or various other features.  It *does* however support some
legacy devices with multiple media options by automatically probing
each media in turn until it finds one that works before settling on the
media.

We have undertaken a complete rewrite of the elxl driver, based on
a port of the Open Source NetBSD ex driver, which we believe resolves
most of the complaints about the current driver.  In particular, the
new driver fully supports GLDv3, full-MTU VLANs, link notification
for twisted pair and 100BASE-X media, suspend & resume, and fast reboot.
(We've also written hardware checksum offload support, but its inclusion
is still subject to test results, and so we are not making it an
official part of this case.  Its just an implementation detail.)  It
also supports link management for 100BASE-TX using the standard dladm
link properties.

It can also much more easily be extended to support additional cardbus
and miniPCI variants in the future, should someone have such devices
and want to add the support.

This case is only seeking Minor binding for this new driver.

Impact
------

Apart from the positive impacts listed above, the new elxl driver
has impact on driver.conf settings.  In particular, the following
driver.conf settings (documented in elxl(7D)) are no longer supported:

        tx_start_thresh
        recv-descriptors
        xmit-descriptors
        min-recv-data-buffers
        max-recv-data-buffers
        inter-frame-space
        full-duplex

Most of the above properties are simply no longer tunable in the new
driver.  (The exception is "full-duplex", which is handled via the
mechanism described below.)

Furthermore, automatic selection of non-twisted-pair media on the
NICs with multiple media options (e.g. 3C900-COMBO, and simlar options)
is no longer supported.  These devices will all default to 100BASE-TX using
autonegotiation (for 100 Mbps models) or 10BASE-T half-duplex (10 Mbps only
models.)

Link mode for 100BASE-TX, 100BASE-T4, and "true" MII devices is handled
via the 802.3 link properties like all other devices.

Selection of alternate media can be performed using the dladm "_media"
device-driver private property.  The setting can be one of

    "mii"       - selects 100BASE-TX, 100BASE-T4, or an external MII port
                  (all these PHYS use MII style register access)
    "tp-hdx"    - selects 10BASE-T in half-duplex mode (10Mbps models only)
    "tp-fdx"    - selects 10BASE-T in full-duplex mode (10Mbps models only)
    "aui"       - selects the AUI interface (10BASE5) if present
    "bnc"       - selects the BNC interface (10BASE2) if present
    "fx-hdx"    - selects 100BASE-FX in half-duplex if available
    "fx-fdx"    - selects 100BASE-FX in full-duplex if available
    "fl-hdx"    - selects 10BASE-FL in half-duplex mode if available
    "fl-fdx"    - selects 10BASE-FL in full-duplex mode if available

For most models, the default (and usually the only option) will be "mii".
The "tp-hdx" and "tp-fdx" are used only on models that support 10Mbps
twisted pair without any autonegotiation.  The default setting on
100BASE-FX models will be "fx-fdx" (full-duplex).  All other 10Mbps only
devices will default to half-duplex.

We also provide a new property, "_available_media", which lists the
possible options for the media separated by commas.  For example, on a
3C900-COMBO card, the value of _available_media is "tp-hdx,tp-fdx,aui,bnc".
(Note that this property will likely be removed in the future, when
the MAC_PROP_POSSIBLE interface is properly supported in the MAC layer
for private properties.  The current implementation only supports integer
properties such as MTU.  In any event, we do not intend to document the
_available_media property.)


INTERFACES
----------

Imported Interfaces
GLDv3 and descendents   Consolidation Private*

        * Note: the GLDv3 interfaces are in the process of being
          upgraded to Committed.  When this happens, we will switch
          to using the Commmitted interfaces.

Exported Interfaces
elxl                    Committed       Device driver name.
_media                  Uncommitted     Both property name and values.
_available_media        Uncommitted     Undocumented, expected to be removed.
legacy properties       REMOVED         No more driver.conf tunables
automatic media select  REMOVED         Undocumented semantic, to be removed.

6. Resources and Schedule
    6.4. Steering Committee requested information
        6.4.1. Consolidation C-team Name:
                ON
    6.5. ARC review type: Automatic
    6.6. ARC Exposure: open

Reply via email to