[dpdk-dev] net/bonding: set dev_started later
Checks
Commit Message
From: "Charles (Chas) Williams" <chas3@att.com>
There are several error paths where the bonding device may not start.
Don't set dev_started until we know that we are sure start is going
to succeed.
Fixes: 2efb58cbab ("bond: new link bonding library")
Cc: stable@dpdk.org
Signed-off-by: Chas Williams <chas3@att.com>
---
drivers/net/bonding/rte_eth_bond_pmd.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
Comments
On 3/16/2018 4:34 PM, Chas Williams wrote:
> From: "Charles (Chas) Williams" <chas3@att.com>
>
> There are several error paths where the bonding device may not start.
> Don't set dev_started until we know that we are sure start is going
> to succeed.
>
> Fixes: 2efb58cbab ("bond: new link bonding library")
> Cc: stable@dpdk.org
>
> Signed-off-by: Chas Williams <chas3@att.com>
Hi Chas,
Is this patch still valid to consider for v18.08?
No. This was fixed by
net/bonding: clear started state if start fails
There are several error paths where the bonding device may not start.
Clear dev_started before we return if we take one of these paths.
Fixes: 2efb58cbab6e ("bond: new link bonding library")
Cc: stable@dpdk.org
Signed-off-by: Chas Williams <chas3@att.com>
Acked-by: Radu Nicolau <radu.nicolau@intel.com>
which was less clumsy attempt at the fix.
On Thu, Jun 14, 2018 at 1:10 PM Ferruh Yigit <ferruh.yigit@intel.com> wrote:
> On 3/16/2018 4:34 PM, Chas Williams wrote:
> > From: "Charles (Chas) Williams" <chas3@att.com>
> >
> > There are several error paths where the bonding device may not start.
> > Don't set dev_started until we know that we are sure start is going
> > to succeed.
> >
> > Fixes: 2efb58cbab ("bond: new link bonding library")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Chas Williams <chas3@att.com>
>
> Hi Chas,
>
> Is this patch still valid to consider for v18.08?
>
>
@@ -2028,7 +2028,6 @@ bond_ethdev_start(struct rte_eth_dev *eth_dev)
}
eth_dev->data->dev_link.link_status = ETH_LINK_DOWN;
- eth_dev->data->dev_started = 1;
internals = eth_dev->data->dev_private;
@@ -2089,6 +2088,9 @@ bond_ethdev_start(struct rte_eth_dev *eth_dev)
if (internals->slaves[i].link_status_poll_enabled)
internals->link_status_polling_enabled = 1;
}
+
+ eth_dev->data->dev_started = 1;
+
/* start polling if needed */
if (internals->link_status_polling_enabled) {
rte_eal_alarm_set(