I'm sponsoring this fast-track for Vasumathi Sundaram, the timer expires
on 06/15/2009.

         LSO and HW TX Checksum properties in dladm
         ------------------------------------------

1. Summary
----------

This case proposes to add two properties "lso" and "hw_tx_cksum" to
dladm, to allow the LSO and Transmit HW checksum properties of the
driver to be updated on the fly at runtime.

Release binding:
Patch

2. Description
--------------

To ensure the correct operation of any driver that supports LSO and
hardware checksum, it is often required to turn the properties on or
off for debugging. An example will be the nxge driver, that has
different values for the hardware checksum capability to workaround
hardware bugs.

Currently, to enable/disable the Transmit HW checksums and LSO
properties in a driver, the driver's .conf file needs to be updated to
set the capabilities, and the interface has to be unplumbed and
plumbed for the settings to take effect. When the interface is
replumbed, the driver announces its LSO/HW Checksum capabilities to
GLD which is then passed up to its clients.

Since dladm provides more consistent interfaces to set link
properties, LSO and TX HW checksum should be added as link properties
that can be enabled or disabled at runtime without requiring to modify
the driver's .conf file and the unplumb/plumb sequence.

To support this, the command 'dladm show-linkprop' will now display
two additional properties "lso" and "hw_tx_cksum" for each driver.
This is achieved by adding two new MAC properties MAC_PROP_LSO and
MAC_PROP_HCKSUM to the enum mac_prop_id_t in
/usr/src/uts/common/sys/mac.h. These properties will apply to all
datalinks of type DL_ETHER.

Each driver that supports LSO and TX Hardware checksum should include
cases for MAC_PROP_LSO and MAC_PROP_TX_HCKSUM in <driver>_m_setprop()
and <driver>_m_getprop() callback functions to set and get the current
and possible values. dladm will not list these properties for those
drivers that do not support them.  Whenever one of these properties is
enabled or disabled through <driver>_m_setprop(), the driver should
call mac_capab_update (MAC_NOTE_CAPAB_CHG) to initiate capability
renegotiation with upper layers, which prevents the needs for the
unplumb-plumb of the interface.

3. Interface changes
--------------------

|                           Interfaces Exported                           |
|______________________|__________________________|_______________________|
| Interface            |  Classification          |  Comments             |
|______________________|__________________________|_______________________|
|                      |                          |                       |
|  MAC_PROP_LSO        | Consolidation Private    | <sys/mac.h>           |
|  MAC_PROP_HCKSUM     | Consolidation Private    | <sys/mac.h>           |
|  lso                 | Committed                | dladm property name   |
|  hw_tx_cksum         | Committed                | dladm property name   |
|______________________|__________________________|_______________________|


A sample output is as follows:
LINK         PROPERTY        PERMS   VALUE          DEFAULT        POSSIBLE
e1000g0      lso             rw      1              1              1,0
e1000g0      hw_tx_cksum     rw      1              1              1,0



Reply via email to