net/bonding: fix setting slave MAC addresses

Use rte_eth_dev_default_mac_addr_set() to change a slave MAC address.
mac_address_set() only updates the software copy and does nothing to
update the hardware.

Signed-off-by: Chas Williams <chas3@att.com>
Acked-by: Declan Doherty <declan.doherty@intel.com>
This commit is contained in:
Chas Williams 2017-12-27 21:12:31 -05:00 committed by Ferruh Yigit
parent f10d528250
commit aa7791ba8d
2 changed files with 7 additions and 5 deletions

View File

@ -424,7 +424,7 @@ __eth_bond_slave_remove_lock_free(uint16_t bonded_port_id,
&rte_eth_devices[bonded_port_id].data->port_id);
/* Restore original MAC address of slave device */
mac_address_set(&rte_eth_devices[slave_port_id],
rte_eth_dev_default_mac_addr_set(slave_port_id,
&(internals->slaves[slave_idx].persisted_mac_addr));
slave_eth_dev = &rte_eth_devices[slave_port_id];

View File

@ -1482,7 +1482,8 @@ mac_address_slaves_update(struct rte_eth_dev *bonded_eth_dev)
case BONDING_MODE_BALANCE:
case BONDING_MODE_BROADCAST:
for (i = 0; i < internals->slave_count; i++) {
if (mac_address_set(&rte_eth_devices[internals->slaves[i].port_id],
if (rte_eth_dev_default_mac_addr_set(
internals->slaves[i].port_id,
bonded_eth_dev->data->mac_addrs)) {
RTE_BOND_LOG(ERR, "Failed to update port Id %d MAC address",
internals->slaves[i].port_id);
@ -1500,15 +1501,16 @@ mac_address_slaves_update(struct rte_eth_dev *bonded_eth_dev)
for (i = 0; i < internals->slave_count; i++) {
if (internals->slaves[i].port_id ==
internals->current_primary_port) {
if (mac_address_set(&rte_eth_devices[internals->primary_port],
if (rte_eth_dev_default_mac_addr_set(
internals->primary_port,
bonded_eth_dev->data->mac_addrs)) {
RTE_BOND_LOG(ERR, "Failed to update port Id %d MAC address",
internals->current_primary_port);
return -1;
}
} else {
if (mac_address_set(
&rte_eth_devices[internals->slaves[i].port_id],
if (rte_eth_dev_default_mac_addr_set(
internals->slaves[i].port_id,
&internals->slaves[i].persisted_mac_addr)) {
RTE_BOND_LOG(ERR, "Failed to update port Id %d MAC address",
internals->slaves[i].port_id);