[dpdk-dev] app/testpmd: fix slave port detection

Message ID 1522235873-22042-1-git-send-email-matan@mellanox.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation fail Compilation issues

Commit Message

Matan Azrad March 28, 2018, 11:17 a.m. UTC
  Testpmd allows to create and control bonding devices by run time
command lines using the bonding PMD API.

Some bonding device slaves operations(close, stop, etc) should not be
used by the application and must be managed by the bonding PMD.

Thus, Testpmd manages slave flags to prevent the special operations
calls and when a slave is added to bonding device by a run time command
line, the flag is set.

There is one more way to define the slaves for a bonding device using
EAL command line and Testpmd doesn't set the slave flag in this case
what causes to the special operations to be called by Testpmd.

Add one more check to detect bonding slave device.

Fixes: 41b05095c4d1 ("app/testpmd: fix bonding start")
Fixes: 0e545d3047fe ("app/testpmd: check stopping port is not in bonding")
Cc: stable@dpdk.org

Signed-off-by: Matan Azrad <matan@mellanox.com>
---
 app/test-pmd/testpmd.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
  

Comments

Thomas Monjalon April 22, 2018, 10:58 p.m. UTC | #1
Wenzhuo, Declan,
Any comment or ack, please?

28/03/2018 13:17, Matan Azrad:
> Testpmd allows to create and control bonding devices by run time
> command lines using the bonding PMD API.
> 
> Some bonding device slaves operations(close, stop, etc) should not be
> used by the application and must be managed by the bonding PMD.
> 
> Thus, Testpmd manages slave flags to prevent the special operations
> calls and when a slave is added to bonding device by a run time command
> line, the flag is set.
> 
> There is one more way to define the slaves for a bonding device using
> EAL command line and Testpmd doesn't set the slave flag in this case
> what causes to the special operations to be called by Testpmd.
> 
> Add one more check to detect bonding slave device.
> 
> Fixes: 41b05095c4d1 ("app/testpmd: fix bonding start")
> Fixes: 0e545d3047fe ("app/testpmd: check stopping port is not in bonding")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Matan Azrad <matan@mellanox.com>
> ---
>  app/test-pmd/testpmd.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
> index 4c0e258..73d9481 100644
> --- a/app/test-pmd/testpmd.c
> +++ b/app/test-pmd/testpmd.c
> @@ -2251,7 +2251,10 @@ uint8_t port_is_bonding_slave(portid_t slave_pid)
>  	struct rte_port *port;
>  
>  	port = &ports[slave_pid];
> -	return port->slave_flag;
> +	if ((rte_eth_devices[slave_pid].data->dev_flags &
> +	    RTE_ETH_DEV_BONDED_SLAVE) || (port->slave_flag == 1))
> +		return 1;
> +	return 0;
>  }
>  
>  const uint16_t vlan_tags[] = {
>
  
Iremonger, Bernard May 11, 2018, 4:09 p.m. UTC | #2
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Thomas Monjalon
> Sent: Sunday, April 22, 2018 11:58 PM
> To: Lu, Wenzhuo <wenzhuo.lu@intel.com>; Doherty, Declan
> <declan.doherty@intel.com>
> Cc: stable@dpdk.org; Matan Azrad <matan@mellanox.com>; dev@dpdk.org;
> Yigit, Ferruh <ferruh.yigit@intel.com>
> Subject: Re: [dpdk-dev] [dpdk-stable] [PATCH] app/testpmd: fix slave port
> detection
> 
> Wenzhuo, Declan,
> Any comment or ack, please?
> 
> 28/03/2018 13:17, Matan Azrad:
> > Testpmd allows to create and control bonding devices by run time
> > command lines using the bonding PMD API.
> >
> > Some bonding device slaves operations(close, stop, etc) should not be
> > used by the application and must be managed by the bonding PMD.
> >
> > Thus, Testpmd manages slave flags to prevent the special operations
> > calls and when a slave is added to bonding device by a run time
> > command line, the flag is set.
> >
> > There is one more way to define the slaves for a bonding device using
> > EAL command line and Testpmd doesn't set the slave flag in this case
> > what causes to the special operations to be called by Testpmd.
> >
> > Add one more check to detect bonding slave device.
> >
> > Fixes: 41b05095c4d1 ("app/testpmd: fix bonding start")
> > Fixes: 0e545d3047fe ("app/testpmd: check stopping port is not in
> > bonding")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Matan Azrad <matan@mellanox.com>

Acked-by: Bernard Iremonger <Bernard.iremonger@intel.com>
  
Thomas Monjalon May 14, 2018, 2 a.m. UTC | #3
> > > Testpmd allows to create and control bonding devices by run time
> > > command lines using the bonding PMD API.
> > >
> > > Some bonding device slaves operations(close, stop, etc) should not be
> > > used by the application and must be managed by the bonding PMD.
> > >
> > > Thus, Testpmd manages slave flags to prevent the special operations
> > > calls and when a slave is added to bonding device by a run time
> > > command line, the flag is set.
> > >
> > > There is one more way to define the slaves for a bonding device using
> > > EAL command line and Testpmd doesn't set the slave flag in this case
> > > what causes to the special operations to be called by Testpmd.
> > >
> > > Add one more check to detect bonding slave device.
> > >
> > > Fixes: 41b05095c4d1 ("app/testpmd: fix bonding start")
> > > Fixes: 0e545d3047fe ("app/testpmd: check stopping port is not in
> > > bonding")
> > > Cc: stable@dpdk.org
> > >
> > > Signed-off-by: Matan Azrad <matan@mellanox.com>
> 
> Acked-by: Bernard Iremonger <Bernard.iremonger@intel.com>

Applied, thanks
  

Patch

diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 4c0e258..73d9481 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -2251,7 +2251,10 @@  uint8_t port_is_bonding_slave(portid_t slave_pid)
 	struct rte_port *port;
 
 	port = &ports[slave_pid];
-	return port->slave_flag;
+	if ((rte_eth_devices[slave_pid].data->dev_flags &
+	    RTE_ETH_DEV_BONDED_SLAVE) || (port->slave_flag == 1))
+		return 1;
+	return 0;
 }
 
 const uint16_t vlan_tags[] = {