Garrett D'Amore wrote:
> Do we really need to touch the framework for this?  I'm of the opinion 
> that these debugging overrides might better be handled as 
> driver-private tunables ("private properties"), without making the 
> framework aware of them explicitly.
>
> Admittedly, its not that big a deal one way or the other....
>
>    - Garrett
>
> Sebastien Roy wrote:
>> 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
>>
>>
>>   
>
There is a mail thread in opensolaris.org from where came the motivation 
for making these part of dladm.
http://www.opensolaris.org/jive/thread.jspa?threadID=91957&tstart=75

To cite Andrew Gallatin from the thread,
"...in general, I agree there should be some way to change what
stateless offloads are in use at runtime. Solaris is way behind
here. For example, the BSDs do it via ifconfig (to disable
TSO on "mxge0": ifconfig mxge0 -tso), Linux does it via the
horribly cryptic ethtool (to disable TSO on eth2:
ethtool -K eth2 tso off)."

It seems there are a lot of people who want to do this often and making 
them public will make it easier.

-Vasumathi

Reply via email to