Skip to content

resolve bond master from slave MAC when hbond=True - #3134

Open
vaishnavibhat wants to merge 1 commit into
avocado-framework-tests:masterfrom
vaishnavibhat:hnv_mac
Open

resolve bond master from slave MAC when hbond=True#3134
vaishnavibhat wants to merge 1 commit into
avocado-framework-tests:masterfrom
vaishnavibhat:hnv_mac

Conversation

@vaishnavibhat

@vaishnavibhat vaishnavibhat commented Apr 15, 2026

Copy link
Copy Markdown
Contributor
  • When interface is specified as a MAC address and hbond=True,

get_interface_by_hwaddr() may return the bond master instead of
the slave because active-backup bonding makes the master inherit
the primary slave's MAC address.

Use NetworkInterface.is_bond() to detect this: if the returned
interface is already the bond master, use it directly; otherwise
it is a slave, and get_bond_master() is called to walk up to the
bond master via /sys/class/net//master.

  • Fixed all pycodestyle issues.

@vaishnavibhat

Copy link
Copy Markdown
Contributor Author

Depends on :
avocado-framework/avocado#6201

@Naresh-ibm Naresh-ibm self-assigned this Apr 22, 2026
@Naresh-ibm

Copy link
Copy Markdown
Collaborator

@vaishnavibhat can you please add the runs logs from both sles and rhel versions?

@Naresh-ibm Naresh-ibm left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Need the run logs

@Naresh-ibm

Copy link
Copy Markdown
Collaborator

@vaishnavibhat how it is different from #3043
if doing same functionality, then can we wrap in one commit?

@vaishnavibhat vaishnavibhat changed the title detect the bond master from slave mac resolve bond master from slave MAC when hbond=True Aug 25, 2026
@vaishnavibhat

vaishnavibhat commented Aug 25, 2026

Copy link
Copy Markdown
Contributor Author

RHEL runs :

avocado run network_test.py -m network_test.py.data/network_test_virt_net.yaml --max-parallel-tasks=1
JOB ID : 7041919dd5adcfb1ecc8660b40ecc981c4504d2c
JOB LOG : /root/avocado-fvt-wrapper/results/job-2026-08-25T07.07-7041919/job.log
(01/24) network_test.py:NetworkTest.test_gro;run-mtu-1500-e54b: STARTED
(01/24) network_test.py:NetworkTest.test_gro;run-mtu-1500-e54b: PASS (5.36 s)
(02/24) network_test.py:NetworkTest.test_gro;run-mtu-9000-19fc: STARTED
(02/24) network_test.py:NetworkTest.test_gro;run-mtu-9000-19fc: PASS (16.03 s)
(03/24) network_test.py:NetworkTest.test_gso;run-mtu-1500-e54b: STARTED
(03/24) network_test.py:NetworkTest.test_gso;run-mtu-1500-e54b: PASS (5.20 s)
(04/24) network_test.py:NetworkTest.test_gso;run-mtu-9000-19fc: STARTED
(04/24) network_test.py:NetworkTest.test_gso;run-mtu-9000-19fc: PASS (16.67 s)
(05/24) network_test.py:NetworkTest.test_lro;run-mtu-1500-e54b: STARTED
(05/24) network_test.py:NetworkTest.test_lro;run-mtu-1500-e54b: PASS (5.14 s)
(06/24) network_test.py:NetworkTest.test_lro;run-mtu-9000-19fc: STARTED
(06/24) network_test.py:NetworkTest.test_lro;run-mtu-9000-19fc: PASS (15.49 s)
(07/24) network_test.py:NetworkTest.test_tso;run-mtu-1500-e54b: STARTED
(07/24) network_test.py:NetworkTest.test_tso;run-mtu-1500-e54b: PASS (5.08 s)
(08/24) network_test.py:NetworkTest.test_tso;run-mtu-9000-19fc: STARTED
(08/24) network_test.py:NetworkTest.test_tso;run-mtu-9000-19fc: PASS (15.67 s)
(09/24) network_test.py:NetworkTest.test_ping;run-mtu-1500-e54b: STARTED
(09/24) network_test.py:NetworkTest.test_ping;run-mtu-1500-e54b: PASS (14.43 s)
(10/24) network_test.py:NetworkTest.test_ping;run-mtu-9000-19fc: STARTED
(10/24) network_test.py:NetworkTest.test_ping;run-mtu-9000-19fc: PASS (24.73 s)
(11/24) network_test.py:NetworkTest.test_floodping;run-mtu-1500-e54b: STARTED
(11/24) network_test.py:NetworkTest.test_floodping;run-mtu-1500-e54b: PASS (5.07 s)
(12/24) network_test.py:NetworkTest.test_floodping;run-mtu-9000-19fc: STARTED
(12/24) network_test.py:NetworkTest.test_floodping;run-mtu-9000-19fc: PASS (15.54 s)
(13/24) network_test.py:NetworkTest.test_ipv6_ping;run-mtu-1500-e54b: STARTED
(13/24) network_test.py:NetworkTest.test_ipv6_ping;run-mtu-1500-e54b: CANCEL: Test failing while getting IPV6 address for peer interface (5.13 s)
(14/24) network_test.py:NetworkTest.test_ipv6_ping;run-mtu-9000-19fc: STARTED
(14/24) network_test.py:NetworkTest.test_ipv6_ping;run-mtu-9000-19fc: CANCEL: Test failing while getting IPV6 address for peer interface (15.62 s)
(15/24) network_test.py:NetworkTest.test_ssh;run-mtu-1500-e54b: STARTED
(15/24) network_test.py:NetworkTest.test_ssh;run-mtu-1500-e54b: PASS (5.12 s)
(16/24) network_test.py:NetworkTest.test_ssh;run-mtu-9000-19fc: STARTED
(16/24) network_test.py:NetworkTest.test_ssh;run-mtu-9000-19fc: PASS (15.27 s)
(17/24) network_test.py:NetworkTest.test_scp;run-mtu-1500-e54b: STARTED
(17/24) network_test.py:NetworkTest.test_scp;run-mtu-1500-e54b: PASS (14.05 s)
(18/24) network_test.py:NetworkTest.test_scp;run-mtu-9000-19fc: STARTED
(18/24) network_test.py:NetworkTest.test_scp;run-mtu-9000-19fc: PASS (24.10 s)
(19/24) network_test.py:NetworkTest.test_jumbo_frame;run-mtu-1500-e54b: STARTED
(19/24) network_test.py:NetworkTest.test_jumbo_frame;run-mtu-1500-e54b: PASS (8.27 s)
(20/24) network_test.py:NetworkTest.test_jumbo_frame;run-mtu-9000-19fc: STARTED
(20/24) network_test.py:NetworkTest.test_jumbo_frame;run-mtu-9000-19fc: PASS (18.60 s)
(21/24) network_test.py:NetworkTest.test_statistics;run-mtu-1500-e54b: STARTED
(21/24) network_test.py:NetworkTest.test_statistics;run-mtu-1500-e54b: PASS (5.09 s)
(22/24) network_test.py:NetworkTest.test_statistics;run-mtu-9000-19fc: STARTED
(22/24) network_test.py:NetworkTest.test_statistics;run-mtu-9000-19fc: PASS (15.62 s)
(23/24) network_test.py:NetworkTest.test_promisc;run-mtu-1500-e54b: STARTED
(23/24) network_test.py:NetworkTest.test_promisc;run-mtu-1500-e54b: PASS (9.29 s)
(24/24) network_test.py:NetworkTest.test_promisc;run-mtu-9000-19fc: STARTED
(24/24) network_test.py:NetworkTest.test_promisc;run-mtu-9000-19fc: PASS (19.54 s)
RESULTS : PASS 22 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 2
JOB HTML : /root/avocado-fvt-wrapper/results/job-2026-08-25T07.07-7041919/results.html
JOB TIME : 372.25 s

avocado run ethtool_test.py -m ethtool_test.py.data/ethtool_sriov_test.yaml --max-parallel-tasks=1
JOB ID : fab01686f52c453052c41ccd5f63cde61a202567
JOB LOG : /root/avocado-fvt-wrapper/results/job-2026-08-25T06.45-fab0168/job.log
(1/9) ethtool_test.py:Ethtool.test_ethtool;run-args-PrivateFlag-7721: STARTED
(1/9) ethtool_test.py:Ethtool.test_ethtool;run-args-PrivateFlag-7721: CANCEL: Device Doesn't support Private flags (5.83 s)
(2/9) ethtool_test.py:Ethtool.test_ethtool;run-args-Driver-c8d6: STARTED
(2/9) ethtool_test.py:Ethtool.test_ethtool;run-args-Driver-c8d6: PASS (39.68 s)
(3/9) ethtool_test.py:Ethtool.test_ethtool;run-args-PauseParameter-c2f2: STARTED
(3/9) ethtool_test.py:Ethtool.test_ethtool;run-args-PauseParameter-c2f2: CANCEL: -a failed (5.76 s)
(4/9) ethtool_test.py:Ethtool.test_ethtool;run-args-Coalescing-4715: STARTED
(4/9) ethtool_test.py:Ethtool.test_ethtool;run-args-Coalescing-4715: CANCEL: -c failed (8.51 s)
(5/9) ethtool_test.py:Ethtool.test_ethtool;run-args-RingParameter-2341: STARTED
(5/9) ethtool_test.py:Ethtool.test_ethtool;run-args-RingParameter-2341: CANCEL: -g failed (8.53 s)
(6/9) ethtool_test.py:Ethtool.test_ethtool;run-args-ShowOffloadProtocolFeature-f94b: STARTED
(6/9) ethtool_test.py:Ethtool.test_ethtool;run-args-ShowOffloadProtocolFeature-f94b: PASS (36.85 s)
(7/9) ethtool_test.py:Ethtool.test_ethtool;run-args-Statistics-55f0: STARTED
(7/9) ethtool_test.py:Ethtool.test_ethtool;run-args-Statistics-55f0: FAIL: -S failed (8.72 s)
(8/9) ethtool_test.py:Ethtool.test_ethtool;run-args-Show-permaddr-c27a: STARTED
(8/9) ethtool_test.py:Ethtool.test_ethtool;run-args-Show-permaddr-c27a: PASS (36.88 s)
(9/9) ethtool_test.py:Ethtool.test_ethtool;run-args-Show-time-stamping-7ab3: STARTED
(9/9) ethtool_test.py:Ethtool.test_ethtool;run-args-Show-time-stamping-7ab3: PASS (36.94 s)
RESULTS : PASS 4 | ERROR 0 | FAIL 1 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 4
JOB HTML : /root/avocado-fvt-wrapper/results/job-2026-08-25T06.45-fab0168/results.html
JOB TIME : 316.82 s

Test summary:
7-ethtool_test.py:Ethtool.test_ethtool;run-args-Statistics-55f0: FAIL

avocado run tcpdump.py -m tcpdump.py.data/tcpdump-virt.yaml --max-parallel-tasks=1
JOB ID : 03684bf022e176006f6dbbb036fe521f43e6818c
JOB LOG : /root/avocado-fvt-wrapper/results/job-2026-08-25T09.17-03684bf/job.log
(01/14) tcpdump.py:TcpdumpTest.test;run-mtu-1500-options-generic-128b: STARTED
(01/14) tcpdump.py:TcpdumpTest.test;run-mtu-1500-options-generic-128b: PASS (60.57 s)
(02/14) tcpdump.py:TcpdumpTest.test;run-mtu-9000-options-generic-c779: STARTED
(02/14) tcpdump.py:TcpdumpTest.test;run-mtu-9000-options-generic-c779: PASS (54.46 s)
(03/14) tcpdump.py:TcpdumpTest.test;run-mtu-1500-options-generic_host-2886: STARTED
(03/14) tcpdump.py:TcpdumpTest.test;run-mtu-1500-options-generic_host-2886: PASS (52.59 s)
(04/14) tcpdump.py:TcpdumpTest.test;run-mtu-9000-options-generic_host-9ad2: STARTED
(04/14) tcpdump.py:TcpdumpTest.test;run-mtu-9000-options-generic_host-9ad2: PASS (63.84 s)
(05/14) tcpdump.py:TcpdumpTest.test;run-mtu-1500-options-generic_src-9088: STARTED
(05/14) tcpdump.py:TcpdumpTest.test;run-mtu-1500-options-generic_src-9088: ERROR: 'TcpdumpTest' object has no attribute 'peer_public_networkinterface' (131.60 s)
(06/14) tcpdump.py:TcpdumpTest.test;run-mtu-9000-options-generic_src-7aff: STARTED
(06/14) tcpdump.py:TcpdumpTest.test;run-mtu-9000-options-generic_src-7aff: PASS (113.78 s)
(07/14) tcpdump.py:TcpdumpTest.test;run-mtu-1500-options-generic_dst-636f: STARTED
(07/14) tcpdump.py:TcpdumpTest.test;run-mtu-1500-options-generic_dst-636f: PASS (102.58 s)
(08/14) tcpdump.py:TcpdumpTest.test;run-mtu-9000-options-generic_dst-b65b: STARTED
(08/14) tcpdump.py:TcpdumpTest.test;run-mtu-9000-options-generic_dst-b65b: PASS (109.55 s)
(09/14) tcpdump.py:TcpdumpTest.test;run-mtu-1500-options-protocol_tcp-a5d1: STARTED
(09/14) tcpdump.py:TcpdumpTest.test;run-mtu-1500-options-protocol_tcp-a5d1: PASS (53.68 s)
(10/14) tcpdump.py:TcpdumpTest.test;run-mtu-9000-options-protocol_tcp-5803: STARTED
(10/14) tcpdump.py:TcpdumpTest.test;run-mtu-9000-options-protocol_tcp-5803: PASS (62.90 s)
(11/14) tcpdump.py:TcpdumpTest.test;run-mtu-1500-options-protocol_udp-37b2: STARTED
(11/14) tcpdump.py:TcpdumpTest.test;run-mtu-1500-options-protocol_udp-37b2: PASS (98.49 s)
(12/14) tcpdump.py:TcpdumpTest.test;run-mtu-9000-options-protocol_udp-b92a: STARTED
(12/14) tcpdump.py:TcpdumpTest.test;run-mtu-9000-options-protocol_udp-b92a: PASS (104.99 s)
(13/14) tcpdump.py:TcpdumpTest.test;run-mtu-1500-options-protocol_icmp-a6d5: STARTED
(13/14) tcpdump.py:TcpdumpTest.test;run-mtu-1500-options-protocol_icmp-a6d5: PASS (52.76 s)
(14/14) tcpdump.py:TcpdumpTest.test;run-mtu-9000-options-protocol_icmp-b1f2: STARTED
(14/14) tcpdump.py:TcpdumpTest.test;run-mtu-9000-options-protocol_icmp-b1f2: PASS (64.04 s)
RESULTS : PASS 13 | ERROR 1 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0
JOB HTML : /root/avocado-fvt-wrapper/results/job-2026-08-25T09.17-03684bf/results.html
JOB TIME : 1167.17 s

Test summary:
05-tcpdump.py:TcpdumpTest.test;run-mtu-1500-options-generic_src-9088: ERROR

When interface is specified as a MAC address and hbond=True,
get_interface_by_hwaddr() may return the bond master instead of
the slave because active-backup bonding makes the master inherit
the primary slave's MAC address.

Use NetworkInterface.is_bond() to detect this: if the returned
interface is already the bond master, use it directly; otherwise
it is a slave, and get_bond_master() is called to walk up to the
bond master via /sys/class/net/<slave>/master.

Also move self.hbond assignment before the interface resolution
block so it is available as the branch condition.

Signed-off-by: Vaishnavi Bhat <vaishnavi@linux.ibm.com>
@vaishnavibhat

Copy link
Copy Markdown
Contributor Author

SLES :
JOB ID : b24805709c6fe6d8a4e22d7e4bd8aff8569f32e7
JOB LOG : /root/avocado-fvt-wrapper/results/job-2026-09-04T07.06-b248057/job.log
(1/3) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/hnv_bond_failover.py:HNVBondFailoverTest.test_bond_config_validation;run-2113: STARTED
(1/3) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/hnv_bond_failover.py:HNVBondFailoverTest.test_bond_config_validation;run-2113: PASS (13.23 s)
(2/3) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/hnv_bond_failover.py:HNVBondFailoverTest.test_failover_slave1_down;run-2113: STARTED
(2/3) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/hnv_bond_failover.py:HNVBondFailoverTest.test_failover_slave1_down;run-2113: PASS (27.50 s)
(3/3) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/hnv_bond_failover.py:HNVBondFailoverTest.test_failover_slave2_down;run-2113: STARTED
(3/3) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/hnv_bond_failover.py:HNVBondFailoverTest.test_failover_slave2_down;run-2113: PASS (28.00 s)
RESULTS : PASS 3 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0
JOB HTML : /root/avocado-fvt-wrapper/results/job-2026-09-04T07.06-b248057/results.html
JOB TIME : 82.56 s

JOB ID : d67852bfdaff1a48629234d7a8bbf699032f5b63
JOB LOG : /root/avocado-fvt-wrapper/results/job-2026-09-04T07.08-d67852b/job.log
(1/3) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/common/bootlist_test.py:BootlisTest.test_normal_mode;run-9a68: STARTED
(1/3) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/common/bootlist_test.py:BootlisTest.test_normal_mode;run-9a68: PASS (0.56 s)
(2/3) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/common/bootlist_test.py:BootlisTest.test_service_mode;run-9a68: STARTED
(2/3) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/common/bootlist_test.py:BootlisTest.test_service_mode;run-9a68: PASS (0.62 s)
(3/3) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/common/bootlist_test.py:BootlisTest.test_both_mode;run-9a68: STARTED
(3/3) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/common/bootlist_test.py:BootlisTest.test_both_mode;run-9a68: PASS (0.73 s)
RESULTS : PASS 3 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0
JOB HTML : /root/avocado-fvt-wrapper/results/job-2026-09-04T07.08-d67852b/results.html
JOB TIME : 16.37 s

JOB ID : eb87304cd13e4de643d5c44129c2a35e2c119d41
JOB LOG : /root/avocado-fvt-wrapper/results/job-2026-09-04T07.14-eb87304/job.log
(1/9) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/ethtool_test.py:Ethtool.test_ethtool;run-args-PrivateFlag-ping_count-c8a5: STARTED
(1/9) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/ethtool_test.py:Ethtool.test_ethtool;run-args-PrivateFlag-ping_count-c8a5: CANCEL: Device Doesn't support Private flags (7.17 s)
(2/9) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/ethtool_test.py:Ethtool.test_ethtool;run-args-Driver-ping_count-1f4a: STARTED
(2/9) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/ethtool_test.py:Ethtool.test_ethtool;run-args-Driver-ping_count-1f4a: PASS (38.14 s)
(3/9) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/ethtool_test.py:Ethtool.test_ethtool;run-args-PauseParameter-ping_count-9fee: STARTED
(3/9) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/ethtool_test.py:Ethtool.test_ethtool;run-args-PauseParameter-ping_count-9fee: CANCEL: -a failed (7.84 s)
(4/9) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/ethtool_test.py:Ethtool.test_ethtool;run-args-Coalescing-ping_count-d494: STARTED
(4/9) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/ethtool_test.py:Ethtool.test_ethtool;run-args-Coalescing-ping_count-d494: CANCEL: -c failed (7.96 s)
(5/9) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/ethtool_test.py:Ethtool.test_ethtool;run-args-RingParameter-ping_count-5b5e: STARTED
(5/9) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/ethtool_test.py:Ethtool.test_ethtool;run-args-RingParameter-ping_count-5b5e: CANCEL: -g failed (7.86 s)
(6/9) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/ethtool_test.py:Ethtool.test_ethtool;run-args-ShowOffloadProtocolFeature-ping_count-a372: STARTED
(6/9) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/ethtool_test.py:Ethtool.test_ethtool;run-args-ShowOffloadProtocolFeature-ping_count-a372: PASS (38.43 s)
(7/9) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/ethtool_test.py:Ethtool.test_ethtool;run-args-Statistics-ping_count-a7ee: STARTED
(7/9) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/ethtool_test.py:Ethtool.test_ethtool;run-args-Statistics-ping_count-a7ee: FAIL: -S failed (7.18 s)
(8/9) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/ethtool_test.py:Ethtool.test_ethtool;run-args-Show-permaddr-ping_count-f2f0: STARTED
(8/9) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/ethtool_test.py:Ethtool.test_ethtool;run-args-Show-permaddr-ping_count-f2f0: PASS (39.83 s)
(9/9) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/ethtool_test.py:Ethtool.test_ethtool;run-args-Show-time-stamping-ping_count-ba6f: STARTED
(9/9) /root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/ethtool_test.py:Ethtool.test_ethtool;run-args-Show-time-stamping-ping_count-ba6f: PASS (39.85 s)
RESULTS : PASS 4 | ERROR 0 | FAIL 1 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 4
JOB HTML : /root/avocado-fvt-wrapper/results/job-2026-09-04T07.14-eb87304/results.html
JOB TIME : 307.16 s

Test summary:
7-/root/avocado-fvt-wrapper/tests/avocado-misc-tests/io/net/ethtool_test.py:Ethtool.test_ethtool;run-args-Statistics-ping_count-a7ee: FAIL

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants