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.
♦ 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
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
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
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
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
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
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
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.
♦ 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
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
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
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
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
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
Device Type: PCIe3 4-Port 10GbE SR Adapter
...
Driver Flags: Up Broadcast Simplex
Limbo 64BitSupport ChecksumOffload
DataRateSet IPV6_CSO LARGE_RECEIVE
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
Device Type: PCIe3 4-Port 10GbE SR Adapter
...
Driver Flags: Up Broadcast Simplex
Limbo 64BitSupport ChecksumOffload
LargeSend DataRateSet IPV6_LSO
IPV6_CSO LARGE_RECEIVE
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
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
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"}}]
Was this topic helpful?
Document Information
Modified date:
13 April 2020
UID
ibm16128859