net/ice: fix txq mbuf release mode

Message ID 20210425092639.1428-1-alvinx.zhang@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Qi Zhang
Headers
Series net/ice: fix txq mbuf release mode |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-abi-testing success Testing PASS
ci/iol-testing success Testing PASS
ci/github-robot success github build: passed
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS

Commit Message

Alvin Zhang April 25, 2021, 9:26 a.m. UTC
  In some cases, it seems that the txq mbuf vector release mode
is enabled first, and then it is confirmed that the conditions
for using the vector mode are not met.

This patch puts the txq vector mode startup process after the
condition detection.

Fixes: 28f9002ab67f ("net/ice: add Tx AVX512 offload path")
Cc: stable@dpdk.org

Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
---
 drivers/net/ice/ice_rxtx.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)
  

Comments

Leyi Rong April 27, 2021, 2:31 a.m. UTC | #1
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Alvin Zhang
> Sent: Sunday, April 25, 2021 5:27 PM
> To: Zhang, Qi Z <qi.z.zhang@intel.com>; Yang, Qiming <qiming.yang@intel.com>
> Cc: dev@dpdk.org; Zhang, AlvinX <alvinx.zhang@intel.com>; stable@dpdk.org
> Subject: [dpdk-dev] [DPDK] net/ice: fix txq mbuf release mode
> 
> In some cases, it seems that the txq mbuf vector release mode is enabled first,
> and then it is confirmed that the conditions for using the vector mode are not
> met.
> 
> This patch puts the txq vector mode startup process after the condition
> detection.
> 
> Fixes: 28f9002ab67f ("net/ice: add Tx AVX512 offload path")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
> ---
>  drivers/net/ice/ice_rxtx.c | 16 +++++++++-------
>  1 file changed, 9 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c index
> 92fbbc1..49abcb2 100644
> --- a/drivers/net/ice/ice_rxtx.c
> +++ b/drivers/net/ice/ice_rxtx.c
> @@ -3303,13 +3303,6 @@
>  		if (tx_check_ret >= 0 &&
>  		    rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_128)
> {
>  			ad->tx_vec_allowed = true;
> -			for (i = 0; i < dev->data->nb_tx_queues; i++) {
> -				txq = dev->data->tx_queues[i];
> -				if (txq && ice_txq_vec_setup(txq)) {
> -					ad->tx_vec_allowed = false;
> -					break;
> -				}
> -			}
> 
>  			if (rte_vect_get_max_simd_bitwidth() >=
> RTE_VECT_SIMD_512 &&
>  			rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX512F) ==
> 1 && @@ -3329,6 +3322,15 @@
>  			if (!use_avx512 && tx_check_ret ==
> ICE_VECTOR_OFFLOAD_PATH)
>  				ad->tx_vec_allowed = false;
> 
> +			if (ad->tx_vec_allowed) {
> +				for (i = 0; i < dev->data->nb_tx_queues; i++) {
> +					txq = dev->data->tx_queues[i];
> +					if (txq && ice_txq_vec_setup(txq)) {
> +						ad->tx_vec_allowed = false;
> +						break;
> +					}
> +				}
> +			}
>  		} else {
>  			ad->tx_vec_allowed = false;
>  		}
> --
> 1.8.3.1

Acked-by: Leyi Rong <leyi.rong@intel.com>
  
Qi Zhang April 27, 2021, 3 a.m. UTC | #2
> -----Original Message-----
> From: Rong, Leyi <leyi.rong@intel.com>
> Sent: 2021年4月27日 10:32
> To: Zhang, AlvinX <alvinx.zhang@intel.com>; Zhang, Qi Z
> <qi.z.zhang@intel.com>; Yang, Qiming <qiming.yang@intel.com>
> Cc: dev@dpdk.org; Zhang, AlvinX <alvinx.zhang@intel.com>;
> stable@dpdk.org
> Subject: RE: [dpdk-dev] [DPDK] net/ice: fix txq mbuf release mode
> 
> 
> > -----Original Message-----
> > From: dev <dev-bounces@dpdk.org> On Behalf Of Alvin Zhang
> > Sent: Sunday, April 25, 2021 5:27 PM
> > To: Zhang, Qi Z <qi.z.zhang@intel.com>; Yang, Qiming
> > <qiming.yang@intel.com>
> > Cc: dev@dpdk.org; Zhang, AlvinX <alvinx.zhang@intel.com>;
> > stable@dpdk.org
> > Subject: [dpdk-dev] [DPDK] net/ice: fix txq mbuf release mode
> >
> > In some cases, it seems that the txq mbuf vector release mode is
> > enabled first, and then it is confirmed that the conditions for using
> > the vector mode are not met.
> >
> > This patch puts the txq vector mode startup process after the
> > condition detection.
> >
> > Fixes: 28f9002ab67f ("net/ice: add Tx AVX512 offload path")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
> > ---
> >  drivers/net/ice/ice_rxtx.c | 16 +++++++++-------
> >  1 file changed, 9 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c
> > index
> > 92fbbc1..49abcb2 100644
> > --- a/drivers/net/ice/ice_rxtx.c
> > +++ b/drivers/net/ice/ice_rxtx.c
> > @@ -3303,13 +3303,6 @@
> >  if (tx_check_ret >= 0 &&
> >      rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_128) {
> > ad->tx_vec_allowed = true; -for (i = 0; i < dev->data->nb_tx_queues;
> > i++) { -txq = dev->data->tx_queues[i]; -if (txq &&
> > ice_txq_vec_setup(txq)) {
> > -ad->tx_vec_allowed = false;
> > -break;
> > -}
> > -}
> >
> >  if (rte_vect_get_max_simd_bitwidth() >=
> > RTE_VECT_SIMD_512 &&
> >  rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX512F) ==
> > 1 && @@ -3329,6 +3322,15 @@
> >  if (!use_avx512 && tx_check_ret ==
> > ICE_VECTOR_OFFLOAD_PATH)
> >  ad->tx_vec_allowed = false;
> >
> > +if (ad->tx_vec_allowed) {
> > +for (i = 0; i < dev->data->nb_tx_queues; i++) { txq =
> > +dev->data->tx_queues[i]; if (txq && ice_txq_vec_setup(txq)) {
> > +ad->tx_vec_allowed = false;
> > +break;
> > +}
> > +}
> > +}
> >  } else {
> >  ad->tx_vec_allowed = false;
> >  }
> > --
> > 1.8.3.1
> 
> Acked-by: Leyi Rong <leyi.rong@intel.com>

Applied to dpdk-next-net-intel.

Thanks
Qi
  
Ferruh Yigit April 28, 2021, 10:03 a.m. UTC | #3
On 4/25/2021 10:26 AM, Alvin Zhang wrote:
> In some cases, it seems that the txq mbuf vector release mode
> is enabled first, and then it is confirmed that the conditions
> for using the vector mode are not met.
> 

Hi Alvin,

As far as I understand the impact is failure in the Tx vector patch selection,
can you please update the patch title to reflect it?

Also can you please describe a little more what is "txq mbuf vector release
mode" and what is the root cause for it to be enabled first?

> This patch puts the txq vector mode startup process after the
> condition detection.

What is "txq vector mode startup process"?

> 
> Fixes: 28f9002ab67f ("net/ice: add Tx AVX512 offload path")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
> ---
>  drivers/net/ice/ice_rxtx.c | 16 +++++++++-------
>  1 file changed, 9 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c
> index 92fbbc1..49abcb2 100644
> --- a/drivers/net/ice/ice_rxtx.c
> +++ b/drivers/net/ice/ice_rxtx.c
> @@ -3303,13 +3303,6 @@
>  		if (tx_check_ret >= 0 &&
>  		    rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_128) {
>  			ad->tx_vec_allowed = true;
> -			for (i = 0; i < dev->data->nb_tx_queues; i++) {
> -				txq = dev->data->tx_queues[i];
> -				if (txq && ice_txq_vec_setup(txq)) {
> -					ad->tx_vec_allowed = false;
> -					break;
> -				}
> -			}
>  
>  			if (rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_512 &&
>  			rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX512F) == 1 &&
> @@ -3329,6 +3322,15 @@
>  			if (!use_avx512 && tx_check_ret == ICE_VECTOR_OFFLOAD_PATH)
>  				ad->tx_vec_allowed = false;
>  
> +			if (ad->tx_vec_allowed) {
> +				for (i = 0; i < dev->data->nb_tx_queues; i++) {
> +					txq = dev->data->tx_queues[i];
> +					if (txq && ice_txq_vec_setup(txq)) {
> +						ad->tx_vec_allowed = false;
> +						break;
> +					}
> +				}
> +			}
>  		} else {
>  			ad->tx_vec_allowed = false;
>  		}
>
  
Alvin Zhang May 6, 2021, 2:37 a.m. UTC | #4
Hi Ferruh,

Thanks for your advice. I'll update the commit log in V2.
If the following changes are appropriate?

net/ice: fix txq vector path selection

If Tx vector mode is disabled, the txq vector mode should be disabled too.
This patch adds checking of Tx vector mode before enabling txq vector mode.  

> -----Original Message-----
> From: Yigit, Ferruh <ferruh.yigit@intel.com>
> Sent: Wednesday, April 28, 2021 6:03 PM
> To: Zhang, AlvinX <alvinx.zhang@intel.com>; Zhang, Qi Z
> <qi.z.zhang@intel.com>; Yang, Qiming <qiming.yang@intel.com>
> Cc: dev@dpdk.org; stable@dpdk.org
> Subject: Re: [dpdk-stable] [DPDK] net/ice: fix txq mbuf release mode
> 
> On 4/25/2021 10:26 AM, Alvin Zhang wrote:
> > In some cases, it seems that the txq mbuf vector release mode is
> > enabled first, and then it is confirmed that the conditions for using
> > the vector mode are not met.
> >
> 
> Hi Alvin,
> 
> As far as I understand the impact is failure in the Tx vector patch selection, can
> you please update the patch title to reflect it?
> 
> Also can you please describe a little more what is "txq mbuf vector release
> mode" and what is the root cause for it to be enabled first?
> 
> > This patch puts the txq vector mode startup process after the
> > condition detection.
> 
> What is "txq vector mode startup process"?
> 
> >
> > Fixes: 28f9002ab67f ("net/ice: add Tx AVX512 offload path")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
> > ---
> >  drivers/net/ice/ice_rxtx.c | 16 +++++++++-------
> >  1 file changed, 9 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c
> > index 92fbbc1..49abcb2 100644
> > --- a/drivers/net/ice/ice_rxtx.c
> > +++ b/drivers/net/ice/ice_rxtx.c
> > @@ -3303,13 +3303,6 @@
> >  		if (tx_check_ret >= 0 &&
> >  		    rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_128) {
> >  			ad->tx_vec_allowed = true;
> > -			for (i = 0; i < dev->data->nb_tx_queues; i++) {
> > -				txq = dev->data->tx_queues[i];
> > -				if (txq && ice_txq_vec_setup(txq)) {
> > -					ad->tx_vec_allowed = false;
> > -					break;
> > -				}
> > -			}
> >
> >  			if (rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_512
> &&
> >  			rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX512F) == 1 &&
> @@ -3329,6
> > +3322,15 @@
> >  			if (!use_avx512 && tx_check_ret ==
> ICE_VECTOR_OFFLOAD_PATH)
> >  				ad->tx_vec_allowed = false;
> >
> > +			if (ad->tx_vec_allowed) {
> > +				for (i = 0; i < dev->data->nb_tx_queues; i++) {
> > +					txq = dev->data->tx_queues[i];
> > +					if (txq && ice_txq_vec_setup(txq)) {
> > +						ad->tx_vec_allowed = false;
> > +						break;
> > +					}
> > +				}
> > +			}
> >  		} else {
> >  			ad->tx_vec_allowed = false;
> >  		}
> >

Thanks,
Alvin Zhang
  

Patch

diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c
index 92fbbc1..49abcb2 100644
--- a/drivers/net/ice/ice_rxtx.c
+++ b/drivers/net/ice/ice_rxtx.c
@@ -3303,13 +3303,6 @@ 
 		if (tx_check_ret >= 0 &&
 		    rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_128) {
 			ad->tx_vec_allowed = true;
-			for (i = 0; i < dev->data->nb_tx_queues; i++) {
-				txq = dev->data->tx_queues[i];
-				if (txq && ice_txq_vec_setup(txq)) {
-					ad->tx_vec_allowed = false;
-					break;
-				}
-			}
 
 			if (rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_512 &&
 			rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX512F) == 1 &&
@@ -3329,6 +3322,15 @@ 
 			if (!use_avx512 && tx_check_ret == ICE_VECTOR_OFFLOAD_PATH)
 				ad->tx_vec_allowed = false;
 
+			if (ad->tx_vec_allowed) {
+				for (i = 0; i < dev->data->nb_tx_queues; i++) {
+					txq = dev->data->tx_queues[i];
+					if (txq && ice_txq_vec_setup(txq)) {
+						ad->tx_vec_allowed = false;
+						break;
+					}
+				}
+			}
 		} else {
 			ad->tx_vec_allowed = false;
 		}