When mac_address update in bond_mode_8023ad_mac_address_update, bonding port's mac_addr should update also.
Signed-off-by: Liang Zhang <zhangli...@bigo.sg> --- drivers/net/bonding/rte_eth_bond_8023ad.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/net/bonding/rte_eth_bond_8023ad.c b/drivers/net/bonding/rte_eth_bond_8023ad.c index e518956..eefc7a2 100644 --- a/drivers/net/bonding/rte_eth_bond_8023ad.c +++ b/drivers/net/bonding/rte_eth_bond_8023ad.c @@ -791,8 +791,12 @@ rx_machine_update(struct bond_dev_private *internals, uint8_t slave_id, RTE_ASSERT(lacp->lacpdu.subtype == SLOW_SUBTYPE_LACP); partner = &lacp->lacpdu.partner; - if (is_same_ether_addr(&partner->port_params.system, &internals->mode4.mac_addr)) { - /* This is LACP frame to the bonding port so pass it to rx_machine */ + if (is_same_ether_addr(&partner->port_params.system, + &internals->mode4.mac_addr)) { + + /* This LACP frame is sending to the bonding port + * so pass it to rx_machine. + */ rx_machine(internals, slave_id, &lacp->lacpdu); } rte_pktmbuf_free(lacp_pkt); @@ -1144,7 +1148,6 @@ bond_mode_8023ad_setup(struct rte_eth_dev *dev, bond_mode_8023ad_conf_assign(mode4, conf); mode4->slowrx_cb = conf->slowrx_cb; mode4->agg_selection = AGG_STABLE; - rte_eth_macaddr_get(internals->port_id, &mode4->mac_addr); if (dev->data->dev_started) bond_mode_8023ad_start(dev); @@ -1170,6 +1173,7 @@ bond_mode_8023ad_start(struct rte_eth_dev *bond_dev) struct mode8023ad_private *mode4 = &internals->mode4; static const uint64_t us = BOND_MODE_8023AX_UPDATE_TIMEOUT_MS * 1000; + rte_eth_macaddr_get(internals->port_id, &mode4->mac_addr); if (mode4->slowrx_cb) return rte_eal_alarm_set(us, &bond_mode_8023ad_ext_periodic_cb, bond_dev); -- 2.7.4