Thread (13 messages) 13 messages, 5 authors, 2018-09-28

Re: [PATCH] net/bonding: stop and deactivate slaves when bonding port is stopped

From: Chas Williams <3chas3@gmail.com>
Date: 2018-08-01 13:44:38

On Wed, Aug 1, 2018 at 9:25 AM Radu Nicolau [off-list ref] wrote:
When a bonding port is stopped also stop and deactivate all slaves.
Otherwise slaves will be still listed as active.
I have to think about this for a bit.  The last time I tried this I had a
problem
because nothing activated the slaves again in 802.3ad mode because we
use an external state machine.

quoted hunk ↗ jump to hunk
Fixes: 69bce062132b ("net/bonding: do not clear active slave count")
Cc: stable@dpdk.org

Signed-off-by: Radu Nicolau <redacted>
---
 drivers/net/bonding/rte_eth_bond_pmd.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c
b/drivers/net/bonding/rte_eth_bond_pmd.c
index 16105cb..960140c 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -2229,12 +2229,15 @@ bond_ethdev_stop(struct rte_eth_dev *eth_dev)
                        tlb_last_obytets[internals->active_slaves[i]] = 0;
        }

-       internals->link_status_polling_enabled = 0;
-       for (i = 0; i < internals->slave_count; i++)
-               internals->slaves[i].last_link_status = 0;
-
        eth_dev->data->dev_link.link_status = ETH_LINK_DOWN;
        eth_dev->data->dev_started = 0;
+
+       internals->link_status_polling_enabled = 0;
+       for (i = 0; i < internals->slave_count; i++) {
+               internals->slaves[i].last_link_status = 0;
+               rte_eth_dev_stop(internals->slaves[i].port_id);
+               deactivate_slave(eth_dev, internals->slaves[i].port_id);
+       }
 }

 void
--
2.7.5
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help