IBM Support

Why adding adapter to etherchannel fails with error "ethchan_config: 0950-022 Unable to add adapter because it does not support the same capabilities as the EtherChannel"?

Question & Answer


Question

When ethernet adapter is added as primary adapter or backup adapter to etherchannel using ethchan_config command, why it fails with error "ethchan_config: 0950-022 Unable to add adapter to the EtherChannel because it does not support the same capabilities as the EtherChannel, errno = 1"?

Cause

Etherchannel supports the intersection of the all the capabilities supported by its underlying adapters including backup. When adapter is added to an etherchannel, it must support all the capabilities supported by the etherchannel. Adding an adapter fails due to mismatch in the capabilities.

Answer

When etherchannel is configured it checks following 5 capabilities of underlying primary and backup adapters and finds intersection of the these 5 capabilities supported by all adapters and use that for the etherchannel adapter.
1. ChecksumOffload
2. LargeSend
3. IPV6_LSO
4. IPV6_CSO
5. PSEG
Note: PSEG (Private Segment Buffers) is no longer used by PCIe2 and PCIe3 adapters so it is excluded from the discussion.
When a new adapter is added to the etherchannel, it must have capabilities of the etherchannel. If it does not have then adding an adapter fails due to mismatch in driver capabilities.
The following 2 examples explain how capabilities are used in creating etherchannel and adding adapter.
image-20200408144153-2
♦ Example 1
ent12 (10 Gb Ethernet Adapter) has chksum_offload, large_send and ipv6_offload set to yes.
ent13 (10 Gb Ethernet Adapter) has chksum_offload, ipv6_offload set to yes and large_send set to no.
The capabilities of  ent12 and ent13 are listed by entstat as shown below in red.
# entstat -d ent12
ETHERNET STATISTICS (ent12) :
Device Type: PCIe3 4-Port 10GbE SR Adapter
...
Driver Flags: Up Broadcast Simplex
        Limbo AlternateAddress 64BitSupport
        ChecksumOffload LargeSend DataRateSet
        IPV6_LSO IPV6_CSO LARGE_RECEIVE
# entstat -d ent13
ETHERNET STATISTICS (ent13) :
Device Type: PCIe3 4-Port 10GbE SR Adapter
...
Driver Flags: Up Broadcast Simplex
        Limbo 64BitSupport ChecksumOffload
        DataRateSet IPV6_CSO LARGE_RECEIVE
Capabilities of ent12 - (ChecksumOffload, LargeSend, IPV6_LSO, IPV6_CSO)
Capabilities of ent13 - (ChecksumOffload, IPV6_CSO)
Intersection of capabilities - (ChecksumOffload, IPV6_CSO)
► Create a etherchannel using ent12 and ent13 as primary adapter and no backup adapter.
# lsattr -El ent16
adapter_names       ent12,ent13             EtherChannel Adapters
alt_addr                     0x000000000000 Alternate EtherChannel Address 
auto_recovery          yes                              Enable automatic recovery after failover
backup_adapter      NONE                         Adapters to use when the primary channel fails
hash_mode               default                      Determines how outgoing adapter is chosen
interval                       long                            Determines interval value for IEEE 802.3ad mode
mode                          8023ad                     EtherChannel mode of operation
netaddr                      0                                  Address to ping 
noloss_failover         yes                             Enable lossless failover after ping failure
num_retries              3                                 Times to retry ping before failing 
retry_time                  1                                 Wait time (in seconds) between pings
use_alt_addr             no                               Enable Alternate EtherChannel Address
use_jumbo_frame   no                               Enable Gigabit Ethernet Jumbo Frames
The etherchannel ent16 uses intersection of the capabilities of ent12 and ent13. The capabilities of ent16 are (ChecksumOffload, IPV6_CSO). They are listed by entstat as shown below in green.
# entstat -d ent16
Device Type: IEEE 802.3ad Link Aggregation
...
Driver Flags: Up Broadcast Simplex
        Limbo 64BitSupport ChecksumOffload
        DataRateSet ETHERCHANNEL IPV6_CSO
► Run ethchan_config to add ent14 as backup adapter to etherchannel ent16.
The ent14 has large_send and chksum_offload set to yes and ipv6_offload set to no.
The capabilities of ent14 are (ChecksumOffload, LargeSend). They are listed by entstat as shown below in red.
# entstat -d ent14
ETHERNET STATISTICS (ent14) :
Device Type: PCIe3 4-Port 10GbE SR Adapter
...
Driver Flags: Up Broadcast Simplex
        Limbo 64BitSupport ChecksumOffload
        LargeSend DataRateSet LARGE_RECEIVE
# /usr/lib/methods/ethchan_config -a -b ent16 ent14
ethchan_config: 0950-022 Unable to add adapter ent14 to the EtherChannel because it does not support the same capabilities as the EtherChannel, errno = 1
Note: same error occurs if ent14 is added as primary adapter.
ethchan_config fails to add because IPV6_CSO capability is set on ent16 but not on ent14. The ipv6_offload needs to be enabled ent14.
► Change ipv6_offload of ent14 from no to yes.
# chdev -l ent14 -a ipv6_offload=yes
The capabilities of ent14 are (ChecksumOffload, LargeSend, IPV6_LSO, IPV6_CSO). They are listed by entstat as shown below in red.
# entstat -d ent14
ETHERNET STATISTICS (ent14) :
Device Type: PCIe3 4-Port 10GbE SR Adapter
...
Driver Flags: Up Broadcast Simplex
        Limbo 64BitSupport ChecksumOffload
        LargeSend
DataRateSet IPV6_LSO
        IPV6_CSO
LARGE_RECEIVE
► Run ethchan_config to add ent14 as backup adapter to etherchannel ent16.
#  /usr/lib/methods/ethchan_config -a -b ent16 ent14
ethchan_config successfully added ent14 as backup adapter as shown in lsattr output below. This time it gets added successfully because ChecksumOffload and IPV6_CSO are part of both ent14 and ent16.
# lsattr -El ent16
adapter_names       ent12,ent13               EtherChannel Adapters
alt_addr                     0x000000000000   Alternate EtherChannel Address 
auto_recovery          yes                               Enable automatic recovery after failover
backup_adapter      ent14                           Adapters to use when the primary channel fails
hash_mode               default                        Determines how outgoing adapter is chosen
interval                       long                             Determines interval value for IEEE 802.3ad mode
mode                          8023ad                       EtherChannel mode of operation
netaddr                      0                                   Address to ping 
noloss_failover         yes                              Enable lossless failover after ping failure
num_retries              3                                  Times to retry ping before failing 
retry_time                  1                                  Wait time (in seconds) between pings
use_alt_addr             no                                Enable Alternate EtherChannel Address
use_jumbo_frame   no                                Enable Gigabit Ethernet Jumbo Frames
Note:  ent14 can be also successfully added as primary adapter.
image-20200408144041-2
♦ Example 2
The etherchannel ent16 is configured using ent12 and ent13 as primary adapter and ent14 as backup adapter.
Capabilities of ent12 - (ChecksumOffload, LargeSend, IPV6_LSO, IPV6_CSO)
Capabilities of ent13 - (ChecksumOffload, LargeSend, IPV6_LSO, IPV6_CSO)
Capabilities of ent14 - (ChecksumOffload, LargeSend, IPV6_LSO, IPV6_CSO)
Intersection of ent12, ent13 and ent14's capabilities - (ChecksumOffload, LargeSend, IPV6_LSO, IPV6_CSO)
# lsattr -El ent16
adapter_names       ent12,ent13               EtherChannel Adapters
alt_addr                     0x000000000000   Alternate EtherChannel Address 
auto_recovery          yes                                Enable automatic recovery after failover
backup_adapter      ent14                           Adapters to use when the primary channel fails
hash_mode              default                         Determines how outgoing adapter is chosen
interval                       long                             Determines interval value for IEEE 802.3ad mode
mode                          standard                     EtherChannel mode of operation
netaddr                      0                                   Address to ping 
noloss_failover         yes                              Enable lossless failover after ping failure
num_retries               3                                 Times to retry ping before failing 
retry_time                   1                                 Wait time (in seconds) between pings
use_alt_addr              no                               Enable Alternate EtherChannel Address
use_jumbo_frame    no                               Enable Gigabit Ethernet Jumbo Frames
The capabilities of  ent12, ent13, ent14 are listed by entstat as shown below in red. The etherchannel ent16 uses intersection of the capabilities of ent12, ent13 and ent14. The capabilities of ent16 are (ChecksumOffload, LargeSend, IPV6_LSO, IPV6_CSO). They are listed by entstat as shown below in green.
# entstat -d ent16
Device Type: EtherChannel
...
ETHERNET STATISTICS (ent16) :
Device Type: PCIe3 4-Port 10GbE SR Adapter
...
Driver Flags: Up Broadcast Simplex
        Limbo 64BitSupport ChecksumOffload
        LargeSend
DataRateSet ETHERCHANNEL
        IPV6_LSO IPV6_CSO
...
=============================================================
                     PRIMARY ADAPTERS
=============================================================
ETHERNET STATISTICS (ent12) :
Device Type: PCIe3 4-Port 10GbE SR Adapter
...
Driver Flags: Up Broadcast Simplex
        Limbo AlternateAddress 64BitSupport
        ChecksumOffload LargeSend DataRateSet
        IPV6_LSO IPV6_CSO LARGE_RECEIVE
        ECHAN_ELEM
...
ETHERNET STATISTICS (ent13) :
Device Type: PCIe3 4-Port 10GbE SR Adapter
...
Driver Flags: Up Broadcast Simplex
        Limbo AlternateAddress 64BitSupport
        ChecksumOffload LargeSend DataRateSet
        IPV6_LSO IPV6_CSO LARGE_RECEIVE
        ECHAN_ELEM
=============================================================
                      BACKUP ADAPTERS
=============================================================
ETHERNET STATISTICS (ent14) :
Device Type: PCIe3 4-Port 10GbE SR Adapter
...
Driver Flags: Up Broadcast Simplex
        Limbo AlternateAddress 64BitSupport
        ChecksumOffload LargeSend DataRateSet
        IPV6_LSO IPV6_CSO LARGE_RECEIVE
        ECHAN_ELEM
...
► Run ethchan_config to add ent15 as primary adapter to etherchannel ent16.
The capabilities of ent15 are listed by entstat as shown below in red.
# entstat -d ent15
ETHERNET STATISTICS (ent15) :
Device Type: PCIe3 4-Port 10GbE SR Adapter
...
Driver Flags: Up Broadcast Simplex
        Limbo 64BitSupport ChecksumOffload
        DataRateSet IPV6_CSO LARGE_RECEIVE
Capabilities of ent15 - (ChecksumOffload, IPV6_CSO)
# /usr/lib/methods/ethchan_config -a ent16 ent15
ethchan_config: 0950-022 Unable to add adapter ent15 to the EtherChannel because it does not support the same capabilities as the EtherChannel, errno = 1
ethchan_config fails to add because LargeSend and IPV6_LSO capabilities are set on ent16 but not on ent15. The largesend needs to be enabled on ent15.
► Change large_send on ent15 from no to yes
# chdev -l ent15 -a large_send=yes
The capabilities of ent15 are listed by entstat as shown below in red.
# entstat -d ent15
ETHERNET STATISTICS (ent15) :
Device Type: PCIe3 4-Port 10GbE SR Adapter
...
Driver Flags: Up Broadcast Simplex
        Limbo 64BitSupport ChecksumOffload
        LargeSend
DataRateSet IPV6_LSO
        IPV6_CSO
LARGE_RECEIVE
Capabilities of ent15 - (ChecksumOffload, LargeSend, IPV6_LSO, IPV6_CSO)
# /usr/lib/methods/ethchan_config -a ent16 ent15
ethchan_config successfully added ent15 as primary adapter as shown in lsattr output below. This time it gets added successfully because ChecksumOffload, LargeSend, IPV6_LSO and IPV6_CSO capabilities are part of both ent15 and ent16.
# lsattr -El ent16
adapter_names        ent12,ent13,ent15  EtherChannel Adapters
alt_addr                      0x000000000000   Alternate EtherChannel Address 
auto_recovery          yes                                Enable automatic recovery after failover
backup_adapter       ent14                           Adapters to use when the primary channel fails
hash_mode               default                         Determines how outgoing adapter is chosen
interval                        long                             Determines interval value for IEEE 802.3ad mode
mode                           standard                     EtherChannel mode of operation
netaddr                       0                                   Address to ping 
noloss_failover          yes                               Enable lossless failover after ping failure
num_retries               3                                   Times to retry ping before failing 
retry_time                   1                                   Wait time (in seconds) between pings
use_alt_addr              no                                Enable Alternate EtherChannel Address
use_jumbo_frame    no                                Enable Gigabit Ethernet Jumbo Frames
Note: ent15 can be also successfully added as backup adapter.
Author: Darshan Patel
Operating System: AIX and VIOS
Hardware: Power
Feedback:
aix_feedback@wwpdl.vnet.ibm.com

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SWG10","label":"AIX"},"ARM Category":[{"code":"a8m50000000L0ToAAK","label":"Networking->TCP Kernel->Network adapters"}],"ARM Case Number":"TS003458161","Platform":[{"code":"PF002","label":"AIX"}],"Version":"All Versions","Edition":"","Line of Business":{"code":"LOB08","label":"Cognitive Systems"}}]

Document Information

Modified date:
13 April 2020

UID

ibm16128859