net/bonding: fix stopping non-active slaves
When stopping a bonded port, all slaves should be stopped. But only active slaves are stopped. So fix by stopping all slave ports and later do "deactivate_slave()" for active slaves. Fixes: 0911d4ec0183 ("net/bonding: fix crash when stopping mode 4 port") Cc: stable@dpdk.org Signed-off-by: Huisong Li <lihuisong@huawei.com> Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
This commit is contained in:
parent
8da794e956
commit
f5e72e8e8d
@ -2118,9 +2118,7 @@ bond_ethdev_stop(struct rte_eth_dev *eth_dev)
|
||||
internals->link_status_polling_enabled = 0;
|
||||
for (i = 0; i < internals->slave_count; i++) {
|
||||
uint16_t slave_id = internals->slaves[i].port_id;
|
||||
if (find_slave_by_id(internals->active_slaves,
|
||||
internals->active_slave_count, slave_id) !=
|
||||
internals->active_slave_count) {
|
||||
|
||||
internals->slaves[i].last_link_status = 0;
|
||||
ret = rte_eth_dev_stop(slave_id);
|
||||
if (ret != 0) {
|
||||
@ -2128,9 +2126,13 @@ bond_ethdev_stop(struct rte_eth_dev *eth_dev)
|
||||
slave_id);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* active slaves need to be deactivated. */
|
||||
if (find_slave_by_id(internals->active_slaves,
|
||||
internals->active_slave_count, slave_id) !=
|
||||
internals->active_slave_count)
|
||||
deactivate_slave(eth_dev, slave_id);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user