Hi Amelia,

thank you for this report. Can you post a patch in gerrit with your proposal? 
See https://s3-docs.fd.io/vpp/26.10/contributing/gitreview.html
Feel free to report here with the link once done.

Best
ben

________________________________________
From: [email protected] <[email protected]> on behalf of amelia yin via 
lists.fd.io <[email protected]>
Sent: Friday, September 11, 2026 4:59
To: [email protected]
Subject: [vpp-dev] [VPP-2606]The MAC address setting for Bond(mode:xor) members 
has failed.

Hi Team,

I encountered a problem where a member of the bond failed to set the MAC 
address in VPP26.06.
I configured the bond interface with the mode set to XOR,
The member ports of BondEthernet0 are VirtualFunctionEthernet4b/0/4 and 
VirtualFunctionEthernet4b/1/2 .
After deleting the pod and the first deployment of the pod, the MAC addresses 
of the bond interface and the two member interfaces were consistent.
However, when I killed the container and restarted the pod, I found that the 
MAC address setting for the second member interface failed,
log print: vpp[11]: dpdk: ETHDEV: New default address for port 1 was already in 
the address list. Please remove it first.

I reviewed the DPDK code and found this patch: 
https://mails.dpdk.org/archives/dev/2023-February/260884.html?utm_source=chatgpt.com.
It requires the caller need to ensure that the new default address is removed 
from the rest of the list if the address was already in the list.
Therefore, dpdk_set_mac_address should be adapted to handle the case where the 
return value of rte_eth_dev_default_mac_addr_set is -EEXIST.
As follows

static clib_error_t *
dpdk_set_mac_address (vnet_hw_interface_t * hi,
     const u8 * old_address, const u8 * address)
{
  int error;
  dpdk_main_t *dm = &dpdk_main;
  dpdk_device_t *xd = vec_elt_at_index (dm->devices, hi->dev_instance);

  error = rte_eth_dev_default_mac_addr_set (xd->port_id, (void *) address);

  /*
   * rte_eth_dev_default_mac_addr_set() refuses to set a
   * default MAC that already exists in the port's MAC address list and
   * returns -EEXIST ("New default address for port %u was already in the
   * address list. Please remove it first.").
   * Follow the API's own guidance: remove the duplicate entry first, then
   * retry setting it as the default MAC.
   */
  if (error == -EEXIST)
    {
      int rem_rv = rte_eth_dev_mac_addr_remove (xd->port_id, (void *) address);
      if (rem_rv == 0)
        error = rte_eth_dev_default_mac_addr_set (xd->port_id, (void *) 
address);
    }

  if (error)
    {
      return clib_error_return (0, "mac address set failed: %U", 
format_dpdk_rte_err, error);
    }
  else
    {
      vec_reset_length (xd->default_mac_address);
      vec_add (xd->default_mac_address, address, sizeof (mac_address_t));
      return NULL;
    }
}

vpp# show hardware-interfaces
                  Name                Idx   Link  Hardware
    BondEthernet0                      4     up   BondEthernet0
      Link speed: unknown
      Ethernet address 6a:27:af:45:00:37
    Ethernet2                          3     up   Ethernet2
      Link speed: 10.000000 Gbps
      RX Queues:
        queue thread         mode
        0     vpp_wk_0 (1)   polling
      TX Queues:
        TX Hash: [name: hash-eth-l34 priority: 50 description: Hash ethernet 
L34 headers]
        queue shared thread(s)
        0     yes    0-1
      Ethernet address 20:00:20:00:20:00
      Nwfsock PMD
        carrier up full duplex max-frame-size 0
        flags: admin-up maybe-multiseg int-unmaskable
        Devargs: 
iface=/tmp/nwfsock0,rx_appq_shared_file=/tmp/appq_rx_shared,nb_rxq=1,nb_txq=1,nb_rx_elems=8192,nb_tx_elems=8192,nb_paps=4,interrupt_mode=0
        rx: queues 1 (max 1), desc 4096 (min 0 max 65535 align 1)
        tx: queues 1 (max 1), desc 4096 (min 0 max 65535 align 1)
        max rx packet len: -1
        promiscuous: unicast off all-multicast off
        vlan offload: strip off filter off qinq off
        rx offload avail:  scatter
        rx offload active: scatter
        tx offload avail:  multi-segs
        tx offload active: multi-segs
        rss avail:         none
        rss active:        none
        tx burst function: nwfsock_tx
        rx burst function: nwfsock_rx

        tx frames ok                                         999
        rx frames ok                                        1088
        extended stats:
          rx_good_packets                                   1088
          tx_good_packets                                    999
    VirtualFunctionEthernet4b/0/4      1     up   VirtualFunctionEthernet4b/0/4
      Link speed: 100.000000 Gbps
      RX Queues:
        queue thread         mode
        0     vpp_wk_0 (1)   polling
      TX Queues:
        TX Hash: [name: hash-eth-l34 priority: 50 description: Hash ethernet 
L34 headers]
        queue shared thread(s)
        0     yes    0-1
      Ethernet address 6a:27:af:45:00:37
      Mellanox ConnectX-4/5/6 Family
        carrier up full duplex max-frame-size 9022
        flags: admin-up maybe-multiseg tx-offload rx-ip4-cksum
        Devargs:
        rx: queues 1 (max 1024), desc 4096 (min 0 max 32768 align 1)
        tx: queues 1 (max 1024), desc 4096 (min 0 max 32768 align 1)
        pci: device 15b3:101e subsystem 15b3:0058 address 0000:4b:00.04 numa 0
        switch info: name 0000:4b:00.4 domain id 0 port id 65535
        max rx packet len: 10000
        promiscuous: unicast off all-multicast on
        vlan offload: strip off filter off qinq off
        rx offload avail:  vlan-strip ipv4-cksum udp-cksum tcp-cksum tcp-lro
                           vlan-filter scatter timestamp rss-hash buffer-split
        rx offload active: ipv4-cksum scatter
        tx offload avail:  vlan-insert ipv4-cksum udp-cksum tcp-cksum tcp-tso
                           outer-ipv4-cksum vxlan-tnl-tso gre-tnl-tso 
geneve-tnl-tso
                           multi-segs mbuf-fast-free
        tx offload active: ipv4-cksum udp-cksum tcp-cksum outer-ipv4-cksum 
multi-segs
        rss avail:         ipv4-frag ipv4-tcp ipv4-udp ipv4-other ipv4 
ipv6-tcp-ex
                           ipv6-udp-ex ipv6-frag ipv6-tcp ipv6-udp ipv6-other
                           ipv6-ex ipv6 esp l4-dst-only l4-src-only l3-dst-only
                           l3-src-only
        rss active:        none
        tx burst mode: Enhanced MPW + MULTI + TSO + SWP  + CSUM + METADATA
        tx burst function: mlx5_tx_burst_mtsc_empw
        rx burst mode: Scalar
        rx burst function: mlx5_rx_burst

        tx frames ok                                         837
        tx bytes ok                                        84140
        rx frames ok                                      850664
        rx bytes ok                                     60513528
        extended stats:
          rx_good_packets                                 850664
          tx_good_packets                                    837
          rx_good_bytes                                 60513528
          tx_good_bytes                                    84140
          rx_q0_packets                                   850664
          rx_q0_bytes                                   60513528
          tx_q0_packets                                      837
          tx_q0_bytes                                      84140
          rx_unicast_bytes                                655464
          rx_multicast_bytes                            30477228
          rx_broadcast_bytes                            32832256
          rx_unicast_packets                                7039
          rx_multicast_packets                            331382
          rx_broadcast_packets                            513004
          tx_unicast_bytes                                 49732
          tx_multicast_bytes                                  70
          tx_broadcast_bytes                               44880
          tx_unicast_packets                                  89
          tx_multicast_packets                                 1
          tx_broadcast_packets                               748
    VirtualFunctionEthernet4b/1/2      2     up   VirtualFunctionEthernet4b/1/2
      Link speed: 100.000000 Gbps
      RX Queues:
        queue thread         mode
        0     vpp_wk_0 (1)   polling
      TX Queues:
        TX Hash: [name: hash-eth-l34 priority: 50 description: Hash ethernet 
L34 headers]
        queue shared thread(s)
        0     yes    0-1
      Ethernet address e2:9e:af:c2:11:dd
      Mellanox ConnectX-4/5/6 Family
        carrier up full duplex max-frame-size 9022
        flags: admin-up maybe-multiseg tx-offload rx-ip4-cksum
        Devargs:
        rx: queues 1 (max 1024), desc 4096 (min 0 max 32768 align 1)
        tx: queues 1 (max 1024), desc 4096 (min 0 max 32768 align 1)
        pci: device 15b3:101e subsystem 15b3:0058 address 0000:4b:01.02 numa 0
        switch info: name 0000:4b:01.2 domain id 1 port id 65535
        max rx packet len: 10000
        promiscuous: unicast off all-multicast on
        vlan offload: strip off filter off qinq off
        rx offload avail:  vlan-strip ipv4-cksum udp-cksum tcp-cksum tcp-lro
                           vlan-filter scatter timestamp rss-hash buffer-split
        rx offload active: ipv4-cksum scatter
        tx offload avail:  vlan-insert ipv4-cksum udp-cksum tcp-cksum tcp-tso
                           outer-ipv4-cksum vxlan-tnl-tso gre-tnl-tso 
geneve-tnl-tso
                           multi-segs mbuf-fast-free
        tx offload active: ipv4-cksum udp-cksum tcp-cksum outer-ipv4-cksum 
multi-segs
        rss avail:         ipv4-frag ipv4-tcp ipv4-udp ipv4-other ipv4 
ipv6-tcp-ex
                           ipv6-udp-ex ipv6-frag ipv6-tcp ipv6-udp ipv6-other
                           ipv6-ex ipv6 esp l4-dst-only l4-src-only l3-dst-only
                           l3-src-only
        rss active:        none
        tx burst mode: Enhanced MPW + MULTI + TSO + SWP  + CSUM + METADATA
        tx burst function: mlx5_tx_burst_mtsc_empw
        rx burst mode: Scalar
        rx burst function: mlx5_rx_burst

        tx frames ok                                        6303
        tx bytes ok                                       464122
        rx frames ok                                      844343
        rx bytes ok                                     59928887
        extended stats:
          rx_good_packets                                 844343
          tx_good_packets                                   6303
          rx_good_bytes                                 59928887
          tx_good_bytes                                   464122
          rx_q0_packets                                   844343
          rx_q0_bytes                                   59928887
          tx_q0_packets                                     6303
          tx_q0_bytes                                     464122
          rx_unicast_bytes                                191322
          rx_multicast_bytes                            30476401
          rx_broadcast_bytes                            32831232
          rx_unicast_packets                                1492
          rx_multicast_packets                            331376
          rx_broadcast_packets                            512988
          tx_unicast_bytes                                464122
          tx_multicast_bytes                                  70
          tx_unicast_packets                                6303
          tx_multicast_packets                                 1

Thanks & Regards
Amelia
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#27180): https://lists.fd.io/g/vpp-dev/message/27180
Mute This Topic: https://lists.fd.io/mt/121193161/21656
Group Owner: [email protected]
Unsubscribe: https://lists.fd.io/g/vpp-dev/leave/14379924/21656/631435203/xyzzy 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to